興趣是最好的老師,HelloGitHub 讓你對程式設計感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。
github.com/521xueweihan/HelloGitHub
這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對程式設計產生興趣!
以下為本期內容|每個月 28 號更新
C 專案
1、darktable:開源的攝影后期處理工具。這是一款免費且專業的攝影作品後期處理軟體。它像一個虛擬的光桌和暗房,能夠幫助攝影師儲存數字底片、放大檢視和檢索照片。該軟體可以顯示照片的焦距和曝光度等資訊,並支援編輯歷史、地圖模式和列印照片等功能。
2、gnucash:完全開源的財務軟體。這是一款適用於個人和小型企業的開源財務軟體,它採用複式記賬法,提供了簡潔的操作介面,並支援生成報表、對賬、多國貨幣,以及獲取股票實時價格等功能,適用於 Windows、Linux 和 macOS 平臺。
C# 專案
3、git-credential-manager:通用的 Git 憑據管理器。這是一個基於 .NET 開發的 Git 憑證儲存和管理工具。它開箱即用、無需額外操作,使用 git 命令時,工具會自動引導完成登入,後續無需再次登入,輕鬆解決對遠端 Git 倉庫進行操作時遇到的需要登入和認證失敗等問題,支援 GitHub、Bitbucket 和 GitLab 等平臺。
4、Lean:基於 C# 的量化交易引擎。這是一款採用 C# 編寫的開源、經過實戰考驗的量化交易引擎。支援使用 Python3 或 C# 編寫交易演算法,相容 Windows、Linux 和 macOS 平臺,適用於量化交易策略研究、回測和實盤交易等場景。
5、space-station-14:開源遊戲《14 號空間站》。該專案是經典遊戲《Space Station 13》的開源重製版。在這款回合制多人角色扮演的遊戲中,玩家可以選擇各種角色,如工程師、船長和叛徒,並與其他玩家合作或競爭,在資源有限的環境中生存。
6、subtitleedit:開源的影片字幕編輯工具。這是一款適用於 Windows 的免費影片字幕編輯器。它開箱即用且功能強大,支援建立、調整、同步和翻錄字幕,還提供了自動翻譯、字幕格式轉換和語音識別等功能。
C++ 專案
7、diff-pdf:直觀比較兩個 PDF 檔案的工具。這是一款用 C++ 編寫的 PDF 檔案比較工具。它支援兩種檢視方式,將檔案內容的差異輸出到一個新的 PDF 檔案,或直接在 GUI 中檢視。
// 輸出差異
diff-pdf --output-diff=diff.pdf a.pdf b.pdf
// 直接檢視
diff-pdf --view a.pdf b.pdf
Go 專案
8、buildg:互動式的 Dockerfile 除錯工具。該項是基於 BuildKit 的互動式除錯 Dockerfile 的工具,支援設定斷點、單步執行和非 root 模式,並且可以在 VSCode 等編輯器中使用。
9、devzat:程式設計師專屬的 SSH 聊天室。這是一個透過 SSH 連線的聊天室,使用者無需安裝客戶端,僅需一條 SSH 命令即可登入。它支援私人訊息、多聊天室、圖片和程式碼高亮等功能,還可以整合第三方服務、自託管 SSH 聊天室。
10、expr:Go 語言的表示式庫。該專案是專為 Go 語言設計的表示式語言和求值引擎,支援豐富的運算元和高階函式,具有安全、無副作用和靜態型別檢測等特點。表示式是一行由變數、運算子和函式組成的程式碼,它能夠簡化複雜的計算任務,多用於動態配置和業務規則引擎等場景。來自 @兩雙筷子sqldc 的分享
func main() {
// 表示式
code := `all(Tweets, {.Len <= 240})`
program, err := expr.Compile(code, expr.Env(Env{}))
if err != nil {
panic(err)
}
env := Env{
Tweets: []Tweet{{42}, {98}, {69}},
}
// 計算表示式
output, err := expr.Run(program, env)
if err != nil {
panic(err)
}
fmt.Println(output)
}
11、gdu:快速檢視磁碟使用情況的命令列工具。這是一個用 Go 語言編寫的磁碟使用分析器,它能夠快速掃描並展示檔案和目錄所佔用的磁碟空間,支援 TUI(預設)、非互動和匯出三種使用方式。
Java 專案
12、cryptomator:為你的雲端檔案“上鎖”的工具。這是一款開源的雲端儲存檔案加密工具,支援 Dropbox、OneDrive 等主流雲端儲存服務。它簡單易用、跨平臺、無需註冊,採用 AES-256 加密上傳至雲端儲存的檔案和目錄,適用於需要備份資料至雲端,又擔心資料洩漏的場景。來自 @孤膽槍手 的分享
13、JarEditor:直接編輯 JAR 檔案的 IDEA 外掛。這是一款 IntelliJ IDEA 外掛,讓你無需解壓即可直接編輯 JAR 檔案中的 class 和資原始檔。它支援新增、刪除、重新命名 JAR 包內的檔案和目錄,並提供了搜尋和複製 JAR 包內容等功能,相容 SpringBoot 和 Kotlin 專案。來自 @鷹影 的分享
14、PojavLauncher:Minecraft 遊戲的 Android 啟動器。該專案可以讓你在 Android 上玩 Minecraft(我的世界),提供了離線和多人聯機模式。它支援幾乎所有版本的 Minercraft,還可以安裝 Forge、Fabric 和 OptiFine 等模組和載入器。
JavaScript 專案
15、grapesjs:免費的視覺化 Web 頁面構建平臺。該專案透過直觀的視覺化介面,讓使用者能夠透過拖拽的方式,快速設計和構建網站的 HTML 模板。它所見即所得、移動端適配,適用於官網、新聞和 CMS 等型別的網站。
16、react-content-loader:輕鬆建立骨架屏的 React 元件。該專案是用於建立頁面載入時的佔點陣圖 React 元件,它體積小、易定製,提供了多種預設樣式和示例程式碼,拿來即用極易上手,支援 React、Vue 和 Angular 等主流框架。
import { Code } from 'react-content-loader'
const MyCodeLoader = () => <Code />
17、Sink:基於 Cloudflare 帶訪問統計的短鏈平臺。該專案是執行在 Cloudflare 上的短連結服務,支援網址縮短、訪問分析和連結有效期等功能。來自 @麵條 的分享
18、typebot.io:自託管的聊天機器人構建器。該專案透過視覺化的拖拽介面,讓使用者能夠輕鬆建立高階聊天機器人,並將其嵌入網站中。它提供了 30 多種聊天構建塊,支援自託管、分析工具、自定義域名和品牌定製等功能,適用於線上客服和銷售支援等場景。
19、typed.js:極易上手的 JavaScript 打字動畫庫。該專案是專門用於建立打字動畫效果的 JavaScript 庫,它簡單易用且 SEO 友好,支援刪除效果、設定打字速度和迴圈次數等功能。
var typed = new Typed('.element', {
strings: ["First sentence.", "Second sentence."],
typeSpeed: 30
});
Kotlin 專案
20、WiFiAnalyzer:用於分析 WiFi 訊號的 Android 應用。該專案是用 Kotlin 寫的 WiFi 分析工具,它提供了直觀的圖表展示 WiFi 網路情況,支援識別周圍的 WiFi、測量訊號強度和檢視頻道擁擠程度等功能。
Python 專案
21、buzz:音訊轉錄與翻譯工具。該專案是基於 Whisper 的音訊轉錄和翻譯工具,它開箱即用且操作簡單,支援語音轉文字、音訊翻譯、多種語言和離線使用,適用於 macOS、Windows 和 Linux 平臺。
22、helium:簡化瀏覽器自動化的 Python 庫。該專案是基於 Selenium 的輕量級 Python 庫,它透過提供更高階和易用的 API,讓用 Python 編寫瀏覽器自動化指令碼變得更加簡單和方便,支援 Chrome 和 Firefox 瀏覽器。
23、jurigged:Python 的熱過載工具。這是一個專為 Python 提供熱過載功能的庫,它支援在程式執行時修改和更新 Python 程式碼,無需重啟程式。
# Loop over a function
jurigged --loop function_name script.py
jurigged --loop module_name:function_name script.py
# Only stop on exceptions
jurigged --xloop function_name script.py
24、python-sortedcontainers:更好用的 Python 排序集合庫。該專案提供了 SortedList、SortedDict 和 SortedSet 三種資料結構,完全相容 List、Dict、Set 內建資料型別的 API。儘管採用純 Python 編寫,其速度卻可以媲美使用 C 擴充套件實現的 Python 庫。
from sortedcontainers import SortedList
sl = SortedList(['e', 'a', 'c', 'd', 'b'])
# sl: SortedList(['a', 'b', 'c', 'd', 'e'])
sl *= 10_000_000
sl.count('c') # 10000000
sl[-3:] # ['e', 'e', 'e']
from sortedcontainers import SortedDict
sd = SortedDict({'c': -3, 'a': 1, 'b': 2})
# sd: SortedDict({'a': 1, 'b': 2, 'c': -3})
sd.popitem(index=-1) # ('c', -3)
from sortedcontainers import SortedSet
ss = SortedSet('abracadabra')
# ss: SortedSet(['a', 'b', 'c', 'd', 'r'])
ss.bisect_left('c') # 2
25、radon:Python 程式碼質量分析工具。這是一款強大的 Python 程式碼度量工具,它能夠計算多種程式碼指標,包括 McCabe 複雜度、Halstead 指標和可維護性指數,適用於 Python 程式碼質量評估和持續整合等場景。
$ radon cc sympy/solvers/solvers.py -a -nc
sympy/solvers/solvers.py
F 346:0 solve - F
F 1093:0 _solve - F
F 1434:0 _solve_system - F
F 2647:0 unrad - F
F 110:0 checksol - F
F 2238:0 _tsolve - F
F 2482:0 _invert - F
F 1862:0 solve_linear_system - E
F 1781:0 minsolve_linear_system - D
F 1636:0 solve_linear - D
F 2382:0 nsolve - C
11 blocks (classes, functions, methods) analyzed.
Average complexity: F (61.0)
Rust 專案
26、komorebi:Windows 的平鋪視窗管理器。這是一款專為 Windows 設計的桌面視窗管理工具,支援自動平鋪視窗、管理多個虛擬桌面和多顯示器等功能,適用於 Windows 10 及更高版本。
27、min-sized-rust:最佳化 Rust 二進位制檔案大小的方法。Rust 構建時預設不會最佳化二進位制檔案的大小,該專案介紹瞭如何在保證 Rust 程式功能完整的同時,減少二進位制檔案體積的工具和技巧,適用於嵌入式和物聯網等對程式體積敏感的場景。
28、readyset:Rust 開發的 SQL 資料庫快取引擎。該專案是採用 Rust 開發的 Postgres 和 MySQL 資料庫快取層,支援自動維護快取、快取複雜的 SQL 查詢結果和保持資料實時同步等功能。使用時無需改動程式碼即可整合到現有的應用和資料庫之間,顯著提升查詢效能。來自 @DeShuiYu 的分享
Swift 專案
29、ATV-Bilibili-demo:開源的 Apple TV 嗶哩嗶哩客戶端。該專案是專為蘋果電視(tvOS)設計的嗶哩嗶哩客戶端,它可以用來觀看 B 站上的影片、直播和彈幕,支援登入、投屏、搜尋和歷史記錄等功能,就是安裝有點麻煩。
30、PlayCover:在 Mac 上執行 iOS 遊戲和應用的工具。該專案是專為 Apple Silicon Mac 裝置(M 系列晶片)設計,用於執行 iOS 應用和遊戲的工具。它透過模擬 iPad 環境和鍵盤對映功能,讓使用者可以在 Mac 電腦上玩 iOS 遊戲,需自行下載 IPA 檔案,適用於 macOS 12.0 或更高版本。
其它
31、dart_simple_live:簡單易用的看直播工具。該專案可以讓你在一個 APP 上看各種主流直播平臺,並提供了 Android、iOS、macOS 和 Android TV 等客戶端。
32、github-readme-terminal:用復古終端 GIF 展示 GitHub 個人資料。該專案可以根據你的 GitHub 個人資料,生成復古風格的電腦啟動 GIF 動畫,展示你的 GitHub 個人資料。
33、hugo-book:書籍風格的 Hugo 主題。這是一個開源的 Hugo 主題,能夠幫助使用者輕鬆建立類似書籍的文件網站。它擁有簡潔的設計、適配移動端、支援多語言,適用於技術文件、線上教程和書籍等場景。
34、OMOTE:開源的通用遙控器。該專案是用 ESP32 製作的通用遙控器,它擁有 2.8 英寸電容觸控式螢幕、2000 毫安電池和實體按鍵,支援紅外、WiFi 和藍芽連線方式,能夠控制各種家電。
35、pintree:Chrome 書籤變成導航站。該專案可以透過簡單的幾步,將 Chrome 瀏覽器的書籤,轉換成一個美觀且易用的導航頁面。由於生成的是靜態網站,因此無法自動同步新增的書籤。來自 @孤膽槍手 的分享
36、Scoop:Windows 命令列安裝軟體的利器。該專案是類似於 Homebrew 的 Windows 命令列安裝工具。它可以從命令列安裝應用程式,具有消除許可權彈窗、隱藏 GUI 嚮導、自動處理依賴和防止汙染 PATH 環境變數等特點。
scoop install sudo
sudo scoop install 7zip git openssh --global
scoop install aria2 curl grep sed less touch
scoop install python ruby go perl
開源書籍
37、introduction-to-git-and-github-ebook:《Git 和 GitHub 入門指南》。這是一本介紹 Git 和 GitHub 基礎知識的開源書籍,內容包括安裝 Git、GitHub CLI、分支管理和工作流程等實用知識。
38、machine-learning-for-trading:《Machine Learning for Algorithmic Trading》配套程式碼。這是一本關於如何將機器學習應用於交易策略的書籍,該專案是書籍的配套程式碼和資源,包含 150 多個程式碼示例,涵蓋了資料採集、模型訓練和策略評估等方面。
機器學習
39、gpt-computer-assistant:極簡的 GPT-4o 客戶端。該專案是適用於 Windows、macOS 和 Ubuntu 的 GPT-4o 客戶端,它擁有極簡的使用者介面,支援執行多種任務,包括讀取螢幕、開啟應用、系統音訊和文字輸入等。
40、mem0:增強 LLM 上下文連續性的 Python 庫。該專案能為多種主流的大型語言模型提供記憶層,它支援儲存使用者與 LLM 互動時的會話和上下文,並能實時動態更新和調整,從而增強 AI 的個性化,適用於學習助手、醫療助理和虛擬伴侶等需要長期記憶的個性化 LLM 應用。
from mem0 import Memory
m = Memory()
# Add
result = m.add("Likes to play cricket on weekends", user_id="alice", metadata={"category": "hobbies"})
# Search
related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
# Update
result = m.update(memory_id="m1", data="Likes to play tennis on weekends")
41、Retrieval-based-Voice-Conversion-WebUI:開箱即用的 AI 變聲器。該專案是基於 VITS 的變聲框架,僅需少量語音資料和普通的顯示卡,就能快速訓練出高質量的語音轉換模型。它提供了簡單易用的 Web 和 GUI 介面,支援實時變聲、人聲和伴奏分離等功能。
最後
感謝參與分享開源專案的小夥伴們,歡迎更多的開源愛好者來 HelloGitHub 自薦/推薦開源專案。如果你發現了 GitHub 上有趣的專案,就點選這裡分享給大傢伙吧!
本期有你感興趣的開源專案嗎?如果有的話就留言告訴我吧~如果還沒看過癮,可以點選閱讀往期內容。
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️