《HelloGitHub》第 77 期
- 2022 年 8 月 29 日
- 筆記
- HelloGitHub
興趣是最好的老師,HelloGitHub 讓你對編程感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。
這裡有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種程式語言 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)、投屏、直播、電視、Podcast等源。能夠運行在 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("//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 的回合制策略遊戲,玩家可以在遊戲中模擬創建帝國文明,相當於開源版的《文明》Android手游。雖然遊戲畫面是像素風格,但並未影響遊戲體驗,遊戲支援中文、內容豐富可玩性非常高。
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搜索服務。這是一個注重保護用戶隱私的元搜索引擎,它會返回過濾掉廣告後的 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() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::blocking::get("//httpbin.org/ip")?
.json::<HashMap<String, String>>()?;
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 插件,使用起來十分方便。
最後
如果你發現了 GitHub 上有趣的項目,就點擊分享給大傢伙吧。
以上就是本期的所有內容了,往期內容點擊閱讀
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️