开发者工具箱|编程·开发工具·资源
559 subscribers
1.44K photos
776 links
面向开发者的实用工具、库与效率技巧,写代码更快更爽。投稿 @BDHT1
#开发者 #编程工具 #效率 #程序员 · 开源总站 @GitHubTrendingHub
Download Telegram
DBSteward:让共享 RDS 实例账单可分摊到每个库

共享实例账单到了,只知道总数,不知道哪个数据库用了多少钱——这是所有在 AWS RDS 上跑多个数据库的团队都遇到的痛点。实例级计费下,一单 SQL Server 实例里不管跑 2 个还是 20 个数据库,都只显示一行费用。财务要回溯审计、噪声邻居影响性能、SaaS 成本不清晰,问题全靠粗放分摊(按人头、按猜)维系。

HiFX 开发的 DBSteward 解决了这个盲区:它直接从数据库引擎读取 DMV 数据,按计划采集每个数据库的 CPU、I/O 停顿、内存、磁盘用量,再通过可配置权重(或自动根据实例瓶颈计算)将成本分配到每个库,并显式报告“未分配”部分(系统库、后台开销等),保证拆分后数字与 AWS 账单完全吻合。

举个例子:用一个共享实例 prd-acme-rds-sql1,月账单 $1,000。追踪两个库——AcmeSales(繁忙 OLTP)和 AcmeInventory(大容量但低负载)。DBSteward 采集到以下用量(简化):
指标:AcmeSales / AcmeInventory / 实例总量
CPU (s):300 / 100 / 1,000
I/O 停顿 (ms):200,000 / 200,000 / 500,000
磁盘 (GB 均值):50 / 150 / 400
计算各库占比后,再根据各自权重(AcmeSales 重 CPU 50%、I/O 30%、磁盘 20%;AcmeInventory 重磁盘 60%、CPU 20%、I/O 20%)得出:
AcmeSales 得分 0.295 → 分摊 $295
AcmeInventory 得分 0.325 → 分摊 $325
未分配 (系统/未追踪) 占 38% → $380
总和 $1,000,精确对账。关键:追踪库不硬扛全部账单,未分配部分明示,财务报表可追溯。


成本归属不只是一项记账任务——做不到它,团队会因账单不透明而过度预配独立实例、任由噪声邻居拖慢性能、靠感觉定 SaaS 价格。DBSteward 把“实例花了 $4,000”变成“各库该付多少”,让成本从每月意外变成可行动的信号。

#开发者 #工具 #DBSteward #HiFX #FinOps #AWS #RDS #SQLServer #成本分摊
@DevToolboxHub
AI代理安全生产:ReAct循环漏洞与防御

Sriram Madapusi Vasudevan 在 InfoQ 演讲中探讨了生产环境下自主AI代理的安全保护模式。他重点剖析了 ReAct 循环在上下文、推理和工具执行三阶段隐藏的关键漏洞,如记忆中毒和恶意工具执行。

针对这些风险,他分享了深度防御、LLM-as-a-judge 评审机制以及 MAESTRO 威胁建模等缓解策略,帮助开发者在 AI 加速开发的同时守住安全底线。

#开发者 #工具 #AI代理 #安全 #ReAct #LLMasJudge #MAESTRO #威胁建模
@DevToolboxHub
Laravel 图片上传防 PHP 注入中间件

图片上传存在已知风险:一个有效 JPEG 文件可在 EXIF 注释中隐藏 PHP 代码,却仍能通过 MIME 检查、扩展名检查和 getimagesize()。一旦文件被写入可执行路径,就可能实现远程代码执行。

laravel-image-sanitize 是一个轻量中间件,在上传处理前扫描图片中的 payload 标记(<?php、phar),若有发现则通过 Intervention Image 从头解码并重新编码,仅保留像素数据,丢弃所有附加内容。使用时通过 Composer 安装,挂载到路由即可。

注意这不能替代 Laravel 自身的验证规则,两者应同时使用。默认支持 JPEG、PNG、GIF、BMP、WebP,不包含 SVG。质量默认 100(近无损),可调整。配置可发布并自定义允许类型、扫描模式、驱动等。


GitHub

#开发者 #工具 #Laravel #安全 #文件上传 #PHP #中间件
@DevToolboxHub
CtroEnv:测试与调试环境变量

传统测试环境变量往往需要修改 process.env 并祈祷清理干净。CtroEnv 提供 objectSource(),可将普通对象包装为环境源,无需全局操作。每个测试都能获得独立环境,告别 beforeEach/afterEach 清理。四种错误码精准定位问题,支持格式化输出。

