使用 Dokku 在个人 VPS 上部署无服务器应用程序;Coolify 的崛起及其可能带来的巨大影响

140 阅读9分钟

Dokku:我最喜欢的个人无服务器平台

  • Dokku:您的个人无服务器平台
    • • Dokku 是一款开源 PaaS(平台即服务),可让您将单个服务器转变为自己的类似 Heroku 的环境。它非常适合以经济高效的方式部署应用程序,而不受传统云平台的限制和费用的影响。
    • 主要特点:
    • 易于使用: Dokku 设计得非常用户友好,与 Heroku 类似,可轻松部署和管理应用程序。
    • • **使用 Let's Encrypt 自动实现 SSL:**使用 Let's Encrypt 提供的免费 SSL 证书自动保护您的应用程序。
    • • **基本身份验证:**使用基于密码的身份验证保护您的应用程序。
    • • **可扩展性:**使用单个命令轻松扩大或缩小您的应用程序。
    • 灵活性: Dokku 支持各种编程语言和框架,允许您部署各种应用程序。
  • 部署方法:
    • • **手动部署:**使用 Git 将您的代码直接推送到 Dokku 服务器。
    • • **GitHub Actions:**通过将 Dokku 与 GitHub Actions 工作流集成来实现自动化部署。这允许持续集成和部署 (CI/CD)。
  • Docker 容器化:
    • • Dokku 利用 Docker 容器来打包和隔离应用程序,确保在不同环境中的一致执行。
  • 示例用例:
    • • 部署用 Python、Node.js、Ruby 或其他语言编写的 Web 应用程序。
    • • 托管 API 和微服务。
    • • 运行后台任务和计划作业。
  • 提示和技巧:
    • • **远程命令执行:**使用 SSH 远程在您的 Dokku 服务器上执行命令。
    • • **Docker 缓存失效:**清除 Docker 缓存以重新构建应用程序。
    • • **无需推送即可重建:**在本地重建您的应用程序,而无需将更改推送到远程存储库。

hamel.dev/blog/posts/…

分布式系统的纠删码

从简单开始:最简单的方法是用 C 语言编写代码,让编译器通过自动矢量化发挥其魔力。这意味着编译器将自动优化您的代码以充分利用计算机的处理能力。确保使用关键字restrict(告诉编译器变量不会重叠)和适合您 CPU 的正确编译标志(-march=native)。

利用库:std::experimental::simd如果您想要更多控制,google/highway 或 xtensor-stack/xsimd 等库可以提供帮助。它们抽象出 SIMD 指令(让您的 CPU 一次处理多个数据的特殊指令)的复杂细节,让您的代码运行得更快。C ++ 中还有即将推出的功能。

伽罗华域魔法:纠删码严重依赖伽罗华域算法(一种用于纠错的数学)。优化的库(如 catid/gf256 或 James Plank 的快速伽罗华域算法库)可以显著加快速度。

手动调整矢量化:为了获得最佳性能,您可以为核心编码和解码功能编写自己的矢量化代码。研究表明,仅 XOR GF 乘法通常比使用查找表更快。

专用代码:如果您使用特定k + m配置(数据块和奇偶校验块的数量),您可以通过将矩阵乘法转换为一系列更简单的指令来进一步优化。这涉及为您的 GF 多项式和编码矩阵找到最佳编码矩阵和 XOR 调度。

高级优化:内存访问优化、缓存利用率和指令调度等技术可以提高性能。

程序化探索: TVM(Thesys-lab/tvm-ec)等工具可让您自动找到给定架构的最佳指令调度。这是尖端技术!

请记住,James S. Plank 的出版物是有关擦除编码优化的宝贵信息金矿。

transactional.blog/blog/2024-e…

Chromium DevTools 网络请求日志记录通过 Capability.Network 附加功能扩展到 AudioWorkletProcessor

作者在 Chrome DevTools 中发现了一个错误,其中 AudioWorkletProcessors 发出的网络请求没有出现在“网络”选项卡中。

他们决定通过向 Chromium 项目贡献代码更改来修复此错误。

第一项更改涉及向 Worklet Devtools 目标添加新功能“Capability.Network”,以便监控它们的网络活动。这需要提交拉取请求 (PR) 并经过 Chromium 代码审查流程。

第二个变化是在 devtools_frontend 存储库中添加一行,以便为工作单元启用“Capability.Network”。

devtools_frontend 存储库中的不稳定测试最初延迟了第二个 CL 的登陆,但最终在重试后通过。

作者使用 Chromium Dash 通过不同的发布渠道跟踪他们的修复进度。

他们等待 Chrome Canary(最频繁更新的频道)包含他们的两个提交。

大约 24 小时后,修复程序已在 Chrome Canary 中发布,并且作者验证了来自 AudioWorkletProcessors 的网络请求现在可以在 DevTools 中看到。

作者回顾了这一经历,强调了为 Chromium 这样的大型开源项目做出贡献的独特挑战和回报。他们表示,修复错误让他们感到很满意,并且知道他们的代码将被数百万(可能数十亿)用户使用。

cprimozic.net/blog/fixing…

Vim Racer 是一款开源游戏,要求玩家使用 Vim 命令浏览代码以提高速度和效率

Vim Racer 是一款以速度为主题的游戏,旨在测试您的 Vim 导航技能。目标是使用 Vim 运动命令尽快到达代码编辑器中的所有目标。

