《HelloGitHub》第 83 期

語言: CN / TW / HK

興趣是最好的老師,HelloGitHub 讓你對編程感興趣!

簡介

HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。

http://github.com/521xueweihan/HelloGitHub

這裏有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對編程產生興趣!


以下為本期內容|每個月 28 號更新

C 項目

1、sds:簡單的 C 語言動態字符串庫。Redis 作者寫的 C 語言字符串庫,它相較於 C 字符串,使用起來更加方便。具有速度快(常數複雜度獲取字符串長度)、二進制安全(圖片、音頻等)、兼容部分 C 字符串函數等特點。 ```c sds mystring = sdsnew("Hello World!"); printf("%s\n", mystring); sdsfree(mystring);

output> Hello World! ```

2、sigma-file-manager:一款先進的文件管理器。這是一款免費的文件管理器,由開源社區維護。支持智能搜索、自定義主頁、文件共享、文件下載、智能拖放、文件保護等功能,適用於 Windows 和 Linux。

3、ttyd:簡單的網絡共享終端的命令行工具。基於 libuv 和 WebGL2 構建的 Web 共享終端工具,安裝簡單使用方便,支持 SSL、文件傳輸、Sixel 圖像輸出等功能。可運行在 Windows、macOS、Linux、OpenWrt 等操作系統上,適用於遠程運維、在線管理設備等場景。

C# 項目

4、ambie:Windows 上的白噪聲應用。一款播放白噪聲和自然聲音的應用,比如下雨、海灘等聲音,支持混合、在線下載聲音和專注功能。工作時使用可以幫助你集中注意力,還能在放鬆時使用有助於睡眠。

5、FluentTerminal:炫酷的 Windows 終端軟件。基於 UWP 的 Windows 終端應用,擁有強大的自定義主題模塊,能夠輕鬆定製出風格各異的主題。提供了中文選項,支持多窗口、SSH 和搜索等功能。

6、gsudo:適用於 Windows 的 sudo 命令行工具。它是 Windows 上的 sudo,允許用户以最高權限運行命令,擁有與 Unix/Linux sudo 類似的使用體驗,支持 CMD、PowerShell、git-bash 等。

C++ 項目

7、Clipboard:小巧便捷的命令行剪貼板。一款用 C++ 編寫的剪貼板工具,可以在終端的任何地方複製、剪切和粘貼東西,使用起來就像 GUI 一樣方便,相見恨晚的命令行工具,適用於 Windows、Linux 和 macOS 操作系統。

8、doctest:超快的 C++ 單頭文件測試框架。這是一款輕量級、快速的 C++ 測試框架,它使用起來十分方便,引入頭文件即可使用,而且速度快、編譯時間短,支持 C++ 11/14/17/20。 ```c++

define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN

include "doctest.h"

int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }

TEST_CASE("testing the factorial function") { CHECK(factorial(1) == 1); CHECK(factorial(2) == 2); CHECK(factorial(3) == 6); CHECK(factorial(10) == 3628800); } ```

9、pocketpy:為嵌入遊戲引擎而設計的 Python 解釋器。一個 C++ 實現的輕量級的 Python 解釋器,包含一個編譯器和基於字節碼的虛擬機,以及交互式命令窗的實現。所有功能均集成在單個頭文件 pocketpy.h 中,不包含外部依賴項可以很方便地嵌入應用,立刻擁有執行 Python 代碼的能力。 ```c

include "pocketpy.h"

int main(){ // 創建一個虛擬機 VM* vm = pkpy_new_vm(true);

// Hello world!
pkpy_vm_exec(vm, "print('Hello world!')");

// 構建一個列表
pkpy_vm_exec(vm, "a = [1, 2, 3]");

// 對列表進行求和
char* result = pkpy_vm_eval(vm, "sum(a)");
printf("%s", result);   // 6

// 釋放資源
pkpy_delete(result);
pkpy_delete(vm);
return 0;

} ```

10、QGIS:自由開源的桌面 GIS 軟件。該項目採用 C++ 語言編寫,GUI 部分使用的是 Qt 庫。它提供了 GIS 數據可視化、編輯和分析的功能,支持多種 GIS 數據格式,適用於 Windows、Linux、macOS、BSD 和移動設備。

Go 項目

11、Dragonfly2:一款基於 P2P 的智能鏡像和文件分發工具。它提供了高效、穩定、安全的基於 P2P 技術的文件分發和鏡像加速系統,能夠提高大規模文件傳輸的效率和速率,最大限度地利用網絡帶寬,適用於應用分發、緩存分發、日誌分發和鏡像分發等領域。

