興趣是最好的老師,HelloGitHub 讓你對程式設計感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。
https://github.com/521xueweihan/HelloGitHub
這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對程式設計產生興趣!
以下為本期內容|每個月 28 號更新
C 專案
1、freeswitch:運營商級的開源電話平臺。這是一個支援 SIP、WebRTC 等多種通訊協議的開源通訊框架,它作為一個多用途的軟交換機,可以用來建立各種語音和訊息服務,比如企業電話系統、虛擬呼叫中心、視訊會議服務等。
2、NetHack:一款歷史悠久的 Roguelike 遊戲。這是一款經典的 Roguelike 單機遊戲,玩家將扮演一位地下城的探險者去尋找神秘的 Yendor 項鍊。遊戲的介面由 ASCII 字元組成,具有自由度高、難度大、地圖隨機生成和永久死亡的特點,被玩家稱為可以玩一輩子的遊戲。
3、rt-thread:小而美的物聯網作業系統。這是一個由國人發起的開源物聯網作業系統,具有優秀的可裁剪性和可擴充套件性。可以執行在 ARM Cortex-M0 晶片上的極小核心,到中等的 ARM Cortex-M3/4/7 系統,甚至是多核 64 位的 ARM Cortex-A、MIPS32/64 等不同架構的處理器。同時還提供了功能豐富的元件和軟體包,可幫助開發者快速構建嵌入式系統產品。來自 @阿基米東 的分享
C# 專案
4、g-helper:一款輕量級的華碩奧創中心替代品。該專案是華碩筆記本奧創控制中心(遊戲本控制軟體)的開源替代品。它擁有簡潔的介面和極低的系統資源佔用等特點,支援無縫切換顯示卡模式、調節螢幕重新整理率、風扇曲線、電源功耗、鍵盤燈光等功能。
5、WingetUI:帶介面的 Windows 包管理器。該專案是一個為 Windows 常用的命令列包管理工具設計的使用者介面,如 Winget、Scoop、Pip、NPM、.NET Tool 等。它的介面友好、設計美觀、支援中文,透過它你可以輕鬆下載、安裝、更新和解除安裝包管理器上釋出的任何軟體以及其它日常應用,如瀏覽器、PDF 閱讀器等。
C++ 專案
6、cppinsights:從編譯器的視角看 C++ 的程式碼。這是一個基於 Clang 的開發工具,它可以將原始碼轉化成編譯器的推導結果,讓使用者從編譯器的視角深入瞭解程式碼的內部機制,可以用來展示和講解抽象語法樹(AST)和 C++ 語言的新特性。
7、stellarium:一款開源的天象模擬軟體。該專案是天文愛好者必備神器,它能夠精確地模擬/展示出頭頂星空的景象,包括恆星、星座、行星、彗星等天體,支援選擇時間和地點、放大觀察、圖解星座等功能,提供了 Windows、Linux、macOS、iOS 和 Android 在內的多個平臺客戶端。
8、VideoPipe:跨平臺的影片結構化和分析框架。這是一個用於影片分析和結構化的框架,採用 C++ 編寫、依賴少、易上手。它就像一個管道每個節點相互獨立,可自行搭配構建出不同型別的影片分析管道,適用於影片結構化、圖片搜尋、人臉識別、安防領域的行為分析(如交通事件檢測)等場景。來自 @周智 的分享
Go 專案
9、freeze:生成程式碼圖片的終端工具。該專案可以將程式碼片段和終端輸出,轉換成 PNG、SVG 和 WebP 格式的圖片,它採用 Go 語言開發,特點是安裝簡單和易於使用,支援一條命令生成圖片,也可以透過互動模式生成定製的圖片。
# macOS or Linux
brew install charmbracelet/tap/freeze
# Arch Linux (btw)
pacman -S freeze
# Nix
nix-env -iA nixpkgs.charm-freeze
10、jaeger:開源的分散式鏈路追蹤平臺。該專案是受到 Dapper 和 OpenZipkin 的啟發,由 Uber 建立並開源的分散式呼叫鏈追蹤平臺。它可用於監控和診斷分散式應用(微服務),功能包括支援多語言、全鏈路追蹤、上下文傳遞、效能指標、視覺化和告警等。來自 @塔咖 的分享
11、opengist:GitHub Gist 的開源替代品。該專案將程式碼或文字片段儲存於 Git 倉庫中,使用者可以透過 Git 命令或 Web 檢視和修改內容,類似 GitHub 的 Gist 服務。它開源、可自託管,支援建立公開/私人片段、語法高亮、搜尋程式碼、嵌入其它網站和修改歷史等功能。
Java 專案
12、CompreFace:免費、開源的人臉識別系統。該專案提供了用於人臉識別、檢測、驗證、頭部姿勢檢測、性別和年齡識別的 REST API 服務,不用懂機器學習就能輕鬆整合到任何系統中。它後端採用 Java 編寫,人臉識別是基於 FaceNet 和 InsightFace 實現,同時支援 Docker 部署。
13、fdroidclient:免費、開源的 Android 應用商店。該專案是 F-Droid 的 Android 客戶端,專門收集各類開源安卓軟體(FOSS)的應用商店。它裡面大部分是免費且無廣告的應用,如遇到資源載入慢的情況,可透過設定映象源解決。
JavaScript 專案
14、cmdk:快速、無樣式的命令選單 React 元件。該專案可以幫助開發者輕鬆實現一個直觀且功能豐富的命令選單,類似於 ⌘K 快捷鍵喚起的互動式選單,從而提升使用者的互動體驗,適用於各種 Web 應用。來自 @Daaihang Wong 的分享
import { Command } from 'cmdk'
const CommandMenu = () => {
return (
<Command label="Command Menu">
<Command.Input />
<Command.List>
<Command.Empty>No results found.</Command.Empty>
<Command.Group heading="Letters">
<Command.Item>a</Command.Item>
<Command.Item>b</Command.Item>
<Command.Separator />
<Command.Item>c</Command.Item>
</Command.Group>
<Command.Item>Apple</Command.Item>
</Command.List>
</Command>
)
}
15、outline:開源的文件和團隊知識庫管理工具。這是一款用 React 和 Node.js 開發的線上文件編輯和協作工具,它介面美觀、功能豐富、相容 Markdown 的特點,支援中文和 Docker 部署。此外,它還提供了 Windows、macOS、iOS 和 Android 客戶端,可作為私人 wiki 或中小型公司的內部文件和知識庫平臺。
16、Photo-Sphere-Viewer:用於顯示 360° 球體全景的 JavaScript 庫。這是一個基於 Three.js 開發的全景照片檢視器,提供了友好的互動和豐富的功能。它支援多種全景圖格式和功能,包括 2:1 全景圖、六面體全景圖、全景圖分片、顯示文字、影片全景等。來自 @wanzij 的分享
17、strapi:全球領先的開源無頭 CMS。這是一款完全免費、採用 JavaScript/TypeScript 開發的無頭內容管理系統。它擁有開箱即用的 API 和友好的管理皮膚,自帶許可權管理、預設安全、SEO 友好等特點。Strapi 作為目前 GitHub 上最流行的開源內容管理系統之一,已成為多家世界 500 強公司的首選 CMS。來自 @greatYe 的分享
18、tailwind-landing-page-template:免費、開源的落地頁模板。該專案是基於 TailwindCSS、React 和 Next.js 構建的落地頁模板,它介面美觀、程式碼簡單、設計線上,適用於快速製作公司主頁、活動落地頁等。
git clone 專案
yarn install
yarn dev
# http://localhost:3000
Kotlin 專案
19、breezy-weather:極簡風格的 Android 天氣應用。這是一款非常注重設計的天氣應用程式,採用了 Material Design 設計語言。它簡約乾淨、免費無廣告、同時支援中文,可顯示未來一小時的降水情況、空氣質量、小時預報、實況天氣、花粉、溼度等各種天氣資料。
Python 專案
20、dangerzone:將不可信文件轉化為安全 PDF 的工具。這是一個確保文件安全的開源專案,它可以將存在潛在危險(來路不明、電子郵件附件)的 PDF 檔案、辦公文件或圖片,在隔離的沙盒環境中進行轉換,生成安全的 PDF 檔案。
21、great-tables:用 Python 製作漂亮的表格。這個 Python 庫可以用來製作實用且美觀的表格。它提供了一套表格元件,透過組合不同的表格部分,如表頭、表尾、行標籤(stub)以及跨列標籤(spanner labels)等,幫助 Python 開發者輕鬆製作漂亮的資料表格。來自 @Ted LI 的分享
from great_tables import GT
from great_tables.data import sp500
# Define the start and end dates for the data range
start_date = "2010-06-07"
end_date = "2010-06-14"
# Filter sp500 using Pandas to dates between `start_date` and `end_date`
sp500_mini = sp500[(sp500["date"] >= start_date) & (sp500["date"] <= end_date)]
# Create a display table based on the `sp500_mini` table data
(
GT(sp500_mini)
.tab_header(title="S&P 500", subtitle=f"{start_date} to {end_date}")
.fmt_currency(columns=["open", "high", "low", "close"])
.fmt_date(columns="date", date_style="wd_m_day_year")
.fmt_number(columns="volume", compact=True)
.cols_hide(columns="adj_close")
)
22、python-miio:用於控制小米智慧家電的 Python 庫。該專案提供了一個 Python 庫和命令列工具,可以用來控制使用小米的 miIO 和 MIoT 協議的裝置。藉助它使用者可以輕鬆地與小米智慧裝置進行通訊和遠端控制,包括掃地機器人、燈泡、空氣清淨機等,非常適合喜歡 DIY 智慧家居系統的開發者。
23、undetected-chromedriver:繞過反爬檢測的 Python 庫。這是一個經過最佳化的 Selenium WebDriver 補丁,專門用於防止瀏覽器自動化過程中,觸發反機器人機制。它能夠隱藏瀏覽器特徵(指紋),使用起來十分方便,就像一個 Python 的第三方庫一樣。
import undetected_chromedriver as uc
driver = uc.Chrome(headless=True,use_subprocess=False)
driver.get('https://nowsecure.nl')
driver.save_screenshot('nowsecure.png')
24、wereader:功能全面的微信讀書筆記助手。這是一個基於 PySide6 編寫的微信讀書桌面客戶端,不僅支援閱讀書籍的功能,還有筆記模式,可檢視你的全部讀書筆記和熱門劃線等內容。
Rust 專案
25、grex:自動生成正規表示式的命令列工具。當你不知道如何寫正則的時候,或許它能派上用場。該專案是用 Rust 語言開發的命令列工具,它可以根據使用者提供的示例內容返回對應的正規表示式,可以作為庫或命令列工具使用。來自 @size_t 的分享
26、sqlx:強大的 Rust 非同步 SQL 工具包。這是一個真正的非同步 SQL 庫,完全使用 Rust 語言開發,支援 PostgreSQL、MySQL、MariaDB、SQLite 資料庫。它提供了編譯時檢查查詢語句和自動快取語句等功能,讓 Rust 語言和 SQL 資料庫之間的互動變得輕鬆且高效。
use sqlx::postgres::PgPoolOptions;
// use sqlx::mysql::MySqlPoolOptions;
// etc.
#[async_std::main] // Requires the `attributes` feature of `async-std`
// or #[tokio::main]
// or #[actix_web::main]
async fn main() -> Result<(), sqlx::Error> {
// Create a connection pool
// for MySQL/MariaDB, use MySqlPoolOptions::new()
// for SQLite, use SqlitePoolOptions::new()
// etc.
let pool = PgPoolOptions::new()
.max_connections(5)
.connect("postgres://postgres:password@localhost/test").await?;
// Make a simple query to return the given parameter (use a question mark `?` instead of `$1` for MySQL/MariaDB)
let row: (i64,) = sqlx::query_as("SELECT $1")
.bind(150_i64)
.fetch_one(&pool).await?;
assert_eq!(row.0, 150);
Ok(())
}
27、zero-to-production:用 Rust 從零構建一個電子郵件通訊服務。該專案僅是《Zero To Production In Rust》一書的配套專案原始碼,並沒有提供書。這本書是介紹如何用 Rust 從零構建一個電子郵件通訊服務,包含開發環境配置、持續整合流程、後端 API 開發、錯誤處理以及部署的全過程。
Swift 專案
28、pika:適用於 macOS 的原生顏色選擇器。這是一個專為 macOS 設計的顏色選擇工具,它免費、快速、易用,讓你能夠在螢幕上快速找到色值。
29、reminders-menubar:極簡的 macOS 選單欄提醒工具。這是一款使用 SwiftUI 開發的小工具,能夠在 macOS 選單欄檢視/提醒待辦事項。它體積小、互動簡單、介面清爽,支援開機啟動、多語言(包括中文)、選單欄顯示計數、快捷鍵等功能。
其它
30、cat-catch:開源的媒體嗅探瀏覽器外掛。這個名為「貓爪」的瀏覽器外掛,可以幫你列出當前頁面的音樂和影片資源的下載地址。
31、containers:各種開源軟體的容器映象集合。這個專案是由 BitNami 維護和開源的 Docker 容器集合,包含各種開源軟體、系統和 Web 應用。它們都經過了最佳化和漏洞掃描,可實現 Docker 一鍵部署,輕鬆部署應用,無需繁瑣的安裝和配置過程。
docker pull bitnami/APP
docker pull bitnami/APP:[TAG]
32、ServiceLogos:超可愛的 Logo 集合。這裡是用來存放 Sawaratsuki 製作的各種 logo 的倉庫,這些 logo 製作精美、畫風可愛,包括程式語言、框架、工具和各大社交媒體的商標™️。
33、ungoogled-chromium:更純淨的 Chrome 瀏覽器。該專案是一個移除了 Chrome 瀏覽器中谷歌服務的瀏覽器,保留了完整的瀏覽器功能。
34、web-activity-time-tracker:追蹤你的上網活動時間的瀏覽器外掛。這是一款無廣告、開源的瀏覽器外掛,能記錄你在不同網站上的瀏覽時間,並提供直觀的統計資料。它支援按天和小時統計瀏覽時間、過濾干擾網站、匯出資料等功能。
開源書籍
35、how-to-learn-robotics:機器人學自學指南。這本指南專為非科班的小夥伴而設計,旨在指導他們如何學習機器人學。它包含了必備知識、入門教材推薦、實踐專案以及進階方法等內容,幫助讀者逐步成長為一名優秀的機器人工程師。
36、llm-universe:《動手學大模型應用開發》。該專案是專為小白開發者設計的大模型應用開發教程。內容涵蓋了大模型的概念介紹、如何呼叫大模型API、知識庫的搭建、構建 RAG(Retrieval-Augmented Generation)應用以及評估方法等內容。
機器學習
37、langchain:構建基於 LLM 應用的框架。LLM 是基於大資料預先訓練好的大型深度學習模型,該專案可讓 LLM 無需再訓練就能訪問新的資料集。它提供了開發 LLM 應用所需的各種模組,包括連線上下文來源和基於 LLM 進行推理的功能,從而輕鬆開發由 LLMs 支援的各種應用,比如聊天機器人、知識庫和資訊提取等。
38、LLaMA-Factory:專門針對 LLM 做微調的框架。這是一個讓微調大型語言模型變得輕鬆的開源專案,它支援 LLaMA、Mistral、ChatGLM 等多種模型,以及增量預訓練、獎勵模型訓練和精度等級等功能。引入了先進的演算法和實用的微調技巧,同時提供了便捷的監控工具,方便使用者追蹤實驗進度。
39、ollama:本地執行各種 LLM 的工具。這是一個用 Go 語言寫的工具,用於在本地一條命令安裝、啟動和管理大型語言模型,支援 Llama 3、Gemma、Mistral 等大模型,適用於 Windows、macOS、Linux 作業系統。
40、vanna:與你的 SQL 資料庫聊天。該專案使用 LLM+RAG+資料庫技術,讓使用者能夠透過自然語言查詢 SQL 資料庫,用生成的 SQL 回答你的問題。
最後
感謝參與分享開源專案的小夥伴們,歡迎更多的開源愛好者來 HelloGitHub 自薦/推薦開源專案。如果你發現了 GitHub 上有趣的專案,就點選這裡分享給大傢伙吧!
本期有你感興趣的開源專案嗎?如果有的話就留言告訴我吧~如果還沒看過癮,可以點選閱讀往期內容。
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️