開源月刊《HelloGitHub》第 77 期

語言: CN / TW / HK

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

簡介

HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。

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

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


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

C 專案

1、EasyLogger:超輕量級 C/C++ 日誌庫。佔用資源少適合物聯網和微控制器等專案,功能簡單容易上手,能夠通過外掛形式擴充套件功能。特性:

  • 支援終端、檔案、串列埠、Flash 等多種輸出方式
  • 支援多種作業系統
  • 執行緒安全
  • 不同顏色顯示

2、foolrenderer:用 C 語言從零實現的軟體渲染器。不用圖形 API 僅用幾千行 C 程式碼,實現了一套類似 OpenGL 的基本圖形功能,以及應用於遊戲開發的實時渲染技術,如陰影、切線空間法線對映、基於物理的材質系統等。該專案包含豐富的註釋和數學計算推導過程的說明,可用於幫助理解和學習 GPU 的基本工作原理、基礎渲染知識和著色器原理。

3、unicorn:輕量級的多平臺、多架構 CPU 模擬器框架。基於 QEMU 開發的 CPU 模擬器,多用於逆向、執行惡意程式碼等。特點:

  • 多架構:ARM、ARM64、RISC-V、TriCore 等
  • 多種程式語言:Python、Rust、Java、Go、JS 等
  • 支援各種級別的細粒度檢測

C# 專案

4、Bili.Uwp:非官方的 B 站桌面應用。基於 UWP 框架開發的嗶哩嗶哩 Windows 客戶端,簡單易用、介面清爽,適用於 Windows 10/11 桌面系統和 Xbox。

C++ 專案

5、Stockfish:強大的國際象棋引擎。它在眾多國際象棋引擎評級列表中均名列前茅,棋藝基本上是吊打職業選手。它不僅可以對戰,還支援棋局分析、評估棋藝,幫助國際象棋愛好者提升棋技。雖然這是一個引擎不能單獨執行,但是社群提供了豐富的 GUI 軟體下載就能用,甚至還可以用來解說國際象棋比賽。

6、annoy:用於近似最近鄰搜尋的演算法庫。近似最近鄰(ANN)方法是指一系列解決最近鄰查詢問題的近似演算法,多用於內容推薦、搜尋等場景。該專案是封裝好的 C++/Python Annoy 演算法庫。Annoy 是用樹為資料結構的 ANN 演算法實現,它通過隨機投影建立二叉樹構建索引提升查詢效率,採用優先佇列和“森林”查詢方法提高準確率,實現海量資料下的實時搜尋。

from annoy import AnnoyIndex
import random

f = 40  # Length of item vector that will be indexed

t = AnnoyIndex(f, 'angular')
for i in range(1000):
    v = [random.gauss(0, 1) for z in range(f)]
    t.add_item(i, v)

t.build(10) # 10 trees
t.save('test.ann')

# ...

u = AnnoyIndex(f, 'angular')
u.load('test.ann') # super fast, will just mmap the file
print(u.get_nns_by_item(0, 1000)) # will find the 1000 nearest neighbors

7、xbmc:強大自由的媒體中心軟體。這是一個媒體播放器軟體,但折騰一下就是家庭媒體娛樂中心。它不僅支援播放本地視訊,還能夠安裝各種外掛以及播放網路儲存裝置(NAS)、投屏、直播、電視、播客等源。能夠執行在 Linux、macOS、Windows、Android、iOS 等裝置,介面支援中文更多功能等待你的挖掘。

8、RedPanda-CPP:易用的輕量級 C/C++ 整合開發環境。小熊貓 C++ 是一款專為程式設計新手和學生準備的 IDE,它沒有複雜的安裝和配置過程開箱即用。支援開發所需的自動補全、語法高亮、編譯執行和除錯 C/C++ 程式等功能。不僅如此,它還整合了 ege、海龜作圖、raylib 等多種學習庫,以及試題集和 OJ 功能,便於程式設計新手學習和使用。

CSS 專案

9、Cnblogs-Theme-SimpleMemory:一款以閱讀為主的部落格園面板。部落格園是一個部落格平臺,它支援使用者自定義面板。該專案就是一款開源的部落格園面板,文件有詳細的安裝步驟,一看就會立馬就能用上。雖然面板會讓部落格的訪問速度變慢一點,但是面板效果簡潔好看值得一試。

Go 專案

10、bk-cmdb:騰訊開源的配置平臺。面向資產及應用的企業級配置管理平臺,擁有主機管理、組織架構管理、通用許可權管理、操作審計等功能。該專案的程式碼稽核很嚴格,此舉不僅保證了專案的程式碼質量,還提高了程式碼的可讀性,推薦閱讀原始碼。

11、nightingale:開源的雲原生監控系統。支援 Docker 等多種部署方式,集資料採集、監控告警、視覺化為一體的企業級監控平臺。藉助高效能時序庫,可以滿足數億時間線的採集、儲存和告警分析的場景。該專案已在上千家企業部署落地,經歷了各種生產環境的檢驗。

