分类: 开发

Jupyter Notebook:兼具文档和端到端测试的利器

2024-12-18

作者在开发量子计算库时,利用Jupyter Notebook编写用户指南,并巧妙地将其作为端到端测试的工具。通过在Notebook中读取环境变量(例如服务器URL),实现参数化,使其既能被用户运行,也能在CI/CD流水线中自动执行。作者比较了两种运行Notebook的方法:一种是直接使用nbclient执行,简单直接;另一种是结合nbconvert和jq处理输出,更灵活但较复杂。最终,作者选择了前者,有效地将文档维护和代码测试结合,确保每次合并请求都能保证文档和代码的完整性。

Go语言错误处理:从混乱到秩序的架构之路

2024-12-18
Go语言错误处理:从混乱到秩序的架构之路

本文讲述了作者如何解决Go语言项目中日益增长的错误处理问题。起初,简单的错误处理方式随着代码库的膨胀变得混乱不堪,日志充斥着难以追踪的错误信息。为了解决这个问题,作者设计并实现了新的错误处理框架,该框架采用集中式、结构化的系统,使用命名空间代码使错误具有意义,易于追踪。该框架的核心是集中定义错误代码,每个服务层只返回自己的命名空间代码,并使用上下文信息丰富错误细节。文章详细介绍了框架的设计决策、实现方式、经验教训以及迁移策略,为读者提供了宝贵的实践经验。

开发

Go语言编写的高性能现代IRC服务器Ergo发布

2024-12-18
Go语言编写的高性能现代IRC服务器Ergo发布

Ergo是一款用Go语言编写的现代IRC服务器,它易于设置和使用,集成了ircd、服务框架和跳板功能(集成帐户管理、历史记录存储和跳板功能)。它支持最新的IRCv3协议,并具有高度可定制性,可以通过可重新散列的YAML配置进行运行时重新加载。Ergo还集成了NickServ、ChanServ和HostServ等服务,支持TLS/SSL、SASL身份验证和LDAP,并具有高级安全和隐私功能。

开发 IRCv3

开源五段均衡器a5eq.lv2发布

2024-12-18
开源五段均衡器a5eq.lv2发布

ashafq发布了名为a5eq.lv2的开源五段均衡器LV2插件。该插件包含低频架、三个峰值滤波器和高频架,旨在帮助音频工程师进行精确的声音雕刻。它具有高精度滤波器系数、立体声处理和用户友好的界面,兼容任何支持LV2的宿主软件,例如Ardour和Audacity。用户可通过简单的命令行操作进行安装和使用,并可通过GitHub提交问题或贡献代码。

开发 均衡器

可适应性文本编辑器ad:融合Vim和Acme的优势

2024-12-18
可适应性文本编辑器ad:融合Vim和Acme的优势

ad是一款新颖的文本编辑器,它结合了Vim和Kakoune的模态编辑接口以及Plan9的Acme的可扩展性方法。ad允许用户执行文本,并将其作为实验平台,用于探索各种文本编辑器功能的实现。目前,ad已足够稳定,并具备一定的功能,用户可以尝试使用,但文档较少,可能存在一些bug。ad的设计理念是融合Vim的模态编辑、Emacs的mini-buffer、以及Acme的编辑命令和可扩展性,旨在创建一个舒适的编辑环境,支持与外部工具和程序直接交互。

开发

快速生成纹理:异或纹理详解

2024-12-18

本文介绍了一种简单易生成的XOR纹理,它通过对像素的x和y坐标进行异或运算生成。虽然XOR纹理在演示或游戏中并不常用,但它非常适合测试纹理映射器。文章详细解释了XOR运算的原理,并探讨了纹理尺寸对颜色亮度的影响,以及如何使用AND和OR运算符生成类似的纹理。最后,作者展示了XOR纹理在三维纹理中的应用示例。

开发 XOR运算

终端日历工具dLine:高效管理日程,掌控时间

2024-12-18
终端日历工具dLine:高效管理日程,掌控时间

dLine是一款命令行工具,它直接在终端显示重要数据,以日历的形式呈现。它可以监控关键日期、通过API简化事件添加,并计算各种事件类型的时间跨度。dLine专为开发者设计,无需离开终端即可简化事件管理和日程导航。它具有动态视图、静态视图和事件计算器视图,并支持多种数据管理功能,包括添加、删除、查看和清理事件。dLine还支持自定义颜色方案和用户翻译,可以与Google Calendar集成。

开发 日程管理

开源认证服务器OpenAuth:简化身份验证,赋能开发者

2024-12-17
开源认证服务器OpenAuth:简化身份验证,赋能开发者

