《HelloGitHub》第 102 期

削微寒發表於2024-09-27

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

簡介

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

github.com/521xueweihan/HelloGitHub

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


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

C 專案

1、Ditto:Windows 的剪貼簿歷史管理工具。這是一款免費的 Windows 剪貼簿增強工具。它能夠將複製到剪貼簿的內容儲存到資料庫中(SQLite),方便日後檢索,支援設定儲存日期、條目總數、合併貼上、分組、快速搜尋和熱鍵貼上等功能。此外,還可以透過網路共享剪貼簿內容,並對傳輸資料進行加密保護。來自 @Veeja Liu 的分享

2、FlappyBird:僅 100KB 的憤怒小鳥遊戲。該專案是用 C 語言編寫的憤怒小鳥遊戲(Flappy Bird),它執行流暢、安裝包不到 100KB,適用於 Android 5.1 及以上系統。

3、system-bus-radio:用電腦輕鬆發射無線電訊號。該專案透過控制計算機系統匯流排在特定頻率上切換電流,實現了無需額外硬體裝置,僅用電腦傳送 AM 無線電訊號的功能。

C# 專案

4、eShop:開源的 .NET 電商平臺。該專案是由 .NET 官方開源的電子商務平臺,基於 .NET Aspire 構建。作為示例專案,它採用最新的 .NET 8 和微服務架構,並實現了核心的電商功能。

5、Loaf:假裝 Windows 更新的工具。這是一款專為摸魚設計的小工具。點選“摸魚”按鈕後,它會顯示 Windows Update 介面,營造電腦正在升級的假象,讓你能夠名正言順地摸魚。來自 @劉睿華 的分享

C++ 專案

6、alien:強大的人工生命模擬工具。該專案是基於 CUDA 的 2D 粒子引擎構建的人工生命模擬工具。它提供了圖形化使用者介面和粒子編輯器,能夠輕鬆模擬軟體、流體、數字生物體、遺傳和進化等過程。生物行為由神經網路控制,支援實時互動和模擬百萬量級的粒子。

7、vcmi:《英雄無敵 III》的開源重製版。該專案是經典策略遊戲《魔法門之英雄無敵 III》的開源重製版,它採用 C++ 重新編寫了遊戲引擎,支援更高的解析度、多人遊戲和自定義地圖等功能,可以在 Windows、macOS、Android 和 iOS 等系統上執行,但需要自行準備啟動遊戲所需的資料檔案。

Go 專案

8、clickhouse-sql-parser:純 Go 實現的 ClickHouse SQL 解析器。這是一款用 Go 實現的 ClickHouse SQL 解析器,相容大多數 DML/DDL/Query 語句。它的程式碼簡潔易懂,可作為 Go 開發者學習 SQL 解析器的入門專案。

package main

import (
    clickhouse "github.com/AfterShip/clickhouse-sql-parser/parser"
)

query := "SELECT * FROM clickhouse"
parser := clickhouse.NewParser(query)
// Parse query into AST
statements, err := parser.ParseStmts()
if err != nil {
    return nil, err
}

9、go2rtc:支援各種流媒體協議的處理工具。這是一個用 Go 語言編寫的庫,支援 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等影片流協議的處理。在 FFMPEG 的加持下,它幾乎能將任何媒體格式作為輸入源,轉換為適用於主流流媒體服務和瀏覽器的格式。來自 @獵隼丶止戈reNo7 的分享

10、maroto:用 Go 生成樣式美觀的 PDF 檔案。這一個 Go 語言開發的用於建立 PDF 檔案的庫,其靈感來源於 Bootstrap 框架。它允許你像使用 Bootstrap 建立網站一樣,輕鬆編寫和生成不同樣式的 PDF 檔案。來自 @DeShuiYu 的分享

11、nginx-ui:全新的 Nginx 線上管理平臺。該專案是用 Go+Vue.js 構建的 Nginx 線上管理平臺,它開箱即用、功能豐富,支援流量統計、線上檢視 Nginx 日誌、編輯 Nginx 配置檔案、自動檢查和過載配置檔案等功能。來自 @kekylin 的分享

