興趣是最好的老師,HelloGitHub 讓你對程式設計感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。
這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對程式設計產生興趣!
以下為本期內容|每個月 28 號更新
C 專案
1、BlackHole:適用於 macOS 的虛擬音訊驅動。在 macOS 上錄製過影片的同學,應該都遇到過收錄電腦聲音的問題,採用公放的方式對環境要求極高。該專案是一款 macOS 上的虛擬音訊驅動,它可以零延遲地將輸出的音訊傳遞給其他應用,從而不受周圍環境的影響,輕鬆錄製電腦的聲音,支援 Intel 和 Apple 晶片。
2、c4:用 4 個函式實現的 C 語言編譯器。該專案僅用了 500+ 行程式碼、4 個函式,就實現了一個小型 C 語言編譯器。但因為它的程式碼過於精簡,所以原始碼閱讀起來並不輕鬆。
C# 專案
3、optimizer:超好用的 Windows 最佳化器。這是一款強大的 Windows 系統最佳化工具,它體積小、功能豐富,支援包括中文在內的 22 種語言,能夠禁用不必要的 Windows 服務、刪除多餘的啟動程式、關閉用不到的功能,提升 Windows 系統的使用體驗和效能。
4、Translumo:免費開源的螢幕實時翻譯工具。該專案可以對螢幕上選定區域內顯示的文字進行實時翻譯,可識別英語、俄語、中文等語言。使用者可自行選擇 Tesseract、WindowsOCR、EasyOCR 多種 OCR 引擎,以及包括谷歌翻譯在內的多種翻譯源。
C++ 專案
5、duckdb:一款類似 SQLite 的分析型資料庫。該專案是用 C++ 寫的 OLAP(聯機分析處理)資料庫,沒有外部依賴項、不作為獨立程式執行,可以看作是 OLAP 版本的 SQLite。它方便、快速、易於使用,提供了豐富的 SQL 方言,支援 JOIN、聚合、視窗函式、直接查詢 CSV 和 JSON 檔案等功能。
SELECT * FROM 'HelloGitHub.csv';
SELECT * FROM 'HelloGitHub.parquet';
6、kakoune:一款神似 Vim 的程式碼編輯器。擁有極簡的介面和便捷的編輯模型的程式碼編輯器,雖然它的設計靈感源自 Vim,但在功能和互動性上“青出於藍而勝於藍”。操作上更加的快捷方便,預設支援語法高亮、自動補全等功能,適用於 Linux 和 macOS 作業系統。
7、SafeLine:一款簡單好用的 Web 應用防火牆。該專案底層基於 Nginx 的 Web 閘道器,作為反向代理接入網路。採用智慧語意分析演算法,清洗來自駭客的惡意流量,保護你的網站不受駭客攻擊。它安裝簡單、免費版功能夠用,但專案僅開源了核心演算法和底層引擎。來自 @孤膽槍手 的分享
8、smartknob:自己動手製作一款觸感智慧旋鈕。這是一款開源的智慧旋鈕裝置,可自定義端點位置、虛擬製動、觸覺反饋,並帶有一個圓形 LCD,十分炫酷好玩。
9、typesense:一款快如閃電的開源搜尋引擎。該專案是用 C++ 編寫的即時搜尋引擎,具有開箱即用、搜尋速度快、自動更正拼寫錯誤、地理搜尋、預設分詞器支援中文等特點。
CSS 專案
10、pokemon-cards-css:炫酷的神奇寶貝卡牌 CSS 效果。該專案是口袋怪獸卡高階 CSS 樣式集合,使用了 3D 變換、濾鏡、漸變等技術,實現了眩光、紋理、銀河全息、垂直光束等效果。
Go 專案
11、asynq:純 Go 寫的簡單、可靠的分散式任務佇列。這是一個基於 Redis 的輕量級非同步任務佇列,它會為每個任務啟動一個 goroutine,支援任務失敗重試、優先順序佇列、定時任務、唯一任務等功能。
12、carbon:一個對開發者友好的 Go 時間處理庫。這是一個功能豐富、容易上手的 Go 時間庫,支援時間轉換、時間差、時間旅行、星座、季節、農曆、多語言等功能。
lang := carbon.NewLanguage()
lang.SetLocale("zh-CN")
c := carbon.SetLanguage(lang)
if c.Error != nil {
// 錯誤處理
log.Fatal(err)
}
c.Now().AddHours(1).DiffForHumans() // 1 小時後
c.Now().AddHours(1).ToMonthString() // 八月
c.Now().AddHours(1).ToShortMonthString() // 8月
c.Now().AddHours(1).ToWeekString() // 星期二
c.Now().AddHours(1).ToShortWeekString() // 週二
c.Now().AddHours(1).Constellation() // 獅子座
c.Now().AddHours(1).Season() // 夏季
13、nezha:國產的輕量級伺服器監控工具。這是一款名為“哪吒”的伺服器監控皮膚,它安裝簡單、開箱即用,支援監控多個伺服器的系統狀態、SSL 證照狀態、報警通知、流量監控、設定定時任務等功能,適用於 Linux、Windows、macOS、OpenWRT 等主流系統。來自 @兩雙筷子sqldc 的分享
14、sonyflake:Go 語言的分散式 ID 生成庫。該專案是索尼開源的分散式唯一 ID 生成器,靈感來自知名的 Twitter 雪花演算法(Snowflake)。它比 Snowflake 慢,但擁有更長的壽命,可以在更多的機器上工作,適用於更大的分散式叢集。
Java 專案
15、Algorithms:一個用 Java 實現的演算法和資料結構的集合。演算法和資料結構的重要性無需多言,該專案提供了常見的資料結構和演算法最簡單、優雅的 Java 程式碼實現,不管是用於學習還是開發都是不錯的選擇。來自 @孤膽槍手 的分享
16、Stirling-PDF:允許對 PDF 檔案做各種操作的 Web 應用。這是一款功能強大、開箱即用的 PDF 工具,支援拆分/合併檔案、新增/提取圖片、壓縮、加水印、新增/刪除密碼等功能,滿足你對 PDF 檔案的所有需求。
JavaScript 專案
17、Bangumi:類似豆瓣的二次元愛好者社群客戶端。這是一個基於 React Native 構建的二次元社群 Bangumi 第三方客戶端。它免費、無廣告、因愛好而生、專為移動端設計,支援番組進度管理、使用者動態、貼吧、搜尋、排行榜、標籤等功能。
18、deprank:透過 PageRank 找到程式碼庫中最重要的檔案。該專案基於 PageRank 演算法和原始檔依賴關係,找到 JavaScript/TypeScript 程式碼倉庫中被依賴最多的檔案。
19、json-server:僅需 30 秒、不用寫程式碼就能模擬介面資料。這是一款小巧的介面模擬工具,它使用起來十分簡單,只需建立 JSON 檔案,然後一條命令就能快速啟動介面服務。
# 安裝
npm install -g json-server
# 啟動
json-server --watch db.json
20、mind-map:一個好用的 Web 思維導圖。該專案包含一個不依賴任何框架的思維導圖 JavaScript 庫,以及一個採用 Vue.js+ElementUI 開發的支援本地部署、功能豐富的線上思維導圖應用。
import MindMap from "simple-mind-map";
const mindMap = new MindMap({
el: document.getElementById('mindMapContainer'),
data: {
"data": {
"text": "根節點"
},
"children": []
}
});
21、yunxiaozhi:一款開源的校園教務查詢微信小程式。該專案是由學生開發的智慧校園小程式,支援課程表查詢、成績查詢、考試安排、空教室查詢、水電查詢等功能。
Kotlin 專案
22、gkd:自定義螢幕點選的 Android 應用。該專案是基於無障礙功能的手機自動點選工具,支援自定義或訂閱點選規則,可用來自動完成點選跳過廣告、同意按鈕、領紅包等操作。
Python 專案
23、argos-translate:用 Python 寫的開源離線翻譯庫。該專案是基於 OpenNMT(神經網路機器翻譯框架)的離線翻譯 Python 庫,它不依賴任何第三方翻譯介面,支援翻譯包括中文在內的 30 多種語言。
import argostranslate.package
import argostranslate.translate
from_code = "en"
to_code = "es"
# Download and install Argos Translate package
argostranslate.package.update_package_index()
available_packages = argostranslate.package.get_available_packages()
package_to_install = next(
filter(
lambda x: x.from_code == from_code and x.to_code == to_code, available_packages
)
)
argostranslate.package.install_from_path(package_to_install.download())
# Translate
translatedText = argostranslate.translate.translate("Hello World", from_code, to_code)
print(translatedText)
# '¡Hola Mundo!'
24、mwmbl:一個用 Python 寫的開源、非營利搜尋引擎。這是一款採用 pandas、FastAPI、scikit-learn、jusText 構建的非營利、無廣告、無跟蹤的小型搜尋引擎,它介面簡約、速度快,搜尋結果無“外界因素”干擾。
25、prettymaps:繪製好看的地圖海報的 Python 庫。該專案可以將 OpenStreetMap 的地圖資料繪製成漂亮的地圖海報,上手簡單可自定義填充顏色。
26、webdriver_manager:輕鬆管理 WebDriver 的 Python 庫。經常寫爬蟲的小夥伴應該都遇到過找 WebDriver 路徑的情況吧!用了這個專案,將無需一次又一次地重複尋找 WebDriver 在哪裡啦。
# 之前
from selenium import webdriver
driver = webdriver.Chrome('/home/user/drivers/chromedriver')
# 現在
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
27、youre-the-os:模擬計算機作業系統的遊戲。這是一個 Python 寫的 Web 遊戲,在遊戲中玩家扮演的是一臺計算機的作業系統。玩家必須透過管理程式、記憶體和 I/O 事件,不讓程式閒置太久,因為程式等待太久就會退出,如果退出的程式達到一定數量後,計算機就會重啟則遊戲失敗。
Ruby 專案
28、docuseal:開源的檔案線上簽署平臺。這是一款用 Ruby 寫的線上簽署檔案平臺,它開箱即用、容易上手、移動端友好,支援拖拽的方式建立 PDF 表單、線上填寫和簽名、自動傳送郵件、使用者管理等功能。
Rust 專案
29、lettura:極簡的開源 RSS 閱讀器。這是一款基於 Tauri 開發的桌面 RSS 閱讀器,它免費、無廣告、介面清爽,適用於 macOS 和 Windows 作業系統。
30、privaxy:Rust 寫的跟蹤和廣告攔截工具。該專案基於 MITM 中間人攻擊原理,在兩端之間建立雙向隧道,透過過濾 URL 地址阻止廣告的請求,實現攔截廣告的效果。它佔用記憶體少、速度快,支援自動更新過濾列表、統計資訊顯示、自定義過濾列表等功能。
Swift 專案
31、TomatoBar:精緻的 macOS 選單欄番茄時鐘。這是一款 macOS 上的番茄時鐘應用,它小巧精緻、介面簡潔,支援設定工作和休息間隔、提示音、全域性熱鍵等功能。
32、XcodesApp:Xcode 安裝和切換的實用工具。Xcode 是 macOS 系統向開發人員提供的整合開發環境,該專案可以輕鬆安裝和切換各個版本的 Xcode,採用 aria2 下載速度更快,Xcode 發行版資料來自蘋果官網。
其它
33、catppuccin:超看好的主題配色方案。該專案是由社群驅動的配色方案,內含以暖色調為主、色彩豐富的主題,可用於 VSCode、JetBrains、Vim 等編輯器和 IDE,同樣適用於各種程式語言的開發庫、終端、作業系統、瀏覽器等應用。
34、keyviz:一款免費的實時鍵鼠輸入視覺化軟體。該專案可以將滑鼠和鍵盤的操作展示到螢幕上,讓觀眾可以看到你的鍵鼠操作。適用於截圖、錄製影片、演示和協作等場景,支援 Windows、Linux 和 macOS 作業系統。
35、LearnPrompt:免費開源的 AIGC 課程。該專案對新手友好、無需 AI 知識也可輕鬆學習,它不僅會傳授如何用好 AIGC,還會深入討論 AI 相關的知識,內容包括 ChatGPT、Runway、Midjourney、Stable Diffusion、AI 數字人等方面。
36、python-weekly:Python 潮流週刊。這是一份由「豌豆花下貓」製作的每週更新的 Python 週刊,內容包括 Python 的精品文章、教程、開源專案、工具、影片和熱門話題等。
37、TechStack:顯示 GitHub 專案所用技術棧的瀏覽器外掛。該專案可以展示使用者正在訪問的 GitHub 倉庫的技術棧,幫助使用者快速瞭解專案的更多資訊。來自 @CorrectRoadH 的分享
38、webgl-fundamentals:從基礎理論講起的 WebGL 教程。這是一份從基礎的數學知識講起的 WebGL 系列教程,內含中文翻譯版本。
開源書籍
39、css-animation-101:《CSS 動畫入門秘籍》。這本書主要是介紹 CSS 中的動畫(CSS animation),內容包含什麼是 CSS animation、transition 屬性、如何製作複雜的動效以及豐富的示例,教會你如何將 CSS 動畫應用到你的專案中。
40、how-to-write-makefile:《跟我一起寫 Makefile》。該專案是陳皓整理自《GUN Make Manual 》的系列文章 PDF 重製版,作者對其進行了排版最佳化、程式碼高亮等操作,閱讀起來更加舒服,可作為初學者上手 Makefile 的教程。
機器學習
41、hcaptcha-challenger:優雅地處理 hCaptcha 驗證碼的庫。該專案不依賴瀏覽器外掛和第三方反驗證碼服務,透過機器學習的方式處理 hCaptcha 驗證碼。它採用 ResNet 和 YOLOv8 處理分類和檢測問題,透過 ONNX 打包模型降低使用門檻,讓使用者可在沒有 GPU 的裝置上執行程式碼,且無需安裝 PyTorch 等依賴,優雅地面對 hCaptcha 驗證碼。來自 @QIN2DIM 的分享
import os
from pathlib import Path
import hcaptcha_challenger as solver
# Init local-side of the ModelHub
solver.install()
# Challenge prompt of binary challenge
prompt = "diamond bracelet"
# Load challenge images, assuming you've already downloaded them.
label_dir = Path(__file__).parent.joinpath("diamond_bracelet")
images = [label_dir.joinpath(fn).read_bytes() for fn in os.listdir(label_dir)]
def bytedance():
classifier = solver.BinaryClassifier()
# type: List[bool | None]
# IF True --> click image
# ELIF False --> bypass image
# ELSE --> Something err
if result := classifier.execute(prompt, images):
for i, name in enumerate(os.listdir(label_dir)):
print(f"{name} - {result[i]}")
if __name__ == "__main__":
bytedance()
42、jax:谷歌開源的高效能科學計算庫。這是一個結合了即時編譯(JIT)、自動求導(Autograd)、線性代數編譯器(XLA) 的數值計算 Python 庫,用法和 NumPy 差不多。但 JAX 更快、更省記憶體,支援自動微分、自動向量化、平行計算等功能。
from jax import grad
import jax.numpy as jnp
def tanh(x): # Define a function
y = jnp.exp(-2.0 * x)
return (1.0 - y) / (1.0 + y)
grad_tanh = grad(tanh) # Obtain its gradient function
print(grad_tanh(1.0)) # Evaluate it at x = 1.0
# prints 0.4199743
# 自動求導
print(grad(grad(grad(tanh)))(1.0))
# prints 0.62162673
43、sd-webui-EasyPhoto:你的智慧 AI 照片生成工具。這是一款用於生成 AI 肖像畫的 WebUI 外掛,可用於生成專業質感的照片,相當於免費、可本地部署的妙鴨相機。
最後
感謝無私分享開源專案的小夥伴們,歡迎更多的開源愛好者來 HelloGitHub 自薦/推薦開源專案。如果你發現了 GitHub 上有趣的專案,就點選這裡分享給大傢伙吧!
以上就是本期的所有內容了,往期內容點選閱讀,如果你覺得本期內容還不錯的話 求贊、求分享 ❤️