12、CasaOS:簡單易用的家庭雲系統。只需一鍵即可安裝在 NAS、樹莓派等各種家庭智慧裝置上,讓你可以隨時隨地管理個人資料和裝置。

13、ddns-go:簡單易用的 DDNS 工具。眾所周知域名解析中域名對應的是固定 IP,但是本地機器的 IP 一般是動態的,所以無法完成域名解析實現公網訪問。動態 DNS(DDNS) 技術就是用來解決動態 IP 的域名解析問題,該專案能夠自動獲取你本機的公網 IP,並自動更新到域名服務商,從而實現公網訪問本地機器。

14、colly:可能是最知名的 Go 爬蟲框架。它擁有友好的 API 和豐富程式碼示例,短時間內即可上手。效能方面單核能達到 1K 請求/秒,還可以輕鬆管理請求方式、間隔和最大併發數,功能強大且優雅。

func main() {
	c := colly.NewCollector()

	// Find and visit all links
	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
		e.Request.Visit(e.Attr("href"))
	})

	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL)
	})

	c.Visit("https://go-colly.org/")
}

Java 專案

15、plantuml:從文字描述生成 UML 圖的工具。該專案可根據簡單的文字描述畫出 UML 圖,支援順序圖、用例圖、時序圖等,除此之外還支援架構圖、甘特圖、思維導圖、實體關係圖等非 UML 圖。支援線上、命令列、桌面應用等多種使用方式,可根據情況自行選擇。

java -jar plantuml.jar 文字檔案
將得到一個同名的 png 檔案

16、doris:高效能的分析資料庫。一個基於 MPP 架構的高效能、實時的分析型資料庫,尤其是在海量資料和高併發場景下表現優異。目前,在眾多知名企業中均有使用,可用來構建使用者分析、日誌檢索分析、使用者畫像等應用。

JavaScript 專案

17、koodo-reader:先進的電子書閱讀工具。該閱讀器支援 EPUB、Kindle、PDF、漫畫等多種常見文字格式,介面清爽功能豐富,擁有自定義字型、新增筆記、書籤、劃詞翻譯、匯入圖書、資料同步等功能。提供了 Windows、macOS 和 Linux 客戶端,還支援網頁版可線上使用。

18、video.js:流行的 HTML5 視訊播放器。一款開箱即用的 Web 視訊播放器,它支援 HTML5 視訊和流媒體格式,至今有超過 45 萬個網站在使用它。

19、vue-idle-game:掛機放置類小遊戲。用 Vue.js 寫的線上 RPG 遊戲,裝備完全隨機全靠刷,沒有任務就是刷。

20、nocobase:易擴充套件的無程式碼開發平臺。這個專案可以讓你不寫程式碼,僅通過點選和拖拽,分分鐘搭建出協作和內部管理系統。專案還處於早期開發階段,請勿用於生產環境。

21、van-blog:實用的一站式個人部落格系統。一款簡潔優雅的部落格系統,追求極致響應速度和部落格體驗。前後臺均為響應式,支援 Docker 一鍵部署。前臺為靜態頁面並支援增量渲染,按需構建更新頁面。拒絕花裡胡哨的功能,專注於個人部落格場景。

Kotlin 專案

22、Unciv:一款類似《文明》的單機策略手遊。僅 6M 的回合制策略遊戲,玩家可以在遊戲中模擬建立帝國文明,相當於開源版的《文明》安卓手遊。雖然遊戲畫面是畫素風格,但並未影響遊戲體驗,遊戲支援中文、內容豐富可玩性非常高。

Python 專案

23、dooit:命令列待辦事項工具。用 Python 寫的互動式命令列 todo 工具,操作簡單支援快捷鍵和滑鼠,介面精緻可自定義主題和圖示。

24、gradio:用 Python 為模型建立演示介面。這是一個用於構建機器學習和資料科學演示的 Python 庫,它包含多種輸入和展示的元件,使用起來極其方便,只用幾行程式碼就可以創建出演示機器學習模型的 Web 介面。

import gradio as gr
def sketch_recognition(img):
    pass# Implement your sketch recognition model here...

gr.Interface(fn=sketch_recognition, inputs="sketchpad", outputs="label").launch()

25、label-studio:開源的資料標註工具。支援音訊、文字、影象、視訊、時間序列等,多種型別資料的標註和註釋工具。

# 安裝
pip install -U label-studio
# 執行
label-studio

26、whoogle-search:自架純淨谷歌搜尋服務。這是一個注重保護使用者隱私的元搜尋引擎,它會返回過濾掉廣告後的 Google 搜尋結果,而且不追蹤 IP、不存 Cookie。支援 Docker 部署既簡單又快速,適合注重隱私的使用者。

27、nas-tools:NAS 媒體庫資源自動整理工具。支援資源檢索和訂閱、媒體庫整理和通知服務的 NAS 媒體庫工具,這是一個用愛發電的專案,可以不愛但請不要傷害。