OpenAuth是一个通用的、基于标准的开源认证提供商,它可以作为独立服务部署,也可以嵌入现有应用程序。它支持多种平台和框架,包括Node.js、Bun、AWS Lambda和Cloudflare Workers。OpenAuth遵循OAuth 2.0规范,可定制,并提供预构建的主题化UI。与其他开源认证解决方案不同,OpenAuth是一个集中的认证服务器,运行在用户自己的基础设施上,简化了自托管过程。它不处理用户管理,而是通过回调机制允许开发者实现自己的用户查找/创建逻辑。OpenAuth使用简单的KV存储,并提供多种实现,例如Cloudflare KV和DynamoDB。它还提供可主题化的UI,方便开发者快速上手。

IncludeOS:零开销的云端应用运行环境

2024-12-17

IncludeOS 是一款轻量级操作系统,允许开发者在云端运行应用程序,无需传统操作系统。它将操作系统功能集成到应用程序中,从而创建高性能、安全且资源高效的虚拟机。IncludeOS 应用程序启动速度极快(数十毫秒),内存和磁盘占用极低(几兆字节)。开发者可以使用简单的命令行工具进行构建和部署,并提供了丰富的示例和文档,帮助开发者快速上手。

SeleniumBase:自动化测试的利器

2024-12-17
SeleniumBase:自动化测试的利器

SeleniumBase是一个强大的Python框架,用于Web自动化、测试和绕过机器人检测。它基于Selenium WebDriver,并集成了pytest等测试运行器,提供简洁的语法和丰富的功能,例如自动等待页面元素加载、生成测试报告和Dashboard、支持多种浏览器和操作系统等。SeleniumBase还提供多种模式,例如UC模式和CDP模式,以增强测试的隐蔽性和可靠性,并包含丰富的示例和文档,帮助用户快速上手。

开发

Cerbos使用CRDT技术打造协同开发环境

2024-12-17
Cerbos使用CRDT技术打造协同开发环境

Cerbos公司为了简化复杂的授权逻辑,开发了一个名为“Playground”的协同IDE和测试环境。为了实现无缝协作,“Playground”利用了无冲突复制数据类型(CRDT)。CRDT能够自动解决分布式系统中的冲突,允许多个用户同时处理同一数据集,并最终保证数据一致性。文章详细介绍了CRDT的工作原理,并比较了两个流行的CRDT库:Yjs和Automerge,同时也探讨了自主构建CRDT的可能性及挑战。Cerbos将CRDT与后端即前端(BFF)架构相结合,利用WebSocket进行数据传输,并通过IndexedDB实现本地持久化,构建了高效的协同开发平台。

Rust不安全代码的验证工具

2024-12-17
Rust不安全代码的验证工具

Rust凭借其在编译时消除内存和并发错误的能力而日益流行,但其`unsafe`代码块却可能绕过这些检查。本文探讨了验证Rust不安全代码的工具,包括从C或C++库调用的不安全代码。文章介绍了运行时错误检测工具——Sanitizers,以及能够确定性地查找未定义行为的解释器——Miri。Sanitizers可以检测内存访问越界、数据竞争等错误,而Miri则更精确,能提供代码片段和错误信息。然而,Miri目前尚不支持通过FFI调用C/C++库的代码,这时可以使用C/C++编译器的Sanitizers进行检查。 通过这些工具,即使在处理`unsafe`代码或与C/C++库交互时,也能提高Rust代码的安全性与可靠性。

开发 内存错误

BYOJS:回归原生JS的Web开发实践

2024-12-17

BYOJS项目提倡使用原生JavaScript构建Web应用,而非依赖大型框架。它认为,虽然框架和TypeScript等语言很流行,但直接运用核心JS语言构建高效Web应用是一种被遗忘的艺术。BYOJS鼓励使用松散耦合的库,而非高度耦合的框架,主张选择最合适的工具,以最简洁的代码完成任务。该项目提供了一些实用工具,例如简单的键值存储API、异步事件发射器、模态弹窗封装器等,所有代码均遵循MIT许可证。

网络安全新利器:让入侵者迷失在“地狱网络”中

2024-12-17
网络安全新利器:让入侵者迷失在“地狱网络”中

芬兰奥卢大学SensorFu团队开发了一套创新的网络安全防御系统,灵感源于LaBrea tarpit技术。该系统通过拦截ARP请求和延迟SYN-ACK响应,在网络中创建大量虚拟设备,迷惑入侵者,使其在识别真实设备时耗费大量时间,从而为管理员赢得宝贵的时间来修补漏洞。测试结果显示,该系统可将扫描时间延长至数小时甚至更长,极大降低了攻击成功率。这套轻量级、高效的系统易于部署,为各种规模的组织提供了强大的网络安全防护能力。

开源框架Surfer Protocol:掌控你的个人数据

2024-12-17
开源框架Surfer Protocol:掌控你的个人数据

