分类: 开发

Unregistry:轻量级Docker镜像注册表,告别繁琐的镜像传输

2025-06-19
Unregistry:轻量级Docker镜像注册表,告别繁琐的镜像传输

Unregistry是一个轻量级的Docker镜像注册表,它直接使用Docker守护进程的存储来存储和服务镜像,并提供`docker pussh`命令(带额外's',代表SSH),实现通过SSH直接将镜像推送到远程Docker服务器。它只传输缺失的层,从而快速高效。告别Docker Hub或自托管注册表的复杂配置和维护,Unregistry让镜像传输变得简单直接,只需一行命令`docker pussh myapp:latest user@server`即可完成。它在SSH隧道内启动一个临时的Unregistry容器,仅传输远程服务器缺少的镜像层,然后关闭容器和隧道。Unregistry尤其适用于生产环境部署、CI/CD流程以及隔离网络环境下的镜像分发。

fang:Cobra 命令行工具的增强套件

2025-06-19
fang:Cobra 命令行工具的增强套件

fang是一个轻量级的实验性库,旨在为基于Cobra的命令行应用程序提供开箱即用的增强功能。它提供丰富的特性,包括全样式的帮助和使用页面、样式化的错误信息、自动版本号设置、man手册生成(使用mango)、shell命令补全、主题定制以及静默的使用输出。只需简单的几行代码,即可将fang集成到你的Cobra项目中,极大提升用户体验。

开发 Cobra

arXivLabs:与社区协作的实验性项目

2025-06-18
arXivLabs:与社区协作的实验性项目

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

开发

VAC反作弊模块转储:深入Steam反作弊机制

2025-06-18

本文深入探讨了Valve的反作弊系统VAC的工作机制。作者通过逆向工程分析了Steam服务进程(steamservice.dll),发现了VAC模块加载和运行的细节,并演示了如何通过修改特定指令来强制VAC使用LoadLibrary函数加载模块,从而实现VAC模块的转储。作者详细解释了逆向分析过程中的关键步骤,包括查找LoadLibraryW调用、跟踪函数调用链、识别临时文件等。最终,作者成功地转储了VAC模块,并展示了其中包含的关键函数,为进一步分析VAC反作弊机制奠定了基础。

开发 VAC

用大型语言模型自动将C代码移植到Rust

2025-06-18

本文讲述了作者利用大型语言模型(LLM)自动将C语言代码移植到Rust语言的经验。作者尝试了几种方法,最终采用了一种基于拓扑排序和模糊测试的策略:首先按拓扑顺序排序C代码中的符号,然后使用LLM生成每个符号的Rust版本以及对应的模糊测试用例,通过比较C和Rust版本的输出结果来验证移植的正确性。这种方法取得了显著成功,作者成功地将一个名为Zopfli的压缩库从C移植到Rust,且运行结果与C版本完全一致。虽然该方法并非完全自动化,但大大降低了移植的成本和难度,为大型代码库的维护和升级提供了新的思路。

(rjp.io)
开发 代码移植

S-expr: 一种奇特的S表达式解析库

2025-06-18
S-expr: 一种奇特的S表达式解析库

S-expr是一个用于解析S表达式的库,它对S表达式的语法做了独特的扩展,包括支持单行和多行字符串、单行和多行注释,以及一种名为“转置块”的新特性。转置块允许代码以列为行,行 为列的方式书写,提高了某些复杂嵌套表达式的可读性。这种设计使得S-expr在保持S表达式简洁性的同时,增强了代码的可读性和表达能力,虽然比传统的Lisp语言复杂一些,但其目标是平衡简洁性和可用性。

开发 S表达式

使用Flink SQL构建企业级AI代理:连接LLM与内部数据

2025-06-18

本文探讨如何使用Flink SQL构建企业级AI代理,连接大型语言模型(LLM)与内部数据和资源。针对结构化数据,Flink SQL的SQL连接语义可以轻松地将外部数据库中的数据与LLM输入结合。对于非结构化数据,文章建议使用检索增强生成(RAG)技术,将数据编码成向量存储在向量数据库中,再通过Flink SQL的向量类型支持进行查询和结合。文章以总结研究论文并结合内部研究为例,阐述了如何使用两个Flink SQL作业构建AI代理系统,一个作业更新向量存储,另一个作业进行查询和LLM调用。最后,文章提到了使用Process Table Functions (PTF)集成Anthropic的MCP标准,以实现更灵活的AI代理构建。

开发 Flink SQL

提升RAG系统知识库质量:为AI和人类打造最佳文档

2025-06-18
提升RAG系统知识库质量:为AI和人类打造最佳文档