28、libtmux:用 Python 操作 tmux 的庫。通過該專案就可以使用 Python 程式碼,自動操控 tmux 應用的會話、視窗、窗格。

import libtmux
server = libtmux.Server()
server.list_sessions()
# [Session($3 foo), Session($1 libtmux)]

Rust 專案

29、cheats.rs:Rust 程式語言小抄。這裡不僅有 Rust 基礎語法,還有執行順序詳解和編寫時需要關注的注意事項。如果你覺得還不夠,該專案還包含了示例程式碼(EX)、書籍(BK)、標準庫(STD) 等 Rust 相關資料。

30、py-spy:用 top 的方式分析 Python 程式效能的工具。一款 Python 程式效能分析工具,它可以讓你在不重啟程式或修改程式碼的情況,直觀地看到 Python 程式中每個函式花費的時間。

# 安裝
pip install py-spy

# record 命令將配置檔案記錄到檔案中,可用來生成火焰圖
py-spy record -o profile.svg --pid 程序ID

# top 命令實時展示函式花費時間
py-spy top --pid 程序ID

# dump 命令顯示每個 Python 執行緒的當前呼叫堆疊
py-spy dump --pid 程序ID

31、reqwest:Rust 語言的 HTTP 客戶端。純 Rust 編寫的 HTTP 客戶端,簡單好用、支援非同步、API 友好。

use std::collections::HashMap;

fn main() -&gt; Result&lt;(), Box<dyn std::error::error>&gt; {
    let resp = reqwest::blocking::get("https://httpbin.org/ip")?
        .json::<hashmap<string, string>&gt;()?;
    println!("{:#?}", resp);
    Ok(())
}

Swift 專案

32、SwiftMessages:一個非常靈活的 iOS 訊息庫。用 Swift 編寫的訊息元件,它可以將訊息靈活地顯示在螢幕頂部、底部、中央,還提供了幾款好看的佈局和主題,拿來即用十分方便。

// 例化一個訊息檢視
let view = MessageView.viewFromNib(layout: .cardView)

// 帶有警告樣式的主題訊息元素
view.configureTheme(.warning)

// 增加陰影
view.configureDropShadow()

// 設定訊息標題、正文和圖示
let iconText = ["🤔", "😳", "🙄", "😶"].randomElement()!
view.configureContent(title: "Warning", body: "Consider yourself warned.", iconText: iconText)

// 增加卡片周圍的外部邊距
view.layoutMarginAdditions = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)

// 顯示訊息
SwiftMessages.show(view: view)

33、MonitorControl:控制 macOS 外接顯示器的工具。一款 macOS 多顯示器控制工具,有了它就能夠在選單欄或使用快捷鍵,輕鬆地控制外接顯示器的音量、亮度、對比度。

其它

34、sql-injection-payload-list:關於 SQL 注入知識的集合。該專案解釋了什麼是 SQL 注入和一些常見的例子,以及如何發現、利用、防範各種 SQL 注入漏洞。

35、system-design:系統設計從入門到面試。該教程從基礎協議講起,然後介紹常見的資料庫、訊息佇列等服務,最後是面試和實際的案例分析。內容循序漸進、圖文並茂,強烈推薦大家學習。

36、all-contributors:表彰非程式碼貢獻者的工具。這是一個 GitHub 機器人,可以在 issues 使用指令,將貢獻者增添到專案首頁,進行展示和表彰。

37、gibMacOS:macOS 系統下載工具。通過 Python 指令碼直接下載 macOS 系統檔案,可用來製作 macOS 安裝映象。

38、mackup:自動同步應用程式設定的工具。能夠幫你快速備份、同步 macOS 和 Linux 上應用配置檔案的工具,包括 Zsh、Vim、iTerm2、MySQL 在內的多種開發相關應用,還支援 Dropbox、iCloud、Git 等豐富的同步方式。

# 安裝
brew install mackup
# 備份
mackup backup
# 恢復
mackup restore

開源書籍

39、EffectiveModernCppChinese:《Effective Modern C++》中文翻譯版。教你如何寫出正確、高效、可維護的 C++ 程式碼的書,該專案為中文翻譯版本(已完成)。

40、babel-handbook:Babel 使用手冊。內容分為「使用者手冊」如何安裝和配置 Babel 和「外掛手冊」如何為 Babel 建立外掛 兩部分。

機器學習

41、mmdetection:OpenMMLab 開源的目標檢測工具箱。基於 PyTorch 的目標檢測開源工具箱,支援 Faster R-CNN、Mask R-CNN、RetinaNet 等主流演算法。

42、fauxpilot:自建 GitHub Copilot 服務。它採用 NVIDIA 的 Triton Inference Server 的 SalesForce CodeGen 模型,自建 AI 編碼輔助服務。支援接入 VSCode Copilot 外掛,使用起來十分方便。

最後

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

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