本周18个Github有趣项目如Dozzle等

本周18个Github有趣项目:

1、Dozzle
Dozzle 是一款小型轻量级应用程序,具有基于 Web 的界面来监控 Docker 日志。它不存储任何日志文件。它仅用于实时监控容器日志。

特征

  • 容器名称智能模糊搜索
  • 使用正则表达式搜索日志
  • 内存占用小
  • 分屏查看多个日志
  • 轻松下载日志
  • 内存和 CPU 使用率的实时统计数据
  • 支持代理转发授权的多用户身份验证

Dozzle 是一个小型容器(压缩后 4 MB)。使用以下命令获取最新版本:
$ docker pull amir20/dozzle:latest

收集的分析数据
Dozzle 使用 Google Analytics 收集匿名用户配置。为什么?Dozzle 是一个没有资金支持的开源项目。因此,没有时间对 Dozzle 进行用户研究。收集分析数据是为了根据人们使用 Dozzle 的方式确定功能和修复的优先级。这些数据完全公开,可以使用Data Studio 仪表板实时查看。


2、Moodist
环境声音有助于集中注意力并保持平静。

特征

  1. 超过 75 种环境声音。
  2. 持久的声音选择。
  3. ✈️与他人分享声音选择。
  4. 自定义声音预设。
  5. 声音的睡眠定时器。
  6. 记事本,用于快速记录。
  7. 番茄工作法计时器。
  8. ✅ 简单的待办事项清单(即将推出)。
  9. ⌨️ 一切的键盘快捷键。
  10. 注重隐私:不收集数据。
  11. 完全免费、开源且可自托管。

工具

  • ⚡ TypeScript:编程语言
  •  React:UI 库
  • ‍ Astro:元框架
  •  CSS 模块:样式
  • 状态:状态管理
  •  Framer Motion:动画库
  • ⚙️ Radix:可访问组件
  •  Storybook:组件文档
  •  Vitest:单元测试(即将推出)
  •  Playwright:端到端测试(即将推出)
  •  ESLint:代码检查
  •  Prettier:代码格式化
  •  Stylelint:CSS 语法检查
  •  Husky:Git Hooks
  •  Lint Staged:在暂存文件上运行 Linters
  •  Commitlint:Git 提交 Linting
  •  Commitizen:Git 提交消息助手
  • 标准版本:版本控制和 CHANGLOG 生成
  •  PostCSS:CSS 转换

3、Revideo
Revideo 是一个用于编程视频编辑的开源框架。它从令人惊叹的Motion Canvas编辑器中分叉而来,目标是将其从独立应用程序转变为开发人员可以用来构建整个视频编辑应用程序的库。

Revideo 可让您在 Typescript 中创建视频模板并部署 API 端点以使用动态输入呈现它们。它还提供了一个 React 播放器组件,可实时预览浏览器中的更改。如果您想了解更多信息,可以查看我们的文档、我们的 示例存储库,并加入我们的Discord 服务器

与 Motion Canvas 的一些区别如下:

  • 无头渲染: Motion Canvas 目前要求您按下其 UI 中的按钮来渲染视频。我们已将此功能公开为 函数调用,并可以将渲染 API 部署到 Google Cloud Run 等服务(例如,或使用我们的 CLI 从您的 Revideo 项目公开渲染端点(文档))
  • 渲染速度更快:在构建应用程序而不是为自己制作视频时,渲染速度非常重要。我们通过启用并行渲染并seek()用基于 ffmpeg 的 视频帧提取器替换 HTML 视频的操作来加快渲染速度
  • 更好的音频支持:我们在渲染过程中启用了从

4、Huly
Huly 平台是一个强大的框架,旨在加速业务应用程序(例如 CRM 系统)的开发。此存储库包含多个应用程序,例如聊天、项目管理、CRM、HRM 和 ATS。各种团队都在该平台上构建产品,包括HulyTraceX

一体化项目管理平台(Linear、Jira、Slack、Notion、Motion 的替代品)

5、mistral.rs
极快的 LLM 推理。

Mistral.rs 是一个快速的 LLM 推理平台,支持在各种设备上进行推理、量化和易于使用的应用程序,具有与 Open-AI API 兼容的 HTTP 服务器和 Python 绑定。

快速地:

  • 量化模型支持:2 位、3 位、4 位、5 位、6 位和 8 位,以实现更快的推理和优化内存使用。
  • 连续配料。
  • 前缀缓存。
  • 设备映射:在设备上加载并运行一些层,在 CPU 上加载并运行其余层。
加速器支持:
  • 通过 Metal 框架支持 Apple Silicon。
  • 具有 CPU 推理mkl、accelerate支持和优化的后端。
  • 通过闪存注意和 cuDNN 提供 CUDA 支持。