测试时使用 defineEnv 和 objectSource 即可注入任意覆盖值,验证解析结果、缺失变量或类型错误。CtroEnvError 会一次性收集所有错误,避免逐一修复。秘密值可通过 secret() 标记并自动掩码,支持自定义掩码字符串。
调试方面有四个错误码:missing_required(变量缺失)、type_mismatch(类型不匹配)、invalid_value(校验失败,如无效URL)、validation_failed(自定义校验拒绝)。formatErrors 函数可将错误按类型分组并带颜色输出。
CI/CD 集成:CLI 直接解析配置文件,无需导入 schema。支持快速键对比(1秒内完成)、严格值校验、未知键警告(基于 Levenshtein 距离提示)、JSON 输出(可接入 Slack、监控面板)。提供 GitHub Actions 示例,构建阶段通过 Vite/Next.js 插件在失败时终止构建。


GitHub · npm

#开发者 #工具 #CtroEnv #Nodejs #TypeScript #Testing #CICD #DevOps
@DevToolboxHub
gstack:Garry Tan 开源了他的日常开发栈

Y Combinator 总裁 Garry Tan 将其每天使用的工具集 gstack 开源(MIT 许可)。它把 Claude Code 变成一个由 23 名专家组成的虚拟团队——包括 CEO、工程师、设计师、QA 和发布工程师——强制每次变更在发布前经过多视角审查。核心理念不是“写得更快”,而是“审查后再发布”。

gstack 的核心在于审查视角:CEO 视角审视这是否真的是 10 星产品,工程师视角检查架构能否扛住边界情况,设计师视角判断“好”的标准,开发者体验视角关心他人能否顺利接手。最后还包含测试、提交 PR 和部署后的监控步骤。

Garry 在 ETHOS 文件中写道:“工程之墙已倒下,剩下的只有品味、判断力和完成整件事的意愿。” 他声称今年自己写代码的速度比 13 年前快数百倍,但重点不在速度——当写代码成本几乎为零时,决定“构建什么”并拒绝输出垃圾,成了全部工作。他提出“煮海”原则:过去因为工程师时间昂贵,建议不要做完整的事;现在完整版本只要多花几分钟,就应该做完。

另一个关键原则是:“AI 模型推荐,用户决策。”、“两个 AI 模型对同一变更达成一致是强信号,但不是命令。” 每个审查视角的作用都是挑战工作,而不是例行盖章,最终由人决定采纳哪条反馈。


对于产品构建者,可以从中借鉴三点:即使独自工作也要设置审查关卡;在完成成本低的今天,做完整的事情而非粗糙版本;当 AI 显得自信或两个模型一致时,更要保持最终决策权。

GitHub: github.com/garrytan/gstack

#开发者 #工具 #gstack #GarryTan #YC #ClaudeCode #AI编程 #代码审查 #MIT
@DevToolboxHub
Paper 命令注册:用 Brigadier 替代 CommandExecutor

传统 Paper 插件通过 plugin.yml + CommandExecutor 注册命令,存在多个痛点:args[0] 需手动解析、不支持选择器(@a、@p)、Tab 补全须单独维护 TabCompleter 且容易不同步,命令树静态固定,无法根据配置动态改变参数结构。

Paper 内置了 Mojang 的 Brigadier 框架,通过 LifecycleEvents.COMMANDS 生命周期钩子注册命令树,无需 commands 块。权限检查挂在树节点上,Brigadier 在构建 Tab 补全时自动过滤无权限的命令,例如 requires() 确保只有拥有对应权限的玩家才能看到 /punish。命令树可根据配置条件化注册——例如 /report 只在启用 severity 时增加 severity 参数,否则注册简化版,Tab 补全和错误提示始终准确。

ArgumentTypes.player() 返回的不是 Player 对象,而是一个解析器,支持 Steve、@a、@p 等选择器,无需手动实现。解析后通过 resolvePlayer 转换为玩家,同时处理空选择器的情况。整体注册流程比传统方式更清晰、类型安全,且 Tab 补全自动同步。

传统方式的问题:Bukkit.getPlayer(args[0]) 只能精确匹配当前在线玩家,不支持选择器和模糊匹配;Tab补全必须手动同步,易出错;命令树固定,无法动态调整。

Brigadier 方式示例:在 LifecycleEvents.COMMANDS 内注册 /punish 字面量,requires 检查权限,then 追加 target 参数并绑定执行方法。对于 /report,先读取配置,若启用 severity 则注册含 severity 分支,否则注册简单分支。