本文探讨如何优化文档以提升基于检索增强生成 (RAG) 系统的 AI 性能。文章指出,高质量文档不仅能提升用户体验,还能改善 AI 回答的准确性,形成良性循环。AI 系统处理文档的方式决定了内容质量的重要性:检索器查找相关内容,向量数据库存储内容,生成器 (大型语言模型,LLM) 则创建答案。文章建议使用语义化的 HTML、避免 PDF、创建爬虫友好的内容、确保语义清晰度、提供视觉内容的文本等价物,并保持布局简洁。此外,文章还强调避免上下文依赖、语义可发现性差距、隐式知识假设以及视觉信息依赖,并建议使用分层信息架构和自包含章节,以及提供错误上下文和解决方案。最终目标是创建既方便人类阅读又利于 AI 理解的文档。

开发 AI文档

用ChatGPT构建我的静态网站生成器

2025-06-18
用ChatGPT构建我的静态网站生成器

作者厌倦了使用传统的静态网站生成器,尝试了多种方案后,最终选择了一种令人意想不到的方法:用ChatGPT!他只需将新旧博文复制粘贴到ChatGPT中,就能轻松生成HTML页面,无需任何设置。虽然存在ChatGPT可能修改原文的风险,但这方法简单便捷,极大提高了效率,甚至连这篇文章都是用这种方法生成的。作者还展望了AI在更多领域取代传统工具的可能性,例如文档生成器和命令行工具。

开发

DSC:一款PyTorch兼容的张量库和推理框架

2025-06-18
DSC:一款PyTorch兼容的张量库和推理框架

DSC是一个与PyTorch兼容的张量库和机器学习模型推理框架。它具有C兼容的底层API,并用类似NumPy/PyTorch的现代Python API进行封装,同时还有一些不错的易用性改进。主要特性包括直观的API、内置神经网络支持、多后端支持(CPU和CUDA)、最少的外部依赖项以及无运行时分配。安装简单,只需编译器和GNU Make即可。支持CUDA加速,只需设置环境变量即可启用。通过pytest进行单元测试,确保其正确性。

开发

arXivLabs:与社区协作者共同开发实验性项目

2025-06-18
arXivLabs:与社区协作者共同开发实验性项目

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

开发

Linux网络地址转换(NAT)详解:巧妙解决IPv4地址耗尽难题

2025-06-18

想象一下你家里的WiFi网络,所有设备都共享同一个公网IP地址。这得益于网络地址转换(NAT)技术。由于IPv4地址数量有限,NAT通过在路由器上建立私网IP到公网IP的映射表,让多个设备共享同一个公网IP地址,从而解决了IPv4地址短缺的问题。文章深入探讨了NAT的工作原理、不同类型(例如,全锥型NAT、受限锥型NAT、对称NAT)以及在Linux系统(例如,使用nftables)中的实现细节,并以Docker为例说明NAT在日常应用中的广泛存在。虽然NAT暂时解决了IPv4地址耗尽问题,但也带来了一些局限性,例如破坏端到端连接和增加加密难度。最终,IPv6的全面普及才是解决问题的根本途径。

开发

开源健身平台Workout.cool:涅槃重生

2025-06-18
开源健身平台Workout.cool:涅槃重生

Workout.cool是一个开源的现代健身教练平台,它从前身workout.lol的灰烬中重生。由于原项目因视频授权问题被放弃,开发者Snouzy接手并重新构建了这个平台,提供全面的锻炼数据库、进度追踪和个性化训练计划。该项目采用Next.js App Router和Feature-Sliced Design架构,并欢迎社区贡献。这是一个由社区、为社区的项目,旨在为开源健身社区提供一个可靠且易于维护的平台。

开发

程序员拒绝AI编程工具:效率、伦理与环境的考量

2025-06-18

一位资深程序员阐述了其拒绝使用AI编程工具的原因,并非出于对技术的抵触,而是基于对效率、伦理和环境的深刻担忧。作者认为,目前AI工具的生产力提升效果存疑,且存在引入更多错误的风险;同时,AI模型训练对环境造成巨大压力,其数据来源也涉及侵犯知识产权等伦理问题。作者更强调了编程中“挣扎与学习”的乐趣,以及人工编写代码在代码质量和可维护性上的优势,最终选择坚持传统的编程方式,呼吁加强AI技术监管。

开发

同态加密与本地优先软件:一场权衡博弈

2025-06-18
同态加密与本地优先软件:一场权衡博弈

本文探讨了在本地优先软件中使用同态加密来保护隐私数据的挑战。虽然同态加密允许在不解密数据的情况下进行计算,但它带来了巨大的性能开销和存储开销。作者通过构建一个同态加密的“最后写入者胜”寄存器CRDT,演示了同态加密如何在实践中限制CRDT算法的效率,并指出同态加密需要在最坏情况下的输入下运行,这会显著增加空间和时间复杂度。最终,作者认为,如何在不严重降低可用性的情况下保护本地优先应用程序的安全性仍然是一个有待解决的问题。