简单的:
  • 轻量级 OpenAI API 兼容 HTTP 服务器。
  • Python API。
  • 使用 Regex 和 Yacc 提供语法支持。
  • ISQ(原位量化):.safetensors通过在加载后量化模型,直接从 Hugging Face Hub 运行模型,而不是创建 GGUF 文件。
    • 这会在使用 ISQ 进行量化之前将 ISQ 权重加载到 CPU 上,然后移动到设备以避免内存峰值。
    • 提供进一步减少内存峰值的方法。
强大:
  • 通过权重合并实现快速的 LoRA 支持。
  • 第一个具有一流支持的 X-LoRA 推理平台。
  • 推测解码:将支持的模型混合为草稿模型或目标模型
  • 运行时通过适配器预加载进行动态 LoRA 适配器交换:示例和文档

6、htmd
受 turndown.js 启发的 Rust HTML 到 Markdown 转换器

特征

  • 丰富的选项,与turndown.js相同
  • 可靠,它通过了turndown.js 的所有测试用例
  • 最小依赖,仅使用html5ever
  • 速度快,在 i5 第 7 代 CPU 上转换约 1.4MB 的维基百科页面只需不到 200 毫秒

7、cognitive-load
认知负荷才是最重要的

市面上有这么多流行术语和最佳实践,但让我们关注一些更基本的东西。重要的是开发人员在浏览代码时感到的困惑程度。
混乱会浪费时间和金钱。混乱是由高认知负荷引起的。它不是一些花哨的抽象概念,而是一种基本的人类约束。

由于我们花在阅读和理解代码上的时间远远多于编写代码的时间,因此我们应该不断问自己是否在代码中嵌入了过多的认知负荷。

认知负荷是指开发人员为了完成一项任务需要思考的量。

阅读代码时,你会把变量值、控制流逻辑和调用序列等内容记在脑子里。一般人的工作记忆中可以记住大约四个这样的内容。一旦认知负荷达到这个阈值,就需要付出巨大的努力才能理解事情。

假设我们被要求对一个完全不熟悉的项目进行一些修复。我们被告知一位非常聪明的开发人员为该项目做出了贡献。使用了许多很酷的架构、花哨的库和流行的技术。换句话说,前一位作者给我们带来了很高的认知负荷。

我们应该尽可能的减少项目中的认知负荷。

棘手的部分是,之前的作者可能由于熟悉该项目而没有经历较高的认知负荷。

认知负荷的类型

  • 内在性:由任务固有的难度引起。它无法降低,它是软件开发的核心。
  • 不相干性 : 由信息呈现方式产生。由与任务不直接相关的因素(例如聪明作者的怪癖)引起。可以大大减少。我们将重点关注这种类型的认知负荷。

具体:

  • 复杂条件
  • 嵌套 if
  • 继承噩梦
  • 太多小方法、类或模块
  • 太多浅显的微服务
  • 功能丰富的语言:通过限制选择的数量来减少认知负荷。
  • 业务逻辑和 HTTP 状态代码
  • 滥用 DRY 原则
  • 与框架紧密耦合
  • 六边形/洋葱架构:尽管这些分层架构加速了从传统的以数据库为中心的应用程序向某种程度上独立于基础设施的方法的重要转变,其中核心业务逻辑独立于任何外部事物,但这个想法绝不是新颖的。是更基本原则的主观、有偏见的结果。为什么要依赖那些主观解释?
  • 领域驱动设计:通用语言、领域、有界上下文、聚合、事件风暴都与问题空间有关。它们旨在帮助我们了解领域并提取边界。DDD 使开发人员、领域专家和业务人员能够使用单一、统一的语言进行有效沟通。人们说“我们用 DDD 编写代码”,这有点奇怪,因为 DDD 是关于问题空间的,而不是关于解决方案空间的。(banq注:作者忽视了 对问题的理解影响解决方案方向这个根本思维特点,悲观者正确,乐观者前行;科学家正确,资本家践行)

向巨人学习
看一看最大的科技公司之一的总体设计原则::

  • Clarity代码的目的和原理对读者来说很清楚。
  • Simplicity:代码以最简单的方式实现其目标。
  • Concision:代码很容易辨别相关细节,命名和结构引导读者了解这些细节。
  • Maintainability:未来的程序员很容易正确修改代码。
  • Consistency:代码与更广泛的代码库一致。
这个新潮的流行语是否符合这些原则?还是它所做的只是制造了额外的认知负担?

(banq注:认知负担与认知者自身的认知水平有关,智商低的傻瓜认知肯定低,因此,提高认知水平,降低做事带来的认知负担,双向努力才是解决之道,不能一味为了降低认知负担,退回石器时代,都不用上学就能生存)

8、YaFSDP
YaFSDP 是一个分片数据并行框架,旨在与类似变压器的神经网络架构配合使用。