ArgumentTypes.player() 的使用:在命令上下文中获取 PlayerSelectorArgumentResolver,调用 resolve(ctx.getSource()) 获得玩家列表,取第一个或处理空情况。这样命令处理器就能直接使用解析到的玩家。


迁移到 Brigadier 可大幅简化 Paper 插件命令开发,消除重复劳动和潜在 bug。虽然旧命令映射仍能工作,但 Brigadier 已成为推荐的首选方案。

#开发者 #工具 #Paper #Brigadier #Minecraft #Command
@DevToolboxHub
Symfony Scheduler:将定时任务纳入代码版本

SSH 进服务器看 crontab 时,发现一堆被注释掉的行、指向已删除命令的入口、无人知晓的 3am 任务——这些都在单台机器上,不在 Git,不在部署流程,随自动伸缩消失。Symfony Scheduler 组件让定时任务变为版本化的 PHP 代码,随应用发布、接受代码审查、可单元测试。自 Symfony 6.4 稳定以来持续演进。

核心是一个实现 ScheduleProviderInterface 的类,用 #[AsSchedule] 标记。every() 接受人类可读间隔(如 '1 hour'),cron() 使用标准 cron 表达式。消息是普通 DTO,无基类无接口。调度本身是 Messenger 传输层——到期的消息经同一总线、中间件、重试策略和失败传输处理。运行命令为 php bin/console messenger:consume scheduler_main,生产环境用 Supervisor 或 systemd 管理,无需任何 crontab 行。

注意单进程锁陷阱:如果运行多个消费者,每个都会独立触发调度。安装 symfony/lock 组件并用共享存储(Redis、数据库)加锁,只有锁持有者生成消息。可选 ->stateful() 配合缓存池记录上次运行,让恢复的 worker 能补发错过的触发。

可单元测试调度逻辑:通过 getSchedule()->getRecurringMessages() 获取消息,对 getTrigger()->getNextRunDate() 断言,在 CI 中捕获 cron 变更,而非在工单中调查。调度随部署和回滚同步,锁和状态保持在框架边缘,业务逻辑只关心消息 DTO。


#开发者 #工具 #Symfony #PHP #Cron #Messenger #Scheduler #单元测试
@DevToolboxHub
OpenNG Foundation 与 spartan/ui 1.0

本周 Angular 生态迎来多项更新:OpenNG Foundation 成为 Spectator、Elf 等知名库的新家,spartan/ui 发布 1.0 稳定版。此外还有 Storybook 通过 AnalogJS 实现 Angular 现代化、ng-conf 落幕及新会议 AI Dev Craft 等消息。

OpenNG Foundation 旨在为开源库提供持续维护支持,已托管 Spectator、Elf 等项目。由 Gerome Grignon 宣布,团队成员包括 Dominic Bachmann 等。目前 GitHub 上已有 8 个仓库。

spartan/ui 1.0 正式发布,提供超 55 个组件,基于 Signals、Standalone、zoneless 变更检测和 SSR 构建,可完全自定义样式。被视为 Angular 版的 shadcn/ui,由 Robin Götz 发起并持续活跃维护。

Storybook 的 Angular 集成通过 AnalogJS 实现现代化。AnalogJS 将 Angular 从 CLI 构建管线中解耦,暴露为标准 Vite 插件,使 Storybook、Vitest 等工具无需额外配置即可编译 Angular 组件。

ng-conf(始于 2014 年的首届 Angular 会议)宣告结束,其替代会议 AI Dev Craft 将于今年 10 月在拉斯维加斯举行,演讲者征集已开放。

#开发者 #工具 #OpenNG #SpartanUI #Angular #Spectator #Elf #Storybook #AnalogJS #ngconf #AIDevCraft
@DevToolboxHub
Dory 现已支持 Snowflake

Dory 将 Snowflake 作为一等数据源集成,用户可在 AI 原生 SQL 工作区中查询、探索和协作 Snowflake 数据。本次发布支持创建和测试连接、在控制台中运行 SQL、浏览数据库、模式、表和视图、预览表数据,并利用 Dory 的工作区模型将查询、结果集和上下文组织在同一位置。

支持的核心数据库工作流:
• 创建并测试 Snowflake 连接
• 在 Dory SQL 控制台中运行 SQL
• 浏览数据库、模式、表和视图
• 检查表列并预览表数据
• 使用默认仓库、数据库、模式、角色和会话选项
• 通过密码或密钥对认证

