Dockerc等本週Github上有趣專案

banq發表於2024-03-16

本週Github上有趣的專案、工具和庫

1、dockerc
將 docker 映像編譯為獨立的可移植二進位制檔案。

不再需要docker run,不需要pip install,不需要npm i,只需為您的使用者提供他們可以執行的可執行檔案!

特點:

  • 將 docker 映象編譯為可移植的二進位制檔案
  • 無根容器
  • MacOS 和 Windows 支援(使用 QEMU)
  • x86_64 支援
  • ARM64支援
  • 支援論點
  •  支援使用指定環境變數-e
  •  支援使用指定卷-v


從最新版本安裝 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::*;

<font>//設定圖形和張量<i>
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...<i>
let mut c = a.matmul(b).retrieve();

// 編譯和執行圖形<i>
cx.compile(<(GenericCompiler, CPUCompiler)>::default(), &mut c);
cx.execute();

// Get result<i>
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 。
  • 隨處執行 - 瀏覽器、無伺服器平臺和裸機。
  • 可擴充套件 - 為任何語言的編譯器編寫擴充套件。

相關文章