本週18個Github有趣專案如Dozzle等

banq發表於2024-06-21

本週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 影片的操作來加快渲染速度
  • 更好的音訊支援:我們在渲染過程中啟用了從<Video/>標籤匯出音訊,並且還新增了一個<Audio/>標籤,可以輕鬆地將音訊與動畫同步。

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()
                }
            }
        },
    })


    <font>// Consume the messages from PubSub<i>
    err = subscription.Receive(ctx, func(ctx context.Context, message *pubsub.Message) {
       
// For this example, Data is the user ID<i>
        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 = <font>"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”演示
 

相關文章