认证方式:
密码认证:提供账户标识符、仓库、默认数据库、模式、用户名、可选默认角色和密码即可快速验证。
密钥对认证:粘贴 PEM 私钥,避免存储普通密码,适用于生产环境。

在工作区中的使用:
连接保存后即可在 SQL 控制台中运行标准 SQL,在资源管理器中浏览对象层次。表预览使用 Snowflake 感知的标识符引用和分页,无需手动编写预览查询。

人机协同工作流:
Dory 不仅是 SQL 编辑器,更是 AI 原生数据工作区。用户可手动探索,也可让 AI 辅助编写或优化 SQL,审核、重跑、调整并继续分析。


本次发布聚焦基础功能,后续可扩展治理元数据、高级认证和更多 Snowflake 专属工作流改进。

#开发者 #工具 #Snowflake #Dory #SQL #AI #数据库 #云数据
@DevToolboxHub
Google 发布 A2UI v0.9:跨平台生成式 UI 标准

Google 正式推出 A2UI v0.9,这是一个框架无关的标准,允许 AI 代理声明用户界面意图,并在 Web、移动端和桌面端原生渲染,无需引入随机代码。该版本着重强调与现有设计系统的对齐。

更新内容包括全新的 Python SDK、改进的错误处理机制,以及多种传输方法。同时提供了迁移指南和演进规范,帮助开发者平滑过渡。

#开发者 #工具 #Google #A2UI #生成式UI #跨平台 #PythonSDK
@DevToolboxHub
Agent RFT:强化学习微调推理模型

OpenAI 推出 Agent RFT 平台,允许通过实时工具交互与自定义奖励信号对推理模型进行微调。该方法利用强化学习解决上下文窗口内的复杂信用分配问题。企业案例表明,Agent RFT 能消除长尾 token 循环,显著提升效率。演讲者为 Wenjie Zi 与 Will Hang。

#开发者 #工具 #AgentRFT #OpenAI #强化学习 #推理模型 #企业应用
@DevToolboxHub
InfoQ 发布《Agentic AI Architecture》电子杂志

InfoQ 推出 Mini book《Agentic AI Architecture》,由行业专家撰稿,全面覆盖智能体 AI 架构的要素与趋势。该电子杂志试图将智能体 AI 架构确立为一种新型软件架构,认为它很可能在未来数年主导行业发展。

#开发者 #工具 #AgenticAI #AgenticAIArchitecture #InfoQ #软件架构
@DevToolboxHub
生成式AI学习路线图:从入门到开发者

一份面向开发者的生成式AI系统学习路线已发布,从零基础到生产级部署,共分八个阶段,强调实践项目构建与真实应用能力。

第一阶段:AI基础(生成式AI概念、Token、嵌入、幻觉、上下文窗口、训练 vs 微调)
第二阶段:提示工程(零样本、少样本、思维链、角色提示、优化技巧)
第三阶段:主流模型对比(GPT、Claude、Gemini、Llama、DeepSeek、Mistral、Qwen)
第四阶段:AI开发(Python、API、SDK、流式响应、函数调用、结构化输出)
第五阶段:RAG(嵌入、向量数据库、文档分块、语义搜索、生产级RAG系统)
第六阶段:AI代理(多代理、规划、记忆、工具调用、MCP协议)
第七阶段:实际项目(AI聊天机器人、简历分析、网站构建、客服、PDF聊天、代码助手等)
第八阶段:部署与生产(安全、鉴权、限流、监控、日志、性能优化、成本控制、扩缩容)


路线面向学生、软件开发者、创业者等零基础学习者,每阶段均附带实践示例,后续文章将从“什么是生成式AI”开始循序讲解。

#开发者 #工具 #生成式AI #学习路线 #PromptEngineering #RAG #AIAgents #LLM #DeepSeek #Mistral
@DevToolboxHub
Cloudflare 内部统一数据平台 Town Lake 详解

Cloudflare 详细介绍了其内部统一数据平台 Town Lake 和 AI 分析代理 Skipper。该平台处理了约 9.1 万次计费查询,其中计费工作负载占全部平台查询的 53%,形成主要使用量。

Town Lake 采用基于 Trino、Iceberg、R2 和 DataHub 的湖仓一体架构,旨在统一访问运营、计费、安全和业务数据,支持治理的跨系统分析和自然语言访问。Skipper 作为 AI 分析代理,进一步简化了数据获取流程。

#开发者 #工具 #Cloudflare #TownLake #Skipper #Trino #Iceberg #R2 #DataHub #数据平台
@DevToolboxHub