12、ghz:簡單的 gRPC 壓測工具。一款用 Go 開發的專門用來壓測 gRPC 服務的命令行工具,它使用簡單、高效、支持自定義參數。

13、req:帶黑魔法的 Go HTTP 客户端。該庫默認就很智能,比如自動解碼成 UTF-8 以避免亂碼、根據 Content-Type 自動解析響應、自動檢測服務器端並選擇最優的 HTTP 協議、自動重試等,除此之外還提供了強大且便捷的調試功能。 ```go package main

import ( "github.com/imroc/req/v3" )

func main() { req.DevMode() // Treat the package name as a Client, enable development mode req.MustGet("http://httpbin.org/uuid") // Treat the package name as a Request, send GET request.

req.EnableForceHTTP1() // Force using HTTP/1.1
req.MustGet("http://httpbin.org/uuid")

} ```

14、sqlc:將 SQL 轉成類型安全的 Go 代碼的工具。它可以將輸入的 SQL 語句,自動轉化成類型安全、可讀的操作數據庫的 Go 代碼,支持 MySQL、PostgreSQL 和 SQLite 數據庫。

15、tinykv:構建分佈式 Key-Value 數據庫的教程。介紹瞭如何用 Go 語言實現一個高可用、可水平擴展、支持分佈式事務的鍵-值存儲服務。

Java 項目

16、bt:一個 Java 的 BitTorrent 庫。支持 DHT、磁力鏈接、加密等功能的 Java 庫,可以根據自己的喜好開發和定製 BT 工具,比如播種、下載種子等。 java // Create a torrent Path torrentRoot = Paths.get("/home/torrents/mytorrent"); Path file1 = Paths.get("/home/torrents/mytorrent/file1.bin"); Path file2 = Paths.get("/home/torrents/mytorrent/file2.bin"); Path dirToAdd = Paths.get("/home/torrents/mytorrent/dir_with_files"); byte[] torrentBytes = new TorrentBuilder() .rootPath(torrentRoot) .addFiles(file1, file2, dirToAdd) .announce("http://example.com/announce") .build(); Files.write(Paths.get("/home/torrents/mytorrent.torrent"), torrentBytes);

17、RoaringBitmap:更好用的 Java 壓縮位圖數據結構。位圖常用於大數據集的快速查找和去重,該項目提供的 RoaringBitmap 是一種壓縮位圖,相較於傳統的位圖數據結構,它更快、更節省內存,而且久經沙場值得信賴,比如 Spark、Hive 等知名項目上都有它的身影。 ```java import org.roaringbitmap.RoaringBitmap;

public class Basic {

public static void main(String[] args) { RoaringBitmap rr = RoaringBitmap.bitmapOf(1,2,3,1000); RoaringBitmap rr2 = new RoaringBitmap(); rr2.add(4000L,4255L); rr.select(3); // would return the third value or 1000 rr.rank(2); // would return the rank of 2, which is index 1 rr.contains(1000); // will return true rr.contains(7); // will return false

    RoaringBitmap rror = RoaringBitmap.or(rr, rr2);// new bitmap
    rr.or(rr2); //in-place computation
    boolean equals = rror.equals(rr);// true
    if(!equals) throw new RuntimeException("bug");
    // number of values stored?
    long cardinality = rr.getLongCardinality();
    System.out.println(cardinality);
    // a "forEach" is faster than this loop, but a loop is possible:
    for(int i : rr) {
      System.out.println(i);
    }

} } ```

JavaScript 項目

18、chatgpt-web:一款可自定義 API 的 ChatGPT 演示網頁。基於 Express 和 Vue3 構建的 GPT-3 模型演示網頁,支持接入 GPT-3 API 或網頁 ChatGPT。

19、illa-builder:一款靈活、清秀的低代碼平台。由國內團隊開源的低代碼平台,它更新積極、處理反饋及時。功能上內置圖表、表格、表單等數十種常用組件,直接拖拽即可使用。還支持 GUI 連接數據庫或 API,分分鐘構建出企業內部應用,支持在線、雲服務和 Docker 本地部署多種使用方式。

20、memos:一款清爽的輕量級備忘錄中心。採用 React+Tailwind+TypeScript+Go 開發的備忘錄中心,相當於極簡的微博。支持私有/公開備忘錄、標籤、互動式日曆等功能,以及 Docker 部署。 shell docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest

21、SingleFile:用於網頁存檔的瀏覽器擴展。可實現一鍵下載網頁,能夠將網頁上的文字、圖片等內容,完整地整合到單個 HTML 文件裏,支持 Chrome、Firefox、Safari、Microsoft Edge 等主流瀏覽器。

22、zx:Bash 很好但我選擇用 JavaScript 寫腳本。實現用 JavaScript 寫 shell 腳本的工具,支持 cd、fetch、within 等函數,無需引入就可以使用 fs、os、yaml 等庫。 ```shell

!/usr/bin/env zx

await $cat package.json | grep name

let branch = await $git branch --show-current await $dep deploy --branch=${branch}

await Promise.all([ $sleep 1; echo 1, $sleep 2; echo 2, $sleep 3; echo 3, ])

let name = 'foo bar' await $mkdir /tmp/${name} ```

Kotlin 項目

23、ReadYou:一款 Material 風格的 Android RSS 閲讀器。界面簡潔清爽的 RSS 閲讀器,支持訂閲 RSS 鏈接、更新通知、沉浸式閲讀等功能

Python 項目

24、edgedb:一款採用圖-關係模型的新型開源數據庫。一個底層由 PostgreSQL 提供支持的開源數據庫,在兼容關係數據庫特性的同時,結合了 ORM 的聲明模式和 GraphQL 式的深度查詢。自帶 WebUI 界面,支持在線編輯數據、查詢、關係可視化等功能。 ``` type Person { required property name -> str; }

type Movie { required property title -> str; multi link actors -> Person; } ```

25、eg:常用的 Linux 命令示例查詢工具。它提供了 Linux 命令的常見用法,不僅使用方便而且示例簡潔實用。

26、manim:用於創建數學動畫的 Python 框架。它可以用簡單的代碼製作出精美的數學動畫,通過動畫的方式直觀地解釋一些複雜的數學問題。 ```python from manim import *

class SquareToCircle(Scene): def construct(self): circle = Circle() square = Square() square.flip(RIGHT) square.rotate(-3 * TAU / 8) circle.set_fill(PINK, opacity=0.5)

    self.play(Create(square))
    self.play(Transform(square, circle))
    self.play(FadeOut(square))

運行:manim -p -ql example.py SquareToCircle

```

27、sunfish:100 多行代碼的 Python 國際象棋引擎。一個僅用 Python 標準庫和 131 行代碼實現的命令行國際象棋遊戲。它註釋豐富結構清晰,核心代碼由國際象棋邏輯、策略搜索和用户界面三個部分組成。

28、xalpha:Python 寫的基金投資管理回測引擎。該項目可以獲取基金的信息與淨值,支持精確到分的投資賬户記錄整合、分析和可視化,簡單的策略回測以及根據預設策略的定時投資提醒,適合資金反覆進出的定投型和網格型投資者。 python jiaoyidan = xa.record(path) # 額外一行先讀入 path 處的 csv 賬單 shipan = xa.mul(status=jiaoyidan) # Let's rock shipan.summary() # 看所有基金總結效果 shipan.get_stock_holdings() # 查看底層等效股票持倉

Rust 項目

29、lemmy:Rust 寫的鏈接聚合論壇。該項目基於 Rust 的 Web 框架 Actix 和 Diesel ORM 庫構建,它是一個類似 Hacker News 的網站,用户可以在上面訂閲感興趣的話題、發佈鏈接、討論和投票。

30、onefetch:查看 Git 倉庫信息的命令行工具。一款由 Rust 編寫的命令行查看 Git 信息的工具,它可以直接在終端中展示本地 Git 倉庫的詳細信息,比如開源協議、提交次數、代碼統計等信息。

31、windows-rs:Rust 調用 Windows API 的庫。由微軟開源的 Rust 庫,為 Rust 開發人員調用 Windows API 提供了方便,極大地改善了 Rust 語言在 Windows 系統上的開發條件。 ```rust use windows::{ core::, Data::Xml::Dom::, Win32::Foundation::, Win32::System::Threading::, Win32::UI::WindowsAndMessaging::*, };

fn main() -> Result<()> { let doc = XmlDocument::new()?; doc.LoadXml(h!("hello world"))?;

let root = doc.DocumentElement()?;
assert!(root.NodeName()? == "html");
assert!(root.InnerText()? == "hello world");

unsafe {
    let event = CreateEventW(None, true, false, None)?;
    SetEvent(event).ok()?;
    WaitForSingleObject(event, 0);
    CloseHandle(event).ok()?;

    MessageBoxA(None, s!("Ansi"), s!("Caption"), MB_OK);
    MessageBoxW(None, w!("Wide"), w!("Caption"), MB_OK);
}

Ok(())

} ```

