Dockerc等本周Github上有趣项目

本周Github上有趣的项目、工具和库

1、dockerc
将 docker 映像编译为独立的可移植二进制文件。

不再需要docker run,不需要pip install,不需要npm i,只需为您的用户提供他们可以运行的可执行文件!

特点:


从最新版本安装 dockerc 。


2、pmesh
pmesh 是一款一体化服务管理器、反向代理和企业服务总线。它旨在成为 Web 服务中常见部署的各种工具的简单而强大的一体化替代品。

pmesh 旨在将以前由单独工具组成的复杂网络简化为一个高效的框架

  • 作为反向代理:作为 Nginx、HAProxy 和类似工具的替代品,pmesh 提供快如闪电的 SSL 终止、路由、速率限制和负载平衡,在 12 核服务器上每秒处理超过 200k 请求。除了基础功能之外,pmesh 还提供 GeoIP 识别、自动 TLS 证书管理、URL 签名,甚至将 Webhooks 集成到消息队列中,所有这些都毫不费力。
  • 对于服务管理:pmesh 扮演 systemd、pm2 和类似工具的角色,简化了服务生命周期管理。它确保服务始终运行,根据需求进行扩展,并为滚动更新、运行状况检查等管理任务提供强大的 API。它支持零停机热插拔的能力以及与多种语言和框架的内置兼容性意味着您可以在配置上花费更少的时间,而在开发上花费更多的时间。
  • 在服务发现方面:与 consul 和 etcd 一样,pmesh 自动发现和注册服务,根据服务运行状况和其他指标引导流量。它通过简单的 API 促进服务间通信,使设置和维护变得轻而易举。
  • 作为消息总线:pmesh 集成了 RabbitMQ 和 Kafka 等系统的功能,为服务间通信和事件驱动架构提供了高性能、低延迟的消息传递系统。pmesh 中嵌入的是 NATS.io 的一个分支,NATS.io 是一个高性能消息传递系统,专为高吞吐量、低延迟消息传递而设计。
  • 作为 KV 和对象存储:pmesh 提供高可用性键值存储和对象存储,具有自动复制和分片等功能,简化数据管理和存储,使您的服务更具弹性和响应能力。
  • 拓扑管理:pmesh 是根据分布式系统编写的,旨在允许任意数量的 pmesh 实例形成自我发现、自我修复和优化的拓扑。只需一个pmesh join pmtp://...命令即可轻松管理和扩展您的基础设施。无需维护服务器配置,无需手动分配路由和区域,无需重新启动任何服务。它自动执行本地 DNS 管理、透明地颁发 TLS 证书,并使用客户端证书在节点之间进行相互身份验证以确保安全性。
  • 通过分布式日志记录:pmesh 将所有服务的日志捕获到集中式系统中,您可以在整个基础设施中实时查询、搜索甚至跟踪。对于任何请求,pmesh 都会分配一个唯一的 Ray ID,让您可以在所有服务中跟踪它,从而轻松调试和监控您的基础设施。

3、Flyde
可视化编程工具IDE:包括 VS Code 插件扩展,与现有的 TypeScript 代码、浏览器和 Node.js 集成。

它允许您创建和运行可视化程序,旨在补充和增强传统的文本编码,而不是取代它。它包含VSCode 扩展,与现有 TypeScript/JavaScript 代码无缝集成,并在 Node.js 和浏览器中运行。

Flyde适合谁?

  • 对于新手开发人员和非技术用户: Flyde 通过简化应用程序的创建和管理,提供了一个受欢迎的编程切入点。它允许那些刚接触开发或非技术角色的人通过可视化界面构建复杂的逻辑。通过将复杂的代码概念转化为可访问的可视化块,Flyde 使编程更加直观和平易近人。
  • 对于跨角色的团队协作: Flyde 营造了一个超越技术障碍的协作环境。它是一种工具,使产品经理和数据工程师等团队成员能够直接为代码库做出贡献。通过可视化编程,Flyde 将业务逻辑和数据流程转变为每个人都可以贡献和理解的共享项目,从而实现创新民主化。
  • 对于编程教育工作者: Flyde 是教育工作者的一个引人注目的资源,旨在提供动手实践的编程教育。它是一种将视觉学习的简易性与现实世界编程概念的稳健性融为一体的工具,使其成为任何旨在通过交互式和视觉驱动的体验让学生了解编码基础知识的课程的宝贵补充。
  • 对于经验丰富的开发人员即使是经验丰富的开发人员也可以从 Flyde 构建 API 和微服务的可视化方法中受益。它提供了新的效率维度,使经验丰富的专业人员能够以可视化方式设计、原型化和管理他们的服务,同时保留传统编码的灵活性和强大功能。Flyde 的开源性质允许扩展和定制,对于那些寻求托管云解决方案的人来说,Trigg.dev提供了一个具有强大的云托管功能的商业平台。

