1作者: lionello大约 2 个月前
Hi HN, 这是三个 FOSS Pulumi 提供程序(defang-aws、defang-gcp、defang-azure),它们接受类似 Docker Compose 的项目,并将其作为真正的基础设施配置到相应的云中:VPC、子网、负载均衡器、无服务器容器(ECS Fargate、Cloud Run、Container App)、构建、托管 PostgreSQL、Redis、LLM 以及公共/私有 DNS。 一次开发,随处部署:所有这三个提供程序都公开了相同的 Compose 形状的接口。它们包含相同的 Pulumi 资源:Project、Build、Service、Postgres、Redis、LLM。Compose services 映射中的每个服务都将作为这些资源之一进行配置。在云之间切换应该像更改导入一样简单,不需要其他操作。Project 资源为服务发现设置私有 DNS,因此 Compose 服务可以使用其 Compose 服务名称进行连接。 这些提供程序已从头开始用 Go 重写,并基于我们过去 2 年一直在使用的(内部)TypeScript Pulumi 代码。我们尚未完全达到同等水平,但我们鼓励大家使用它们并分享您的反馈。 Pulumi 工具为 TypeScript、Python、Go 和 C# 生成 SDK。该存储库提供了所有云中所有这些语言的示例,例如: ``` const app = new defang_aws.Project("demo", { services: { web: { image: "nginx:latest", ports: [{ target: 80, mode: "ingress", appProtocol: "http" }], }, }, }); export const endpoints = app.endpoints; ``` 一些说明: - Compose 接口是有主见的。我们检查服务需求并将其映射到具体的云资源。例如,在 GCP 上,没有公开端口的服务将在 Compote Engine 上运行,而不是 Cloud Run。 - 可移植性在 Compose 级别。每个云的行为都不同:IAM、原生容器等。API 相同,但实现方式不同。 - Project 资源拥有共享基础设施(VPC、构建管道、DNS、LB)。独立的 Service、Postgres、Redis 资源会跳过这一步,因此 Service 需要一个构建好的镜像。 - 许可方式是双重的:提供程序引擎是 AGPL-3.0,因为我们希望分支能够回馈社区。生成的 SDK 是 Apache-2.0,因此在您自己的 Pulumi 代码中没有 copyleft。 - 我们正在等待 Pulumi 开发人员合并我们的注册表 PR,因此注册表仍然反映旧的 v1 提供程序文档。 - 支持运行时“config”,即参数,使用 ConfigProvider 接口,该接口也支持插值。 仓库:[https://github.com/DefangLabs/pulumi-defang](https://github.com/DefangLabs/pulumi-defang) 很乐意深入探讨 Compose 翻译的工作原理、API 在云之间差异的原因(以及原因)、为什么选择 Pulumi 而不是 CDK/Terraform,或者特定于云的权衡(AWS 使用 ECS+ALB,GCP 使用 Cloud Run 并可选地回退到 CE,Azure 使用 Container Apps)。 - Lio
2作者: npilk大约 2 个月前
嘿,HN,我分享一个我开发的工具,用于创建高尔夫球场的码数簿。<p>几年前,我最初用 Python 写了一个工具,从 OpenStreetMap 提取数据,自动计算相关距离,然后为码数簿创建图像。如果你想看原始版本,请点击这里:<a href="https:&#x2F;&#x2F;github.com&#x2F;npilk&#x2F;hacker-yardage" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;npilk&#x2F;hacker-yardage</a><p>但对于大多数业余高尔夫球手来说,Python 还是一个相当大的技术障碍。最近我意识到,大部分相同的功能都可以整合到一个 JS 应用程序中。Claude 帮我完成了大部分的移植工作。<p>结果就是 OpenYardage。你可以搜索高尔夫球场,该工具将自动为你生成码数簿。<p>欢迎任何反馈或建议!Python 版本仍然有一些我尚未移植的功能,主要一个是地形数据,用于可视化坡度。<p>源代码在这里:<a href="https:&#x2F;&#x2F;github.com&#x2F;npilk&#x2F;openyardage-web" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;npilk&#x2F;openyardage-web</a>
2作者: 20wenty大约 2 个月前
CoreMem 让你构建被称为“mem”的上下文集合,并通过 URL、Chrome 扩展程序、MCP、Cursor/VS Code 插件、技能等方式与任何 AI 代理共享。当你切换代理或开始新会话时,CoreMem 会将你的上下文集中组织起来,这样任何 AI 工具都可以读取它,而无需你重新解释你的项目或目标。 最初,我构建了一个 CLI,它将上下文片段(项目 A/B/C 的详细信息、我的写作风格、首选技术栈、编码风格等)保存在 SQLite 数据库中。我可以指示各种代理“使用我的 `coremem` CLI 检索关于 [项目 A] 的详细信息,然后再开始”。它为我解决了问题,因为我一直在不同的项目和聊天代理之间切换,每次都要重新解释自己,这要么是重复,要么是复制粘贴我从之前的会话中保存的摘要。 我决定让它更强大、更便携,所以我把最初的 CLI 变成了 SaaS。简而言之:你可以创建一个“mem”,它是一个或多个相关上下文片段的集合,并与任何代理共享该 mem,以便快速让他们了解情况。 目前,我通过可撤销的共享链接、Chrome 插件、Cursor 插件、Cursor/VS Code 扩展、Claude Code 插件、ChatGPT/Claude/Gemini/等通过 MCP 集成。由于我主要从 CLI 工作,我使用 Claude Code 插件或创建 5 分钟的共享链接,我可以将其放入聊天中,但我试图让主要从浏览器或 IDE 工作的人也能使用它。 我从事编码工作 30 多年了,并且对大部分内容都很有共鸣。我能够使用 CoreMem 帮助它构建自己,因为我在各种编码代理之间切换,让他们获取上下文,然后开始一项新任务。我相信我的架构和工程经验有所帮助,但在几周内构建这个工具证实,对于某人来说,构建他们需要解决问题的工具的门槛非常低。 我过去从编码中获得的兴奋感已经大部分消退了,但现在我通过管理不同的代理来构建东西获得了类似的兴奋感。