分类: 开发

Canva工程团队将CI构建时间从数小时缩短至30分钟以内

2024-12-18

Canva工程团队成功将持续集成(CI)构建时间从平均80分钟缩短至30分钟以内,甚至低至15分钟。他们通过多方面努力实现这一目标,包括识别并解决Bazel缓存问题、优化流水线结构、改进Git仓库检出和缓存,以及利用Bazel远程构建执行(RBE)等。此外,他们还进行了大量实验,例如测试不同实例类型和调整Bazel配置,最终通过一系列增量改进,大幅提升了CI效率,降低了成本,并改善了开发人员体验。

开发 CI优化

GitHub项目ted:基于图灵机的文件编辑工具

2024-12-18

ted是一个基于Go语言开发的命令行工具,它允许用户根据提供的图灵机规则编辑文件。该工具的灵感源于作者处理日志文件的需求,通过编写状态机来精确提取所需信息。ted支持多种操作,包括正则表达式匹配、sed命令执行、变量赋值、捕获和输出控制等,并提供了丰富的功能和选项,例如捕获多个行、使用正则表达式捕获组、以及文件头尾的移动等。

开发 文件编辑

Homescreen应用:重新定义手机首页

2024-12-18

Homescreen 是一款旨在重新定义手机首页体验的应用。它突破了传统手机桌面的局限,通过创新的设计和功能,为用户提供更加个性化、高效和便捷的交互方式。用户可以自定义小组件、主题和布局,打造专属的手机首页,提升效率并增强使用乐趣。Homescreen 不仅仅是一个简单的桌面替换,更是一种对手机使用方式的革新。

开发 手机桌面

摆脱云端束缚:自主掌控物联网传感器数据

2024-12-18

本文讲述了一位嵌入式软件工程师如何从云端服务器中解放一个连接WiFi的氡传感器,从而获得对数据的自主控制权。通过分析传感器与服务器间的网络流量,工程师发现传感器并未严格验证服务器证书,从而利用本地DNS服务器和自建Python Web服务器模拟“云端”,成功拦截并读取了传感器的原始数据。这不仅实现了对数据的编程访问,也避免了因厂商倒闭或关闭服务器而导致设备无法使用的问题。文章还强调了网络安全的重要性,并提醒读者关注DNS流量的隐私风险。

浏览器扩展程序“refoorest”涉嫌欺诈:植树承诺成空头支票

2024-12-18

Colibri Hero公司开发的浏览器扩展程序refoorest和Impact Hero SDK承诺通过用户浏览行为植树,但调查发现其主要盈利模式为欺诈性的联盟营销。refoorest虚报植树数量,并利用用户数据,诱导用户留下评论和分享,而Impact Hero SDK未经充分告知即获取用户权限,涉嫌违反Chrome商店政策。文章揭露了该公司的种种不透明操作,包括虚假用户评价、缺乏财务透明度以及数据安全隐患,质疑其植树承诺的真实性。

Ruby JSON库性能优化:第一部分

2024-12-18

本文讲述了作者如何优化Ruby的JSON gem,使其成为速度最快的JSON解析器和生成器。作者并非使用复杂技术,而是通过剖析代码,应用简单的优化,例如避免冗余检查、优先检查更可能成立的条件、减少设置成本以及使用查找表等。这些优化不仅适用于C代码,也适用于Ruby代码。最终,这些优化显著提升了JSON gem的性能,使其与oj等替代方案相比毫不逊色,减少了使用monkey patch的必要性,并解决了oj带来的稳定性和兼容性问题。

开发

ImPlot3D:一款基于Dear ImGui的高性能即时模式3D绘图库

2024-12-18

ImPlot3D是一个基于Dear ImGui的开源库,它为开发者提供了一种简单易用、高性能的3D绘图方式。无需依赖ImPlot,ImPlot3D支持多种3D绘图类型,包括线图、散点图、曲面图、网格图等,并具有交互式旋转、平移和缩放功能。开发者可以通过类似于Dear ImGui和ImPlot的直观API快速上手,自定义标记、线条、曲面和网格样式,并可选择使用内置颜色映射或自定义颜色映射。该库还提供了一个功能齐全的演示程序,方便用户学习和使用。

Python 元循环解释器:用Python实现Python解释器

2024-12-18

本文介绍了如何使用Python编写一个Python元循环解释器(MCI)。MCI是一种用自身语言编写的解释器,可以实现对宿主语言子集或超集的解释。作者详细讲解了MCI的实现过程,包括解析Python源码、构建抽象语法树(AST)、遍历AST并执行语句等步骤,并阐述了作用域、符号表以及如何处理控制流语句(例如while循环和if语句)等关键概念。通过这个例子,可以深入理解解释器的工作原理,并学习如何利用Python的AST模块和内置函数来构建更复杂的解释器。

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

2024-12-18

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

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

2024-12-18

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

开发

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

2024-12-18

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

开发 IRCv3

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

2024-12-18

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

开发 均衡器

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

2024-12-18

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

开发 日程管理

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

2024-12-17

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

开发

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

2024-12-17

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

Rust不安全代码的验证工具

2024-12-17

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提供了解决方案。它包含一个桌面应用程序,用于从各种应用和服务中导出数据,以及一个Python SDK,用于构建基于这些数据的应用程序。用户可以利用Surfer Protocol创建个性化AI模型、从大型科技公司手中夺回数据控制权,或留下数字遗产。

开发

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

2024-12-17

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

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

2024-12-17

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

开发

开源香料数据库SpiceNice上线

2024-12-17

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

开发 香料

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

2024-12-17

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

1 2 4 6 7 8 9