相对于 FSDP 的优势

  • YaFSDP 在预训练 LLM 方面速度提高了 20%,并且在高内存压力条件下表现更佳。
  • 它旨在减少通信和内存操作开销。

9、Batcher
类型安全、自动、异步批处理。

Batcher是一个 Go 库,它提供了一种类型安全的简便方法,可以将任意项目组批量处理,以便自动和异步处理。项目可以是您想要传递给处理器的任何类型的项目。项目按组排队(使用字符串作为名称)。如果您不需要单独分组项目,可以为所有项目指定相同或空的组名。每组项目都会单独发送到您指定的处理器回调。

可以配置队列在以下任一情况下自动执行批处理操作:

  1. 自上次执行进程以来已过了指定的时间
  2. 排队的项目总数(所有组中)已超出给定的阈值
  3. 项目组数量已超过给定阈值

这个概念最初是为了处理 PubSub 消息面临的一些挑战而设计的,但对于这个库来说完全是通用的,因此可以用于任何目的。

通过唯一标识符(即用户 ID)对传入消息进行分组,以删除重复请求并确保给定的 pod 仅单独执行给定 ID 的操作。
将所有传入消息分组以批量导出到持久存储进行存档。

粗略地用代码来说明一个例子:

func main() {
    b, err := batcher.NewBatcher[*pubsub.Message](Config[*pubsub.Message]{
        GroupCountThreshold: 10,
        ItemCountThreshold:  100,
        DelayThreshold:      10 * time.Second,
        NumGoroutines:       3,
        Processor:           func(group string, items []*pubsub.Message) {
            err := doUserOperation(group)

            for _, m := range items {
                if err != nil {
                    m.Nack()
                } else {
                    m.Ack()
                }
            }
        },
    })


    // Consume the messages from PubSub
    err = subscription.Receive(ctx, func(ctx context.Context, message *pubsub.Message) {
       
// For this example, Data is the user ID
        b.Add(string(message.Data), message)
    })
}

10、ccwc
这个挑战是构建您自己的 Unix 命令行工具 wc 版本!

Unix 命令行工具是优秀软件工程的绝佳隐喻,它们遵循以下 Unix 哲学:

  • 编写通过清晰的接口连接的简单部分 - 每个工具只做一件事,并提供一个简单的 CLI 来处理来自文件或文件流的文本输入。
  • 设计程序以连接到其他程序 - 每个工具都可以轻松连接到其他工具,以创建功能极其强大的组合。
遵循这些理念,简单的 unix 命令行工具就成为最广泛使用的软件工程工具之一 - 使我们能够从简单的命令行工具创建非常复杂的文本数据处理管道。Coursera 甚至开设了有关 Linux 和 Bash 数据工程的课程。

您可以在优秀书籍《Unix 编程艺术》中阅读有关 Unix 哲学的更多信息。

11、warp
Warp 是一个用于编写高性能模拟和图形代码的 Python 框架。Warp 采用常规 Python 函数,并将它们 JIT 编译为可在 CPU 或 GPU 上运行的高效内核代码。

Warp 专为空间计算而设计,带有一组丰富的基元,可轻松编写用于物理模拟、感知、机器人技术和几何处理的程序。此外,Warp 内核是可微分的,可用作 PyTorch 和 JAX 等框架的机器学习管道的一部分。

12、pdf-to-podcast
该项目提供了一个将任何 PDF 文档转换为播客片段的工具!使用 OpenAI 的文本转语音模型和 Google Gemini,此工具可以处理 PDF 的内容,生成适合音频播客的自然对话,并将其输出为 MP3 文件。

特征

  • 将 PDF 转换为播客:上传 PDF 并将其内容转换为播客对话。
  • 引人入胜的对话:生成的对话旨在提供信息并具有娱乐性。
  • 用户友好界面:使用 Gradio 的简单界面,易于交互。


12、Aurora
Aurora 是一个用 Python 实现的静态站点生成器。

Aurora 站点默认包含几个目录:

  • _layouts:存储您网站的模板。
  • assets:存储静态文件,如图像、CSS 和 JavaScript。
  • posts:存储博客文章(可选)。
  • pages:存放要生成的静态页面。
新的 Aurora 站点将附带一个pages/index.html文件,您可以编辑该文件以开始使用。
建立您的网站(静态)

您可以通过运行该命令将您的站点构建为静态站点aurora build。
Aurora 根据您所在的目录进行工作。

默认情况下,Aurora 站点在根目录中具有以下结构:

  • pages:存储用于生成您的网站的所有页面的位置。
  • pages/_layouts:您可以在此存储用于生成网站的布局。
  • pages/_data:您可以在此处存储用于生成页面的 JSON 数据文件。有关如何使用此目录从数据文件生成页面的信息,请参阅本文档后面的“渲染数据集合”部分。
  • pages/posts:如果您将网站用作博客,则可以在此存储所有博客文章。文章目录将使用附加逻辑进行处理,以自动生成日期存档和类别存档页面(如果适用)。
