返回首页
最新
最后,在实现组件预览支持并将代码库迁移至RazorConsole组织后,我们认为现在是向Hacker News介绍RazorConsole的合适时机。
# RazorConsole
RazorConsole是一个用于构建交互式终端应用程序的库,使用Razor组件,通过Spectre.Console进行渲染。如果你曾使用过React Ink,这个概念会让你感到熟悉:一种声明式组件模型,与应用逻辑保持清晰的分离。如果你喜欢Blazor/Razor表达用户界面的方式,但希望将目标定位于终端,RazorConsole可能是一个不错的选择。
# 亮点
- 使用熟悉的Razor/Component语法编写终端用户界面
- 将Razor组件直接渲染为Spectre.Console可渲染对象
- 保持用户界面的声明性和可组合性,类似于Blazor和React Ink
# 链接
- GitHub: [https://github.com/RazorConsole/RazorConsole](https://github.com/RazorConsole/RazorConsole)
- 网站: [https://razorconsole.github.io/RazorConsole](https://razorconsole.github.io/RazorConsole)
特别感谢Nick Chapsas,他制作了一个优秀的介绍视频:[https://www.youtube.com/watch?v=1C1gTRm7BB4](https://www.youtube.com/watch?v=1C1gTRm7BB4)。他的报道在RazorConsole的冷启动阶段带来了巨大的推动,我们对此表示衷心的感谢。如果你想快速、清晰地了解这个项目的功能,他的视频是一个完美的起点。
# 接下来会做什么
- 更多交互:鼠标和滚轮事件
- 更多布局和样式:额外的布局原语(例如,类似flex的模式),潜在的CSS样式语法
- 更多组件:类似于shadcn的组件注册体验
我厌倦了阅读成千上万页关于分布式存储系统的文档。我只想在几台服务器上可靠地存储文件。
于是我构建了 MicroVault——一个你可以真正理解的内容可寻址的二进制大对象存储。
*它的功能:*
- 在 N 个卷服务器上存储二进制大对象,并进行复制
- 使用 nginx 进行服务(读取时零开销)
- 使用 SQLite 存储元数据
- 使用一致性哈希进行分布
- 提供简单的 HTTP API
*它不具备的功能:*
- 自定义网络协议
- 分布式共识
- 内置身份验证/加密(使用标准工具)
- 任何复杂的功能
*架构:*
- 主服务器:协调写入操作,将元数据存储在 SQLite 中
- 卷服务器:nginx + 简单的包装器(约 100 行代码)用于 PUT/DELETE
- 存储:磁盘上的常规文件,按哈希前缀组织
- 工具:重建、重新平衡、验证、压缩
*为什么选择 nginx?*
因为它经过数十年的优化,专门用于服务静态文件。对于读取(大多数操作),它是纯粹的 nginx,零开销。
*灵感来源:*
George Hotz 的 minikeyvalue——证明分布式存储不需要复杂。
整个代码库小到可以在一个晚上审计完毕。你可以在一个周末分叉它并将其变成你自己的项目。
GitHub: https://github.com/afonp/microvault
使用 Go、SQLite、nginx 构建,并对复杂性保持健康的不屑态度。
你在做什么?有没有什么新的想法在考虑中?