5作者: pacmansyyu5 个月前
大家好, 过去几周我一直在构建这个工具,旨在解决开发团队普遍存在的一个问题:安全地共享环境变量。 大家应该都遇到过这种情况——有人需要预发布环境的数据库 URL,结果通过聊天分享了。生产环境的 API 密钥最终出现在纯文本文件中。或者你设置了一些复杂的密钥管理系统,结果在关键部署期间却成为了单点故障。 在 Zerodha,我们是一家券商,有严格的监管要求。我们的基础设施需要可审计,而且我们的数据必须保留在我们这里以便即时恢复。但更深层的问题是,我们尝试的每一个解决方案都让部署依赖于外部服务。 我们尝试过 GitLab CI 内置的密钥,但它们未加密存储,只有代码库维护者才能访问。HashiCorp Vault 管理起来过于复杂,ACL 设置也很麻烦,而且现在又受到了他们的 BSL 许可证变更的限制。AWS Secrets Manager 会造成我们想要避免的厂商锁定。 转折点出现在我们希望通过 Terraform 管理密钥,以实现幂等性和更好的基础设施即代码实践。但 Terraform 没有内置的方法来加密密钥,除非依赖外部提供商。我们要么将密钥以纯文本形式存储在 Terraform 配置中,要么在部署流程中再添加一个外部依赖项。 这时我有了个想法:如果我们能将加密的环境变量直接注入到 Terraform 中,那么任何拥有正确密钥的人都可以进行部署,而无需从不同的系统中查找密钥呢?随着我对这个想法的不断改进,我意识到同样的模式也适用于任何应用程序——从个人项目到团队部署。 所以我构建了 kiln。它使用 age 加密将环境变量加密到与代码一起存在的文件中。无需服务器,无需网络调用,也无需外部依赖。每个团队成员都有自己的密钥,你可以按环境控制访问权限。 它的工作原理如下: ``` # 生成一个新的 age 密钥,或使用你现有的 SSH 密钥 kiln init key # 使用团队的公钥进行初始化 kiln init config --recipients "alice=$(curl https://gitlab.company/alice.keys)" --recipients "me=$(cat ~/.ssh/id_ed25519.pub)" # 设置密钥(安全提示,从不在终端中显示) kiln set DATABASE_URL kiln set API_KEY # 使用解密后的环境运行你的应用程序 kiln run npm start # 这些加密文件可以安全地提交 git add .kiln.env kiln.toml ``` 为什么不使用 SOPS?SOPS 非常适合通用文件加密,但 kiln 专门为环境变量工作流程而构建。它具有“run”、“export”等命令,并内置了团队管理功能。可以把它想象成“针对 .env 文件的 SOPS”,重点在于开发者体验。 为什么不直接使用 age 加密?Age 非常适合加密层,但在日常团队工作流程中却很糟糕。试着用原始的 age 命令管理 20 个团队成员,跨越 5 个环境——你会疯掉的。kiln 处理编排工作。 关于技术细节,kiln: * 使用 age 加密(现代、经过审计、简单) * 与现有的 SSH 密钥一起使用,或生成新的 age 密钥 * 通过 TOML 配置进行基于角色的访问控制 * 单个跨平台 Go 二进制文件 * 零网络依赖——一切都离线工作 * MIT 许可 改变游戏规则的是:密钥随代码一起移动。不再有聊天中的“谁能给我发一下预发布环境的密钥?”。不再有因为密钥服务宕机而导致的部署中断。不再希望你的供应商不会改变他们的定价或许可。 试一试吧——我相信它会帮助你改进团队的部署工作流程。欢迎随时向我提问! GitHub: [https://github.com/thunderbottom/kiln](https://github.com/thunderbottom/kiln) 文档: [https://kiln.sh](https://kiln.sh) 或者立即安装:go install github.com/thunderbottom/kiln@latest
2作者: Rick765 个月前
我是一名全栈开发工程师,专长是 .NET 和 React。目前,我对底层项目产生了浓厚的兴趣,尤其是 Linux 开发和嵌入式设计。 我做过几个较小的 Pico 项目,但我知道这并不能完全等同于嵌入式领域。就我个人而言,这感觉就像是有人搭建了一个静态 HTML 网站,然后去应聘全栈职位,但我不知道该如何弥补这个差距。 Web 开发和嵌入式领域感觉差异巨大,所以我担心,即使我全身心投入,确保我的个人作品集能充分展示嵌入式编程能力,在当前的就业市场下,我可能也不会被信任去参与专业项目。
11作者: iamarnob65435 个月前
我参与过多个初创公司的项目,但每次寻找合适的合作设计方都像个黑匣子。大多数设计公司名录要么是付费推广,要么信息臃肿,或者充斥着无用信息。 所以我创建了 Find Design Agency——一个为注重清晰度、原创性和品味的创始人精心挑选的设计工作室集合。 很希望得到您的反馈,看看还缺少什么,哪些地方可以改进,以及这是否解决了您曾遇到的痛点。 访问地址:<a href="https:&#x2F;&#x2F;finddesignagency.com" rel="nofollow">https:&#x2F;&#x2F;finddesignagency.com</a>
4作者: EliasY5 个月前
大家好,我是Elias。<p>我从事工程和计算机科学教育多年,一直在寻找能让学习更具吸引力和实践性的方法。几个月前,我开始尝试写一本可以随着你的互动而变化和发展的书。 它最初只是关于排序的一章,但后来发展成了一本包含22章的交互式书籍。<p>我写这本书的目的是为了引入一种更具交互性的技术书籍形式,它不需要互联网访问,轻量级、内容全面、跨平台,并且可以提供更好的主动学习体验。<p>这本书的一些独特功能包括:<p>* 22章内容精炼的理论讲解,涵盖680页,内容涉及简单和复杂的数据结构和算法,并配有300多个交互式可视化图表。<p>* 书中呈现的代码片段可以进行交互,并具有可视化调试器,显示程序运行时变量的变化。你还可以播放、暂停、快退和单步执行每个代码片段。<p>* 每个主题下都有各种已解决的问题,并附带一个嵌入式极简Python IDE。你可以在书中直接解决问题,查看多个解决方案,每个解决方案都配有交互式可视化图表和代码回放功能。<p>这本书目前已经出版,可以在这里购买:<a href="https:&#x2F;&#x2F;cartesian.app" rel="nofollow">https:&#x2F;&#x2F;cartesian.app</a><p>学生也可以在Twitter上私信我 (@ElijahYilma) 获得额外的35%折扣。<p>Reddit上的讨论:<a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;SideProject&#x2F;comments&#x2F;1liga56&#x2F;i_wrote_a_680page_interactive_book_on_computer&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;SideProject&#x2F;comments&#x2F;1liga56&#x2F;i_wrot...</a><p>我很乐意收到任何反馈或改进建议,更重要的是,你希望看到哪些主题以这种形式呈现(CS和非CS)。