您在 中创建的任何文件pages或 文件夹中pages(不包括_layouts和_data)都将呈现在您的网站上。例如,如果您创建一个pages/interests/coffee.html文件,这将生成一个名为 的页面_site/pages/interests/coffee/index.html。


13、Alga
用于远程控制 LG webOS 电视的 CLI

首次使用该实用程序时,您需要设置与电视的连接。打开电视后,运行alga setup [hostname/IP]。这将在电视上弹出提示,询问您是否要接受配对。接受后,Alga 即可使用。
如果没有提供主机名或 IP 地址alga setup,则默认尝试连接“lgwebostv”,这样应该可以工作。
主机名、密钥和 MAC 地址将被写入~/.config/alga/config.json以供将来使用。
注意:目前 Alga 一次只能与一台电视配对。如果这对您来说是一个问题,请告诉我。

14、Amphi
针对结构化和非结构化数据的低代码 ETL。生成可在任何地方部署的 Python 代码。

Amphi 专注于数据和 AI 管道的结构化和非结构化数据处理。它旨在使数据科学家和数据工程师能够使用直观的低代码界面轻松开发管道,同时生成可在任何地方部署的 Python 代码。

人工智能时代的开源 ETL:

  • ‍低代码:加速数据和 AI 管道开发并减少维护时间。
  •  Python 代码生成:利用可在任何地方运行的常用库(如pandasDuckDBLangChain )生成本机 Python 代码。
  • 私密和安全:在您的笔记本电脑或云端自行托管 Amphi,以确保您的数据完全保密和安全。
结构化和非结构化
  • 结构化- 从各种来源导入数据,包括 CSV 和 Parquet 文件以及数据库。使用聚合、过滤器、连接、SQL 查询等转换结构化数据。将转换后的数据导出到通用文件或数据库中。
  • 非结构化- 从 PDF、Word 文档和网站 (HTML) 中提取数据。执行解析、分块和嵌入处理。将处理后的数据加载到 Pinecone 和 ChromaDB 等矢量存储中。
  • 转换- 轻松将结构化数据转换为非结构化文档以用于矢量存储,反之亦然,适用于 RAG 管道。

15、textual-serve
每个文本应用程序现在都是一个 Web 应用程序。
只需 3 行代码,任何文本应用程序都可以在浏览器中运行。

创建服务器

首先导入服务器类:
from textual_serve.server import Server

然后创建一个Server实例并传递启动文本应用程序的命令:
server = Server("python -m textual")

该命令可以是您在 shell 中输入的任何内容,只要它导致文本应用程序运行即可。

最后调用serve方法:
server.serve()

您现在可以点击终端中的链接在浏览器中运行您的应用程序。

16、django-render
Django Render 允许您构建由 Django 视图支持的完全客户端渲染的 React 应用程序。它还支持 Django 表单、会话身份验证和消息。
主要特征

  • 使用 Django 的 URL 路由、视图和表单构建 React 应用程序
  • 使用快速、反应灵敏的用户界面构建 Django 应用程序
  • 在覆盖层中打开 URL 以构建模态界面
  • 支持 Storybook 和 Vite 热模块重新加载


17、TokenCost
Tokencost 通过计算提示和完成的估计成本来帮助计算使用主要大型语言模型 (LLM) API 的美元成本。

构建 AI 代理?查看AgentOps
特征

  • LLM 价格跟踪主要 LLM 提供商经常添加新模型并更新价格。此 repo 可帮助跟踪最新的价格变化
  • 令牌计数在发送 OpenAI 请求之前准确计算提示令牌
  • 轻松集成通过单一功能获取提示或完成的成本

from tokencost import calculate_prompt_cost, calculate_completion_cost

model = "gpt-3.5-turbo"
prompt = [{
"role": "user", "content": "Hello world"}]
completion =
"How may I assist you today?"

prompt_cost = calculate_prompt_cost(prompt, model)
completion_cost = calculate_completion_cost(completion, model)

print(f
"{prompt_cost} + {completion_cost} = {prompt_cost + completion_cost}")
# 0.0000135 + 0.000014 = 0.0000275


18、AI-Math-Notes
AI Math Notes 是一款交互式绘图应用程序,允许用户在画布上绘制数学方程式。绘制方程式后,该应用程序使用多模态 LLM 计算结果并将其显示在等号旁边。该应用程序使用 Python 构建,使用 Tkinter 库作为图形用户界面,使用 PIL 进行图像处理。灵感来自 Apple在 WWDC 2024 上的“Math Notes”演示