12、watchtower:自動更新 Docker 容器的工具。該專案能夠自動監測並更新正在執行的 Docker 容器。它會定期檢查並拉取 Docker Hub 或私有映象倉庫中的最新映象版本,並自動重啟容器。適用於開發、測試和個人使用場景,但不建議在生產環境中使用。

docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower

Java 專案

13、graphhopper:高效靈活的開源路線規劃引擎。該專案是用 Java 開發的高效能路徑規劃引擎,能夠快速計算兩點或多點之間的距離。它支援 Dijkstra、A* 和收縮層級(CH)等演算法,可以作為 Java 庫或 Web 服務使用。基於 OpenStreetMap 地圖資料,可實現汽車、腳踏車、步行等多種交通方式的路線規劃和導航服務。

14、J2ME-Loader:在 Android 上玩 J2ME 遊戲。這是一款 Android 的 J2ME 模擬器,支援大多數 2D 和 3D 遊戲。它內建虛擬鍵盤,適用於 Android 4.0+ 系統。

15、spring-ai:幫助開發 AI 應用的 Spring 框架。這是由 Spring 官方開源的用於簡化包含 AI 功能的應用開發的 Java 框架,它可以輕鬆接入 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等主流模型供應商,以及聊天、文字生成影像的模型型別,支援提示工程、AI 模型轉 POJO 物件、向量資料庫、RAG(檢索增強生成)等有助於開發 AI 應用的功能。

JavaScript 專案

16、create-t3-app:建立全棧、型別安全的 Next.js 專案的工具。這是一個用於建立全棧且型別安全的 Next.js 專案的腳手架工具。它開箱即用,僅需一條命令就能快速建立一個全新的 Next.js 專案。

17、markmap:將 Markdown 視覺化為思維導圖。這是一個支援使用 Markdown 語法繪製思維導圖的工具。它開箱即用並提供多種使用方式,包括線上、命令列以及 VSCode、Vim 和 Emacs 外掛。

18、pglite:在瀏覽器中執行 Postgres 資料庫。該專案將 PostgreSQL 資料庫編譯成 WebAssembly (WASM),並打包成一個 TypeScript/JavaScript 客戶端庫。它壓縮後體積不到 3MB,可以在瀏覽器、Node.js、Bun 和 Deno 環境中執行,無需安裝任何額外的依賴。提供靈活的儲存選項,支援記憶體儲存、本地持久化或 IndexedDB。

import { PGlite } from "@electric-sql/pglite";

const db = new PGlite();
await db.query("select 'Hello world' as message;");
// -> { rows: [ { message: "Hello world" } ] }

19、staticrypt:為靜態網站提供密碼保護功能。該專案無需伺服器端支援,即可實現對 HTML 頁面進行密碼認證訪問的功能。它使用 AES-256 加密演算法和設定的密碼,對需要保護的頁面進行加密。生成的頁面包含密碼輸入框,只有在輸入正確的密碼後,才會顯示原始的 HTML 頁面內容。

20、ui:流行、設計精美的 UI 元件集合。這是一款由 Vercel 開源、基於 React 開發的 UI 元件集合,包括儀表板、卡片、模型對話、表單、登入等元件,拿來即用。透過 CLI 引入元件後,將得到該元件的原始碼,可隨意修改和定製。

Kotlin 專案

21、game2048:開源的 2048 遊戲。該專案是基於 Kotlin 和 KorGe 遊戲引擎開發的 2048 遊戲。它免費、開源且沒廣告,支援存檔、無限撤回、AI 模式和回放等功能。作者僅提供了 Android 安裝包,其他平臺需要自行編譯。

22、ImageToolbox:Android 的多功能影像編輯工具。這是一款專為 Android 設計的影像編輯工具。它完全免費,支援批次處理、濾鏡、背景移除、尺寸調整和裁剪等多種功能。

Python 專案

23、aiofiles:Python 非同步檔案處理庫。在 Python 中,傳統的檔案 I/O 是阻塞的,該專案提供了非同步(非阻塞)的檔案操作。它的 API 與 Python 標準庫相似,支援 async/await 語法。