Swift 項目

32、Wave:輕鬆實現絲滑動畫的 Swift 庫。用於 iOS 和 macOS 的動畫引擎庫,可以輕鬆創建流暢、感覺很棒的動畫。它沒有外部依賴,可以很容易地引入進基於 UIKit、SwiftUI 或 AppKit 的項目。 ```swift if panGestureRecognizer.state == .ended {

// Create a spring with some bounciness. `response` affects the animation's duration.
let animatedSpring = Spring(dampingRatio: 0.68, response: 0.80)

// Get the gesture's lift-off velocity, and pass it into the Wave animation.
let gestureVelocity = panGestureRecognizer.velocity(in: view)

Wave.animate(withSpring: animatedSpring, gestureVelocity: gestureVelocity) {
    // Update animatable properties on the view's `animator` property, _not_ the view itself.
    pipView.animator.center = pipViewDestination     // Some target CGPoint that you calculate.
    pipView.animator.scale = CGPoint(x: 1.1, y: 1.1)
}

} ```

其它

33、blurhash:開源的圖片佔位符算法和實現。該算法可將圖片編碼成一段僅 20-30 個字符的短字符串,解碼後可展示一張基於原圖的佔位圖,從而提升用户的訪問體驗。官方提供了 C、Swift、TypeScript 等編程語言的實現,除此之外還有豐富的第三方庫。

34、esp32-weather-epd:自制電子墨水屏的天氣顯示器。這是由一塊支持 WiFi 的 ESP32 單片機和一個 7.5 英寸電子墨水屏組成的天氣顯示器。它能夠展示通過 API 獲得的天氣實況和預報,以及傳感器提供的室內温度和濕度。

35、localsend:AirDrop 的開源替代方案。可以通過本地網絡與附近的設備,安全地共享文件和消息,此過程不需要互聯網,不需要外部服務器,支持 Windows、Linux、macOS、Android、iOS 設備。

36、mactype:美化 Windows 字體的工具。一款 Windows 字體美體工具,可以解決 Windows 字體虛化的問題,實現類似蘋果 macOS 系統的字體渲染效果,安裝簡單效果驚人。

37、raft.github.io:一個關於 Raft 共識算法的網站。該網站收錄了關於 Raft 的論文、課程、書籍等資料,以及相關開源項目和 Raft 的運行情況可視化,幫你徹底搞懂 Raft。

開源書籍

38、algorithmica:《現代硬件的算法》。該書來自俄羅斯非營利性的教育組織 Tinkoff Generation,它培養了大約一半的俄羅斯奧林匹克信息學決賽選手。不管你是算法研究員還是學生,這本書都可以讓你學到更多提升程序性能的實用方法。

39、comprehensive-rust:《Comprehensive Rust》為期四天的 Rust 課程。這是谷歌 Android 團隊使用的 Rust 課程,它涵蓋了 Rust 的基本語法到高級主題,如泛型和錯誤處理,還包括最後一天的 Android 特定內容。

40、scientific-visualization-book:《科學可視化:Python+Matplotlib》。這是一本關於使用 Python 和 Matplotlib 進行科學可視化的開源書籍。該書分為四個部分:第一部分 Matplotlib 庫的基本原理,第二部分致力於實戰開發,第三部分是更高級的概念,即 3D 圖形、優化和動畫,第四部分是展示集合。

機器學習

41、cog:將機器學習模型打包到容器的工具。可通過配置將機器學習模型所需的環境和依賴,自動打包到容器裏方便部署,讓你不再為編寫 Docker 文件和 CUDA 而痛苦,還能自動啟動 HTTP 接口服務方便調用。 ```shell $ cog build -t my-colorization-model --> Building Docker image... --> Built my-colorization-model:latest

$ docker run -d -p 5000:5000 --gpus all my-colorization-model

$ curl http://localhost:5000/predictions -X POST \ -H 'Content-Type: application/json' \ -d '{"input": {"image": "http://.../input.jpg"}}' ```

42、stable-diffusion-webui:Stable Diffusion 模型的 WebUI 界面。這是一個實現在瀏覽器上使用的 Stable Diffusion 模型的項目,支持通過文本/圖片生成圖片、嵌入文本、調整圖片大小等功能。

最後

如果你發現了 GitHub 上有趣的項目,就點擊這裏分享給大傢伙吧!

以上就是本期的所有內容了,往期內容點擊閲讀

感謝您的閲讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️