A*寻路算法详解:从广度优先搜索到贪婪最佳优先搜索

2025-06-18
A*寻路算法详解:从广度优先搜索到贪婪最佳优先搜索

本文深入浅出地讲解了A*寻路算法,从最简单的广度优先搜索(BFS)开始,逐步引入了Dijkstra算法(处理不同移动代价)、贪婪最佳优先搜索(Greedy Best-First Search)以及最终的A*算法。文章通过图解和代码示例,清晰地展现了不同算法的运行过程和优缺点,并讨论了它们在不同场景下的适用性,例如地图寻路、游戏AI等。A*算法通过结合启发式函数,在保证找到最短路径的同时,提高了搜索效率,是许多游戏中常用的寻路算法。

开发 图搜索

别嘲笑你不懂的东西:测试第三方依赖的更好方法

2025-06-18
别嘲笑你不懂的东西:测试第三方依赖的更好方法

本文探讨了单元测试中处理第三方依赖的常见问题。作者通过一个Docker仓库客户端的例子,阐述了直接模拟第三方依赖(例如HTTP客户端)的弊端:测试代码变得复杂、脆弱且难以理解。作者建议引入一层薄薄的抽象层,将业务逻辑与第三方依赖解耦,从而简化测试,提高代码可读性和可维护性。这种方法不仅使得测试更清晰简洁,也提升了业务逻辑代码的可读性和可维护性。作者最后总结说,虽然这个原则并非绝对,但在大多数情况下,它能帮助我们编写更优雅、更易于维护的测试代码。

Windows NT Native API 函数列表

2025-06-18

这份列表包含了大量的Windows NT原生API函数,涵盖了文件系统、进程管理、线程管理、安全、注册表等多个方面。这些函数是Windows系统底层操作的核心,用于构建更高级别的应用程序接口。对于系统程序员和安全研究人员来说,理解这些函数至关重要。

开发

Scrappy:为朋友和家人打造个性化应用的工具

2025-06-18
Scrappy:为朋友和家人打造个性化应用的工具

John和Pontus创造了Scrappy,一个用于创建小型个性化应用程序的原型工具。它类似于Figma或Google Slides,但允许用户将行为附加到交互式对象上。用户可以拖拽按钮、文本框等对象,并使用JavaScript代码为其添加功能,例如点击按钮记录文本框内容。Scrappy应用程序是多用户的,状态会持久保存并同步,方便与朋友和家人共享和协作。其目标是使软件创建更易于访问,让更多人能够创建满足自身独特需求的应用程序。

微软开源CLI文本编辑器Edit:轻量、快速,VS Code风格

2025-06-18
微软开源CLI文本编辑器Edit:轻量、快速,VS Code风格

微软发布了开源CLI文本编辑器Edit,它是一款轻量级、快速且易于使用的文本编辑器,其界面和输入控制类似于VS Code。Edit的目标用户是Windows用户,因为Windows系统缺乏内置的CLI文本编辑器,但它也支持Linux和macOS。Edit的特点包括模型化编辑模式、快速文件打开速度以及简洁的特性集,使其成为一个快速编辑文本的理想选择。虽然没有语法高亮等高级功能,但其轻量性和易用性使其成为一个不错的选择。

开发

Incant:为你的代码添加魔法咒语

2025-06-18
Incant:为你的代码添加魔法咒语

Incant是一个新的库,它允许开发者安全地集成语言模型调用。它提供简单的原语,例如`createSelector`和`createFilter`,可以对数组进行操作,例如选取最大值或过滤男性名字。Incant从环境变量中读取API密钥,易于配置,并且保证输出类型安全,避免幻觉。但需要注意的是,所有输入数据都会发送到上游推理提供商,因此避免发送个人敏感信息。

开发

AI 编码助手通用规则模板:提升你的 AI 编程工作流程

2025-06-18
AI 编码助手通用规则模板:提升你的 AI 编程工作流程

厌倦了不同 AI 编码助手之间不一致的行为?难以在复杂项目中保持上下文并执行最佳实践?这个模板提供了一个强大的跨平台框架,旨在提升你的 AI 配对编程体验。它利用已建立的软件工程原理和结构化的文档系统,确保你的 AI 助手(如 Cursor、CLINE、RooCode、Windsurf 和 Github Copilot)能够一致地运行,深入理解你的项目,并遵循最佳工作流程。超越简单的原型,构建具有真正理解你的项目架构、需求和历史的 AI 合作伙伴的复杂应用程序。

开发

lstr:超高速Rust目录树可视化工具

2025-06-18
lstr:超高速Rust目录树可视化工具