async with aiofiles.open('filename', mode='r') as f:
    contents = await f.read()
print(contents)
'My file contents'

24、cupy:GPU 版的 NumPy 和 SciPy。這是一個利用 GPU 加速數值計算的 Python 庫,與 NumPy 和 SciPy 相容。你可以輕鬆地將現有的 NumPy/SciPy 程式碼,遷移到 NVIDIA CUDA 或 AMD ROCm 平臺上執行,部分情況下速度可提升 100 倍以上。

>>> import cupy as cp
>>> x = cp.arange(6).reshape(2, 3).astype('f')
>>> x
array([[ 0.,  1.,  2.],
       [ 3.,  4.,  5.]], dtype=float32)
>>> x.sum(axis=1)
array([  3.,  12.], dtype=float32)

25、curl_cffi:模擬瀏覽器指紋的 HTTP 客戶端。這是一個用 Python 寫的 HTTP 客戶端庫,可以模擬瀏覽器 TLS、JA3 和 HTTP/2 指紋。它開箱即用、速度快,並且支援 WebSocket 和非同步。

from curl_cffi import requests

# Notice the impersonate parameter
r = requests.get("https://tools.scrapfly.io/api/fp/ja3", impersonate="chrome")

print(r.json())
# output: {..., "ja3n_hash": "aa56c057ad164ec4fdcb7a5a283be9fc", ...}
# the js3n fingerprint should be the same as target browser

# To keep using the latest browser version as `curl_cffi` updates,
# simply set impersonate="chrome" without specifying a version.
# Other similar values are: "safari" and "safari_ios"
r = requests.get("https://tools.scrapfly.io/api/fp/ja3", impersonate="chrome")

26、LibreTranslate:可離線部署的翻譯 API 服務。該專案是基於離線翻譯引擎 Argos Translate 構建的翻譯 API 服務。它不依賴第三方翻譯服務,可輕鬆自建翻譯 API 服務,支援自動語言檢測、API 金鑰和訪問頻率限制等功能。

27、s-tui:基於終端的 CPU 監控和壓測工具。這是一個 Python 寫的命令列工具,可在終端中以圖形方式實時顯示 CPU 溫度、頻率、功率和利用率等資訊。它還支援安裝 FIRESTARTER 等工具,對 CPU 進行壓力測試。

Rust 專案

28、uv:超快的 Python 包管理工具。該專案是基於 Rust 開發的下一代 Python 包管理工具,可用於替代傳統的 Python 包和環境管理工具。它相容 pip、pip-tools 和 virtualenv 命令,速度比這些工具快 10-100 倍,並透過全域性依賴快取節省更多的硬碟空間,開箱即用支援 Windows、Linux 和 macOS 系統。

# On macOS and Linux.
$ curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
$ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
$ pip install uv

29、yazi:超快的終端檔案管理器。這是一個用 Rust 編寫的終端檔案管理器,所有 I/O 操作均為非同步。它提供了友好的介面、自由可定製和流暢的使用體驗,支援圖片預覽、程式碼高亮、滾動預覽和外掛系統,並整合了 ripgrep、fd、fzf 等高效的命令列工具。來自 @fortystory 的分享

Swift 專案

30、BBackupp:輕鬆備份 iOS 裝置資料的工具。這是一款免費的 iOS 備份工具,支援顯示備份進度、自動備份計劃、無線備份、加密保護等功能。

31、OpenScanner:適用於 iPhone 的免費文件掃描工具。這是一款用 Swift 編寫的文件掃描工具,完全免費,沒廣告且無內購。它可以掃描收據、合同、筆記等,支援自動識別文字、編輯掃描件、簽名和匯出 PDF 檔案等功能,適用於 iOS 16.0+ 和 visionOS 1.2+ 系統。

人工智慧

32、miniMNIST-c:C 語言實現的極簡神經網路。該專案展示瞭如何用 C 語言從頭實現一個最小的神經網路。它用不到 200 行程式碼和 C 標準庫,實現了一個極簡的神經網路,能夠對 MNIST 資料集中的手寫數字進行分類。