4、bpftop
bpftop 提供运行 eBPF 程序的动态实时视图。它显示每个程序的平均运行时间、每秒事件数以及估计的总 CPU 百分比。 

特征

  • 显示主机上所有正在运行的 eBPF 程序的列表,包括 ID、类型和名称
  • 显示每个 eBPF 程序的周期和总平均运行时间。
  • 计算每个 eBPF 程序的每秒事件数和估计的 CPU 利用率
  • 提供 10 秒时间段内平均运行时间、每秒事件数和估计 CPU 利用率的图形视图
  • 每秒动态更新列表
  • 仅当统计数据收集功能处于活动状态时才启用该功能


5 、React-unforget
React Unforget 是一个编译器,旨在通过智能记忆和优化来增强 React 应用程序的性能。通过分析和改造 React 组件和钩子,React Unforget 旨在减少不必要的重新渲染并优化执行流程,从而缩小与 Svelte 等更高效框架的性能差距。

特征

  • 智能组件和钩子memoization:自动识别和memoization React组件和钩子,确保只发生必要的重新渲染。这会带来更高性能且更具可读性的代码。
  • 粒度 JSX 元素展开:展开 JSX 元素并分别memoization每个元素和表达式,以实现更有效的优化。消除了使用React.memo.
  • 超越早期返回的memoization:React Unforget 具有独特的功能,即使在组件函数的早期返回之后也可以memoization值,从而无需重组代码以符合 Hooks 规则。这可以确保在不改变组件逻辑流程的情况下进行优化。

6、LogScreen
LogScreen 简化了该过程。管道日志,在网络应用程序中可视化 - 就是这么简单!

安装完成后,您可以使用LogScreen在浏览器中查看命令输出:
`command | npx logscreen` 
LogScreen 将启动本地服务器并在默认 Web 浏览器中打开日志。

7、Luminal
Luminal 是一个深度学习库,它使用可组合编译器来实现高性能。

use luminal::prelude::*;

//设置图形和张量
let mut cx = Graph::new();
let a = cx.tensor::<R2<3, 1>>()
    .set([[1.0], [2.0], [3.0]]);
let b = cx.tensor::<R2<1, 4>>()
    .set([[1.0, 2.0, 3.0, 4.0]]);

// Do math...
let mut c = a.matmul(b).retrieve();

// 编译和运行图形
cx.compile(<(GenericCompiler, CPUCompiler)>::default(), &mut c);
cx.execute();

// Get result
println!(
"Result: {:?}", c);

大多数深度学习库都是急切优先的,这意味着每次操作调用都会直接对数据进行操作。在 PyTorch 中,当你看到 x + y 时,加法实际上就发生在那里。这非常适合调试,因为它的工作原理与大多数开发人员所期望的完全一致。

然而,这对性能来说并不好。对开发人员有意义的东西在机器上并不好用,就像没有人会手工编写汇编程序一样。大多数程序库试图通过附加运算符融合或 JIT 编译来解决这个问题,试图将编译流程改变为更适合机器的流程。事实证明,即使是 Pytorch 也很难做到这一点!

8、Bebop
在基准测试中,Bebop 比 Protocol Buffers 快 100 倍,比 JSON 快 1000 倍。Bebop 是一种速度极快的数据交换格式。

  • 支持Typescript、C#、Rust、 C++ 等。
  • Snappy DX -bebopc轻松集成到您的项目中。VSCode中提供语言支持。
  • Light - Bebop 具有零依赖和微小的运行时占用空间。生成的代码经过严格优化。
  • RPC - 使用Tempo构建高效的 API 。
  • 随处运行 - 浏览器、无服务器平台和裸机。
  • 可扩展 - 为任何语言的编译器编写扩展。