Surfer Protocol是一个开源框架,旨在帮助用户导出并构建基于个人数据的应用程序。面对数据散落在各个平台的现状,Surfer Protocol提供了解决方案。它包含一个桌面应用程序,用于从各种应用和服务中导出数据,以及一个Python SDK,用于构建基于这些数据的应用程序。用户可以利用Surfer Protocol创建个性化AI模型、从大型科技公司手中夺回数据控制权,或留下数字遗产。

开发

Hooklistener:可视化Webhook调试与测试工具

2024-12-17
Hooklistener:可视化Webhook调试与测试工具

Hooklistener是一款在线Webhook调试和测试工具,它提供实时有效载荷检查、本地测试、自定义调度、可操作的警报和团队协作等功能。用户可以轻松设置端点,接收和分析Webhook,并通过计划任务自动化工作流程。Hooklistener提供免费和付费计划,满足不同用户的需求,帮助开发者更高效地管理和调试Webhook。

开发

OCR古籍挑战:将圣西门回忆录数字化

2024-12-17

作者耗时数周,利用OCR技术对19世纪末的法国古籍《圣西门回忆录》进行数字化处理。这套45卷巨著包含超过300万字,图片版在线可见,但阅读困难。作者的目标是创建一个可读、可搜索、可复制的文本版本。过程中,他克服了图像质量差、页面区域划分(页眉、正文、注释、脚注等)困难等挑战,利用Google Vision API进行OCR,并编写Python程序处理OCR结果,识别并分离不同区域的文本。尽管LLM在脚注引用方面表现不佳,但作者通过改进程序和人工校对,最终将第一卷成果上线。

开发

轻量级自托管代理PipeGate:你的“穷人版”ngrok

2024-12-17
轻量级自托管代理PipeGate:你的“穷人版”ngrok

PipeGate是一个轻量级的、自托管的代理,使用FastAPI构建,旨在成为“穷人版的ngrok”。它允许你将本地服务器暴露到互联网,提供了一种简单的方法来创建从你的本地机器到外部世界的隧道。对于想要了解像ngrok这样的隧道服务底层工作原理或需要在其自身基础设施上托管的可定制替代方案的开发者来说,PipeGate是一个极好的工具。它具有自托管、唯一连接、可定制、轻量级和易于学习的特点。安装简单,只需使用git克隆或pip安装即可。

Bruin:一款用SQL和Python构建数据管道的工具

2024-12-17
Bruin:一款用SQL和Python构建数据管道的工具

Bruin是一款强大的数据管道工具,它集数据摄取、SQL和Python数据转换以及数据质量检查于一体。它支持主流数据平台,可在本地机器、EC2实例或GitHub Actions上运行。Bruin具有数据摄取、SQL和Python转换、数据质量检查、Jinja模板、端到端验证和多环境支持等功能,通过简单的pipeline.yml文件配置即可构建高效的数据管道。

开发

开源香料数据库SpiceNice上线

2024-12-17
开源香料数据库SpiceNice上线

SpiceNice是一个开源的烹饪香料数据库网站,它不仅提供香料本身的详细信息,还包含对应的植物信息和相关的免费文献。该网站使用Strapi作为后端,PostgreSQL作为数据库,Astro作为前端框架。未来,SpiceNice计划扩展成为一个全面的香料数据库,提供Web API和多语言支持,并建立一个香料爱好者社区。

开发 香料

Discourse:十年磨一剑,开源论坛的辉煌十年

2024-12-17
Discourse:十年磨一剑,开源论坛的辉煌十年

Discourse开源论坛在2014年8月26日发布了1.0版本,并推出托管服务。十年来,它始终坚持100%开源,并不断发展壮大。从最初的15个插件发展到如今的49个,并加入了聊天和AI功能,例如AI机器人和摘要功能。团队规模也从4人发展到102人,遍布全球25个国家和14个时区。Discourse已服务超过2万个社区,拥有超过1亿个主题和近16.5亿个帖子。

Langfuse:开源LLM工程平台,赋能LLM应用开发

2024-12-17
Langfuse:开源LLM工程平台,赋能LLM应用开发

Langfuse是一个开源的LLM工程平台,致力于简化大型语言模型(LLM)的开发和部署。它提供LLM可观测性、指标、评估、提示管理、游乐场和数据集等功能,并与LlamaIndex、Langchain、OpenAI SDK、LiteLLM等工具集成。Langfuse帮助开发者监控LLM的性能,管理提示词,评估模型效果,最终提升LLM应用的开发效率。

开发

开源固件:自由的必要性与策略抉择

2024-12-17