33、openvino:最佳化和部署深度學習模型的工具包。該專案是英特爾開源的工具庫,旨在加速和最佳化深度學習模型部署。它能幫助開發者將訓練好的模型部署到多種硬體平臺,支援 TensorFlow、PyTorch 和 ONNX 等深度學習框架。

import openvino as ov
import torch
import torchvision

# load PyTorch model into memory
model = torch.hub.load("pytorch/vision", "shufflenet_v2_x1_0", weights="DEFAULT")

# convert the model into OpenVINO model
example = torch.randn(1, 3, 224, 224)
ov_model = ov.convert_model(model, example_input=(example,))

# compile the model for CPU device
core = ov.Core()
compiled_model = core.compile_model(ov_model, 'CPU')

# infer the model on random data
output = compiled_model({0: example.numpy()})

其它

34、90DaysOfDevOps:為期 90 天的 DevOps 免費教程。該專案最初是作者記錄自己學習 DevOps 知識的筆記,如今已發展為一個由社群驅動的 DevOps 免費教程,內容涵蓋了 DevOps 概念、Linux 基礎、計算機網路、容器、Kubernetes、CI/CD、監控和雲服務商等。

35、Atlas:開源的精簡版 Windows 作業系統。這是一個經過最佳化的 Windows 作業系統,移除了許多用不到但會拖慢系統的元件。瘦身後減少了系統程序數、網路和記憶體佔用,獲得了更快的啟動速度和更流暢的操作體驗。該系統能夠正常執行各種 Windows 軟體和遊戲,是一份送給遊戲愛好者和追求高效能使用者的開源禮物。

36、GPU-Puzzles:學習 GPU 並行程式設計的互動式教程。該專案提供了 14 道題,幫助學習 GPU 程式設計。你需要編寫程式碼來解決這些問題。儘管程式碼看起來像 Python,但實際上是使用 numba 庫編寫 CUDA 程式碼。更有趣的是,執行程式碼後會生成一張示意圖,幫助你理解程式碼執行過程。此外,作者還製作了講解影片,指導如何執行專案並檢視答案。

37、kando:跨平臺的環形狀選單工具。這是一款桌面圓形選單(Pie menu)工具,可用於啟動應用、模擬鍵盤快捷鍵、開啟檔案等,尤其適合與觸控筆和觸控式螢幕配合使用,支援 Windows、Linux 和 macOS 等系統。來自 @有故事的徐同學 的分享

38、omakub:精美的 Ubuntu 配置方案。該專案可以將全新的 Ubuntu 24.04 系統配置成美觀、功能齊全、適合 Web 開發的系統。只需簡單的一條命令,即可擁有配置好的 GNOME 桌面環境、視窗管理工具、Alacritty 終端、Neovim 和 VSCode 編輯器等應用,還會將 Chrome 設定成預設瀏覽器。

39、weather_landscape:用有趣的動畫顯示天氣預報。這是一個基於氣象資料生成景觀圖的專案,透過動畫形式生動地展現天氣,替代了枯燥的氣象數值顯示。

開源書籍

40、DictionaryByGPT4:用 GPT-4 生成的英語單詞書。該專案透過 GPT-4 分析中考、高考、及四六級考試中的 8000 多個英語單詞,生成了一本英語詞彙書。書中詳細介紹了每個單詞的詞義、詞根、詞綴、例句,以及發展歷史和文化背景等。

41、SystemDesign:《System Design Interview: An Insider’s Guide》中文翻譯。該專案是《系統設計面試:內幕指南》一書的中文翻譯,內容是傳授面試中關於系統設計架構的技巧,例如如何設計一個 YouTube 等系統。來自 @劉睿華 的分享

最後

感謝參與分享開源專案的小夥伴們,歡迎更多的開源愛好者來 HelloGitHub 自薦/推薦開源專案。如果你發現了 GitHub 上有趣的專案,就點選這裡分享給大傢伙吧!

本期有你感興趣的開源專案嗎?如果有的話就留言告訴我吧~如果還沒看過癮,可以點選閱讀往期內容。

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

相關文章