游戏设有不同的竞赛关卡,目标数量和复杂程度各不相同。 例如,在某个关卡中,玩家可能需要在 C# 脚本中导航至 12 个“烧伤探测器”目标。

导航效率是关键:排行榜跟踪您花费的时间和每分钟导航次数 (NPM),鼓励玩家掌握 Vim 强大的移动命令。

游戏为每种种族类型提供了实用提示。这些提示通常会强调使用特定 Vim 动作的有效导航策略。

您可以分析排行榜上排名靠前的玩家使用的按键序列。这可以让您学习新的 Vim 技术并优化您自己的导航方法。

Vim Racer 仍在开发中,计划在未来进行改进和游戏变化。创建者欢迎社区的反馈,并致力于让各个级别的 Vim 爱好者都能轻松参与游戏。

vim-racer.com/

工程师开发出新型二维低功耗场效应晶体管

研究人员开发出了一种新型场效应晶体管(FET),它是二维的,而且功耗极小。

这一突破可能会减少智能手机的充电频率,并为 5G 和物联网 (IoT) 等应用提供更小、功能更强大的设备。

制造更小的 FET 的挑战在于克服高栅极泄漏和低介电强度等问题。

该团队使用厚度仅为 1.25 纳米的单晶氧化铝层作为 FET 中的电介质材料。

他们制作的 FET 具有铝栅极,其宽度仅为 100 微米,长度仅为 250 纳米,栅极之间留有间隙以实现完全绝缘。

研究人员使用标准范德华转移方法精确对齐底层晶圆上的材料,然后将它们作为一个单元进行转移。

这产生了具有优良介电界面的高质量2D FET。

这种薄氧化铝层的使用解决了之前制造更小 FET 的尝试中遇到的问题,为更强大、更节能的电子产品铺平了道路。

techxplore.com/news/2024-0…

Avante.nvim:像使用 Cursor AI IDE 一样使用 Neovim

  • 核心功能: Avante.nvim 利用强大的语言模型 (LLM),如 OpenAI 的 GPT 系列和 Anthropic 的 Claude,直接在 Neovim 编辑器中提供智能代码辅助。您可以将其视为将尖端 AI 编码助手的功能直接引入您的工作流程。
  • 支持的提供商: Avante.nvim 旨在与 OpenAI 模型(包括 Copilot 和 Azure OpenAI)以及 Anthropic 的 Claude 无缝协作。这可确保高质量的代码生成和理解。
  • 主要特点:
    • 代码理解和建议: Avante.nvim 可以分析您的代码,理解其上下文,并提供改进、错误修复或新功能的相关建议。
    • 冲突解决: 它通过深入了解代码版本之间的差异并提出解决方案,帮助您解决合并冲突。
  • 用户界面:
    • • 专用侧边栏提供了与 AI 交互的清晰界面。您可以查看建议、选择不同的冲突解决方案以及浏览代码。
    • • 可自定义的按键绑定允许您根据自己的喜好定制体验。
  • 配置: Avante.nvim 提供了广泛的配置选项来微调其行为:
    • • **API 密钥:**您需要为您选择的 LLM 提供商(OpenAI 或 Anthropic)提供 API 密钥。
    • • **突出显示和样式:**自定义 Neovim 中 AI 建议和代码元素的视觉外观。
  • • **未来路线图:**开发人员对 avante.nvim 有雄心勃勃的计划,包括:
    • • **增强的AI交互:**针对复杂的编码场景进行更深入的分析和更复杂的建议。
    • 与 LSP 和 Tree-sitter 集成:将LLM 的强大功能与静态分析工具(LSP)和解析库(Tree-sitter)相结合,提供更准确、更有见地的代码帮助。
  • 入门:
    1. 1. 使用您喜欢的 Neovim 包管理器安装 avante.nvim。
    2. 2. 为您选择的 LLM 提供商配置 API 密钥。
    3. 3. 在 Neovim 中打开一个代码文件并使用:AvanteAsk命令开始与 AI 交互。
  • 社区: Avante.nvim 是一个开源项目,欢迎想要帮助塑造其未来的开发人员做出贡献。

github.com/yetone/avan…

Coolify 的崛起及其可能带来的巨大影响

作者讲述了他们使用 Coolify(一个用于部署应用程序的开源平台)的积极体验,并将其与租用服务器和配置代理等传统部署方法进行了比较。

他们强调了 Coolify 的易用性,特别是它能够在几分钟内部署带有数据库、备份和 Caddy 代理的应用程序。

作者认为 Coolify 代表了软件开发领域的重大转变,使中小型公司能够比以往更轻松地自行托管自己的应用程序和工具。

他们指出自托管软件日益增长的趋势,并引用了 Cal.com(Calendly 的替代品)和 Mailcoach(电子邮件营销工具)等例子作为这种转变的证据。

作者认为 Coolify 的成功得益于它的简单性和可访问性,开发人员无需具备丰富的基础设施知识即可部署复杂的应用程序。

他们承认 Coolify 仍处于早期阶段,但相信它有潜力通过让用户控制自己的数据和部署来颠覆传统的 SaaS 模式。

最后,作者推荐 Coolify,它对于寻求更灵活、更经济高效的方式来部署应用程序的开发人员来说是一款有价值的工具。

blog.api-fiddle.com/posts/cooli…