本文探讨了固件开源的必要性。作者认为,固件作为控制硬件的软件,理应遵循自由软件原则,这不仅关乎自由本身,更与用户的实际利益息息相关。非自由固件可能限制硬件功能、隐藏安全漏洞,甚至导致用户无法修复安全问题。文章分析了两种观点:一种认为开源固件理想但非必要;另一种则主张所有系统软件都应开源。作者倾向于前者,认为优先确保操作系统内核的自由更为重要,但同时强调开源固件的益处,并讨论了如何通过策略手段推动固件开源。

开发

单人开发团队如何打造百万用户阅读社区

2024-12-17

Nadia Odunayo,一位软件工程师,凭借其独立开发的阅读社区应用StoryGraph,成功吸引了超过百万用户。StoryGraph帮助用户追踪阅读进度,并根据心情和喜好推荐书籍。这篇文章讲述了Odunayo如何在单人团队的情况下,克服挑战,最终取得成功的经验,展现了其非凡的毅力和技术实力。她的故事为独立开发者提供了宝贵的经验和启示。

开发 阅读社区

线性代数赋能交互式图表编辑器

2024-12-17
线性代数赋能交互式图表编辑器

作者Ivan Shubin在开发交互式图表编辑器Schemio时,巧妙地运用线性代数中的矩阵运算解决了一系列难题。起初,Schemio仅支持简单的形状创建和操作。但当引入项目层次结构后,坐标转换变得复杂。作者最初采用递归方法,但遇到缩放和旋转中心点问题。最终,作者利用矩阵表示变换(平移、旋转、缩放),通过矩阵乘法实现坐标转换,并巧妙地运用矩阵求逆解决世界坐标与局部坐标转换问题。此外,作者还利用矩阵运算解决了对象在层次结构中移动时位置和旋转的精确调整问题,避免了对象位置的异常跳动。Schemio的源码已开源,感兴趣的读者可以前往GitHub查看。

文本模式Git界面Tig:高效浏览和管理Git仓库

2024-12-17

Tig是一款基于ncurses库的文本模式Git界面,它主要用作Git仓库浏览器,但也可以辅助进行分块提交暂存更改,并充当各种Git命令输出的分页器。Tig提供便捷的安装和使用说明,以及版本发布说明,方便用户获取最新功能和错误修复。用户可以通过官网、GitHub、Gitter和Stack Overflow等渠道获取更多信息、报告问题或提出功能请求。

开发

程序员打造奇幻编程游戏:Droste's Lair

2024-12-17
程序员打造奇幻编程游戏:Droste's Lair

两位程序员耗时两周开发出一款名为Droste's Lair的奇幻编程环境游戏。游戏中,玩家通过拖拽、放置等直观操作来构建和计算数学结构,并运用“amb”机制实现分支执行和递归调用。游戏以剑与魔法为主题,玩家需完成一系列挑战,例如反转列表元素、生成所有扑克牌花色组合以及计算多米诺骨牌覆盖棋盘的方法数。Droste's Lair巧妙地结合了编程和游戏元素,为学习编程和数学概念提供了一种新颖有趣的途径。

开发 编程游戏

Java的史诗级重构:Valhalla项目最新进展

2024-12-17

历时十年的Java Valhalla项目正进入收尾阶段。该项目旨在修复Java类型系统中类和原始类型之间的裂痕。通过引入“像类一样编码,像int一样工作”的值类,Valhalla实现了扁平且紧凑的内存布局。Devoxx 2024上,Java语言架构师Brian Goetz介绍了该项目的最新进展,包括值类、空限制类型、增强的确定赋值分析和严格初始化等关键特性。

开发 值类

Swift新框架Forked:简化共享数据处理

2024-12-17
Swift新框架Forked:简化共享数据处理

开发者Drew McCormack发布了新的Swift框架Forked,用于简化共享数据的处理,无论是单设备还是多设备协作。Forked灵感来源于Git的合并机制,它允许在单个文件中支持分支和合并,实现最终一致性。无需完整变更历史,只需保留足够版本以进行三方合并。Forked使用结构体而非类,支持Codable,并可与iCloud等云服务同步。它甚至能解决并发访问导致的竞态条件,并支持自定义合并逻辑或内置CRDT算法。通过简单的几行代码,即可轻松实现CloudKit同步。

开发

CHICKEN Scheme迎新编译器CRUNCH:静态类型Scheme编译器

2024-12-17

本文介绍了CRUNCH,一个针对Scheme语言静态类型子集的新编译器。它基于CHICKEN Scheme系统,将Scheme代码编译成可移植的C99代码。CRUNCH旨在提供一个高性能、轻量级的Scheme编译器,弥补现有Scheme系统在性能和可移植性方面的不足,尤其适用于游戏、虚拟机和嵌入式系统开发。虽然CRUNCH对Scheme语言的功能有所限制,但它通过类型推断和多种优化技术,实现了高效的代码生成,并与CHICKEN Scheme系统无缝集成。

开发
1 2 206 207 208 210 212 213 214