lstr是一个用Rust编写的极速、极简的目录树查看器,灵感来自命令行程序tree,并具有强大的交互模式。它支持并行扫描目录以最大化速度,提供极简的界面和可选的TUI交互模式,并具有丰富的显示选项,例如文件图标、权限、大小和Git状态。此外,lstr还支持.gitignore、深度控制和模糊查找,甚至可以集成到shell中作为可视化的cd命令。无论是经典视图还是交互式TUI,lstr都能以其高效和简洁的设计提升你的文件管理效率。

开发 目录树

周末雨天项目:一个Go语言编写的TinyBASIC编译器

2025-06-18

作者利用周末时间,编写了一个将TinyBASIC代码编译成Go代码的编译器。这个项目使用了lex和yacc的Go语言版本nex和goyacc,分别负责词法分析和语法分析。编译器包含三个阶段:词法分析、语法分析和代码生成。作者详细介绍了语法规则和代码生成过程,并展示了示例程序和输出结果。这是一个有趣且具有挑战性的个人项目,展现了编译器原理的实践应用。

开发 TinyBASIC

Plasma 6.4:更流畅、更友好、更强大的桌面体验

2025-06-17
Plasma 6.4:更流畅、更友好、更强大的桌面体验

KDE Plasma 6.4 版本发布,带来了诸多改进,使其更加流畅、友好和强大。该版本在易用性、色彩渲染、平板电脑支持、窗口管理等方面都有显著提升。新功能包括:每个虚拟桌面可自定义不同的磁贴布局;改进的 Spectacle 截图工具;KRunner 增加了颜色可视化功能;以及对数字艺术家和 HDR 显示器的更好支持等。此外,还改进了通知系统、小部件和系统监控工具。Plasma 6.4 致力于打造更便捷、高效的桌面体验,为用户带来诸多便利。

开发

Rust版bzip2:速度提升,跨平台编译更轻松

2025-06-17
Rust版bzip2:速度提升,跨平台编译更轻松

最新发布的bzip2 0.6.0版本默认使用Rust实现的libbz2-rs-sys库,显著提升了压缩和解压速度,并简化了跨平台编译过程。这项工作源于许多项目仍然依赖bzip2,而Rust版本能更好地解决长期存在的编译问题,例如WebAssembly编译和Windows/Android平台的兼容性。性能测试显示,Rust实现的压缩和解压速度普遍优于C实现,且经过了Miri安全审计,确保代码的可靠性。

开发 bzip2

大型语言模型会终结编程吗?翻译行业的经验或可借鉴

2025-06-17

最近关于大型语言模型是否会终结编程的讨论甚嚣尘上。本文作者以机器翻译为例,指出虽然谷歌翻译等工具极大提升了翻译效率,但并未取代人工翻译。因为翻译不仅是简单的词语替换,更需要理解语境、处理歧义和文化差异。类似地,编程也需要程序员的创造性和对复杂问题的理解能力,大型语言模型目前还无法完全替代程序员。作者认为,大型语言模型更适合作为辅助工具,帮助程序员提高效率,而非完全取代他们。

开发

经验老道的程序员:对抗代码复杂度的格斗指南

2025-06-17

本文以诙谐幽默的“格鲁(Grug)”程序员视角,阐述了软件开发中对抗复杂度的策略。作者将复杂度比作代码中的“恶魔”,主张说“不”拒绝不必要的特性和抽象,并提倡80/20原则,即用20%的代码实现80%的需求。文中还强调了代码分解的重要性,建议在代码成型后进行重构,并分享了测试、工具使用和团队协作等方面的经验。总之,这是一篇充满智慧和趣味的程序员修炼指南,对于降低代码复杂度、提升开发效率具有启发意义。

LLM辅助下的DSL设计新方向:模糊与形式的桥梁

2025-06-17

作者探索了大型语言模型(LLM)与领域特定语言(DSL)结合的新方向。作者日常使用LLM编写脚本,发现LLM擅长生成“粘合代码”,即根据自然语言描述生成代码框架,而复杂的逻辑仍需手动编写。这引发了作者对DSL设计的思考:如何将这种LLM辅助的编程流程集成到DSL中?如何弥合正式代码与非正式自然语言描述之间的差距?作者设想DSL能自动生成自然语言规范,并与非正式文本无缝集成。

开发

Xlibre:Xorg 的现代化替代品,对抗 Wayland 的挑战者

2025-06-17

Wayland作为Xorg的现代替代品,却因其功能不足和强制推广而饱受批评。它在许多关键领域表现不佳,例如远程桌面、自定义键盘绑定和对遗留软件的支持。 这引发了对开源社区的担忧,因为Wayland的不足影响了用户的体验,特别是对于残障人士。 为了应对Wayland的不足,Xorg的一个分支Xlibre诞生了,旨在现代化Xorg,并提供一个功能完整且稳定的替代方案。 Xlibre的出现为Linux桌面环境提供了新的希望,它能否成功挑战Wayland,还有待时间检验。

开发 Xlibre
1 2 57 58 59 61 63 64 65 213 214