《HelloGitHub》第 99 期

削微寒發表於2024-06-28

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

簡介

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

github.com/521xueweihan/HelloGitHub

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


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

C 專案

1、HandBrake:免費的開源影片轉碼工具。這是一款功能強大、社群驅動的開源影片轉碼工具,它支援將各種不同格式的影片檔案,轉換為 MP4 和 MKV 等常見格式。

C# 專案

2、SwashbucklerDiary:記錄生活點滴的俠客日記。這個專案的作者因為喜歡寫日記,所以開發了這款離線優先的日記應用。它擁有簡潔清爽的介面,使用者可以選擇記錄日記時的天氣、心情和位置。除了支援 Web 線上使用外,還提供了 Android、Windows、iOS 和 macOS 客戶端。

3、SyncClipboard:跨平臺的剪貼簿同步工具。該專案可以輕鬆實現不同裝置間剪貼簿內容同步,支援文字、圖片和檔案。使用時可以選擇自己部署服務端,或者使用支援 WebDAV 協議的網盤。

C++ 專案

4、ladybird:真正獨立的開源瀏覽器。該專案作者想要從頭構建一個真正獨立的 Web 瀏覽器,所以他從自己寫的 SerenityOS 作業系統中分離出瀏覽器引擎部分,計劃基於此做一個全新、跨平臺的開源瀏覽器。目前專案處於早期階段,尚未釋出可供下載的安裝包。

5、mosh:適用於移動端的遠端終端工具。這是一款專為移動和不穩定的網路環境設計的遠端終端工具,它能夠在網路切換、高延遲和 IP 變化的情況下,保持遠端會話的穩定和更快的響應,適用於 Android、iOS、Linux 和 macOS 等系統。

6、OpenArk:專業的 Windows 惡意程式分析與清理工具。這是一款 Windows 平臺上的對抗和清理 Rootkit(惡意程式)工具,它能夠幫助程式設計師發現系統中隱藏的惡意軟體,支援檢視程序、程序注入、核心驅動模式和掃描等功能。來自 @SHOWTA 的分享

Go 專案

7、dblab:互動式的資料庫命令列客戶端。這是一個用 Go 編寫的輕量級、互動式的 TUI 資料庫客戶端,它開箱即用、方便快捷,支援 PostgreSQL、MySQL、SQLite3 和 Oracle 資料庫,不是桌面工具用不起,而是命令列的更有價效比。

8、go-size-analyzer:分析 Go 編譯後檔案大小的工具。該專案透過逆向工程和反彙編,收集二進位制檔案中的地址,合併後計算出每個依賴在最終的二進位制檔案中所佔大小,並透過視覺化的方式展示出來。它可以用來分析 Go 程式編譯後的檔案體積,支援命令列和 Web 兩種使用方式。來自 @Zxilly 的分享

9、gws:簡單、快速的 Go WebSocket 庫。該專案是用 Go 編寫的 WebSocket 庫,它提供了簡潔明瞭的 API,具備高吞吐、低延遲、低記憶體佔用、穩定可靠的特點,可用於高併發場景,支援上下文接管、自定義視窗大小和廣播等功能。來自 @道一 的分享

10、river:基於 Postgres 的後臺任務管理平臺。該專案是基於 Go+Postgres 資料庫開發的任務佇列,它內建 Web 管理後臺,支援自動重試、定時任務和優先順序等功能。

11、watermill:快速開發事件驅動應用的 Go 庫。這是一個能夠高效處理訊息流的 Go 庫,即釋出/接收訊息並做出反應。它上手容易,支援 Kafka、RabbitMQ、HTTP 和 MySQL binlog 等訊息中介軟體,適用於處理實時資料流、分散式事務和微服務通訊等場景。來自 @DeShuiYu 的分享

// ...
func main() {
	saramaSubscriberConfig := kafka.DefaultSaramaSubscriberConfig()
	// equivalent of auto.offset.reset: earliest
	saramaSubscriberConfig.Consumer.Offsets.Initial = sarama.OffsetOldest

	subscriber, err := kafka.NewSubscriber(
		kafka.SubscriberConfig{
			Brokers:               []string{"kafka:9092"},
			Unmarshaler:           kafka.DefaultMarshaler{},
			OverwriteSaramaConfig: saramaSubscriberConfig,
			ConsumerGroup:         "test_consumer_group",
		},
		watermill.NewStdLogger(false, false),
	)
	if err != nil {
		panic(err)
	}

	messages, err := subscriber.Subscribe(context.Background(), "example.topic")
	if err != nil {
		panic(err)
	}

	go process(messages)
// ...

Java 專案

12、spring-reading:Spring 原始碼閱讀。這是一份講解 Spring 原始碼的圖文教程,內容涵蓋了 Spring 框架的核心概念和關鍵功能,而且還貼心地標註了難度等級,更加便於學習。來自 @Lex 的分享

13、xpipe:一鍵遠端登入 Docker 例項的工具。該專案是用於管理遠端伺服器的桌面工具,它會在 SSH 連線到伺服器後,自動檢測伺服器環境和 shell 型別,實現一鍵登入各種容器例項(Docker、LXC、WSL),並支援遠端檔案管理和工具整合等功能。來自 @孤膽槍手 的分享

JavaScript 專案

14、earthworm:讓你上癮的英語學習網站。這是一個開源的線上學習英語網站,支援自託管和本地執行。它採用連詞成句、循序漸進的方法幫你學習英語。透過不斷地重複形成肌肉記憶,並結合遊戲獎勵和積分排名的方式,讓背單詞變得有趣且高效。來自 @Immerse 的分享

15、million:最佳化 React 元件效能的工具。該專案是專為 React 應用設計的最佳化編譯器,它透過最佳化虛擬 DOM 和直接更新 DOM 節點,來減少頁面更新的耗時,從而提升 React 元件效能,最高可達 70%,支援 VSCode 外掛和命令列的使用方式。

16、pouchdb:開源的 JavaScript 資料庫。該專案是用 JavaScript 編寫、執行在瀏覽器裡的 NoSQL 資料庫,它能夠在離線狀態下將資料儲存至本地,並在網路恢復後自動同步資料,保持資料與伺服器同步。

var db = new PouchDB('dbname');

db.put({
  _id: 'hellogithub-1',
  name: 'HelloGitHub',
  age: 69
});

db.changes().on('change', function() {
  console.log('Ch-Ch-Changes');
});

db.replicate.to('遠端資料庫地址');

17、stf:透過瀏覽器控制多臺 Android 裝置。這是一個用 Node.js 開發的安卓智慧裝置群測工具,它提供了一個可遠端除錯多臺 Android 裝置的 Web 平臺,支援 Android 手機和手錶等裝置。來自 @wang-qa 的分享

18、ua-parser-js:解析 User-Agent 的 JS 庫。這是一個用於解析 User-Agent 的庫,它可將使用者代理字串解析為 UAParser 物件,便於檢測和檢視使用者的瀏覽器、作業系統、CPU 和裝置型號等資訊。

const parser = new UAParser(ua);

console.log(parser.getResult());
/*
{
    ua: "Mozilla/5.0 (Linux; Android 10; STK-LX1 Build/HONORSTK-LX1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/110.0.5481.153 Mobile Safari/537.36 musical_ly_2022803040 JsSdk/1.0 NetType/WIFI Channel/huaweiadsglobal_int AppName/musical_ly app_version/28.3.4 ByteLocale/en ByteFullLocale/en Region/IQ Spark/1.2.7-alpha.8 AppVersion/28.3.4 PIA/1.5.11 BytedanceWebview/d8a21c6",
    browser: {
        name: "TikTok",
        version: "28.3.4",
        major: "28"
    },
    cpu: {},
    device: {
        type: "mobile",
        model: "STK-LX1",
        vendor: "Huawei"
    },
    engine: {
        name: "Blink",
        version: "110.0.5481.153"
    },
    os: {
        name: "Android",
        version: "10"
    }
}
*/

PHP 專案

19、openemr:免費的開源醫院管理系統。該專案是目前最流行的開源醫院管理系統,它整合了醫院日常運營所需的所有功能,如預約、患者檔案、電子計費和醫療記錄等,同時支援中文在內的 30 多種語言。

Python 專案

20、CleanMyWechat:自動刪除電腦端微信快取資料的工具。該專案是用 PyQt5 寫的 Windows 工具,它可以清理微信電腦客戶端自動下載的無用資料,支援自動識別賬號、多賬號管理,以及選擇清理檔案的型別和設定清理多久以前檔案等功能。

21、searxng:尊重個人隱私的 Python 元搜尋引擎。該專案是基於 Flask 構建的聚合搜尋引擎,能夠整合來自 70 多個搜尋引擎的搜尋結果。它安裝簡單、不追蹤使用者行為,支援選擇搜尋引擎、安全搜尋和多語言等功能。來自 @孤膽槍手 的分享

22、vulture:Python 的“死”程式碼偵探。這是一個 Python 的靜態程式碼分析工具,它可以找出 Python 專案中未使用的程式碼,僅需一條命令,就能清理沒用和無效的 Python 函式、變數和程式碼片段。

23、warp:編寫高效能模擬程式的 Python 框架。該專案是英偉達開源的 Python 框架,它透過即時編譯技術將 Python 程式碼,轉換為可以在 CPU 或 GPU 上執行的高效核心程式碼,可用於編寫模擬物理環境、碰撞檢測和圖形處理等程式。

import warp as wp
import numpy as np

num_points = 1024

@wp.kernel
def length(points: wp.array(dtype=wp.vec3),
           lengths: wp.array(dtype=float)):

    # thread index
    tid = wp.tid()
    
    # compute distance of each point from origin
    lengths[tid] = wp.length(points[tid])


# allocate an array of 3d points
points = wp.array(np.random.rand(num_points, 3), dtype=wp.vec3)
lengths = wp.zeros(num_points, dtype=float)

# launch kernel
wp.launch(kernel=length,
          dim=len(points),
          inputs=[points, lengths])

print(lengths)

24、wsgidav:基於 WSGI 的 WebDAV 伺服器。WebDAV 是一種允許在網路上直接編輯和管理檔案的通訊協議,多用於文件共享、雲端儲存和檔案同步等場景。該專案是用 Python 寫的 WebDAV 伺服器,可獨立執行、自帶簡單的 Web 介面,支援 MS Office 文件線上編輯和身份驗證等功能。

Ruby 專案

25、lolcommits:基於 Git 的程式設計師自拍。該專案能在每次用 git 提交程式碼時,自動使用攝像頭拍照,並在照片上標記 commit ID,這樣不僅可以記錄“生活”,還能一眼找到程式碼的作者。

Rust 專案

26、100-exercises-to-learn-rust:學習 Rust 的 100 個練習。該教程秉承著邊學邊做的原則,內含大約 100 道練習題和答案,帶你從零開始學習 Rust 程式語言。

27、crossbeam:Rust 併發程式設計工具庫。在 Rust 的併發程式設計世界中,它就像一把瑞士軍刀,提供了豐富且強大的無鎖併發資料結構和工具,極大地提升了 Rust 併發程式設計的效率。來自 @DeShuiYu 的分享

28、zellij:更容易上手的終端複用器。該專案是一個 Rust 寫的終端多路複用器,支援單視窗多標籤、分割視窗和自動恢復連線等功能。它提供了開箱即用的預設配置,同時擁有強大的外掛系統,從而深受初學者和高階使用者的喜愛。

Swift 專案

29、Loop:一款優雅的 macOS 視窗管理工具。這是一款極簡的 macOS 視窗管理應用,它無需複雜的配置,即可透過簡單的組合鍵,輕鬆實現移動視窗位置、調整視窗大小以及排列視窗,互動十分優雅,使用體驗極佳。

30、noTunes:禁用 iTunes 的工具。這是一款 macOS 應用,它可以阻止 iTunes 或 Apple Music 自動啟動和彈出,還支援設定 iTunes 的替代品。

其它

31、anx-reader:免費的 Android 電子書閱讀器。這是一款用 Flutter 編寫的電子書閱讀軟體,它免費且沒廣告,支援 WebDAV 同步電子書、筆記和閱讀進度,適用於 Android 手機和平板電腦。

32、etcher:簡單易用的 USB/SD 啟動盤製作工具。該專案可以將作業系統映象燒錄進 SD 卡或 USB 裝置,可用於製作可啟動、行動式的作業系統。它擁有友好的操作介面,僅需 3 步就能完成 USB 啟動盤製作,適用於 Linux、macOS 和 Windows 10 及更高版本。

33、GmsCore:谷歌服務框架的開源替代品。該專案是一個開源的替代 Google Play 服務的解決方案,它可以讓無法安裝或不想用 Google 服務的使用者,執行依賴谷歌服務的 Android 應用。

34、OpenGlass:低成本的 AI 智慧眼鏡。該專案僅需 25 美元,就可以將普通的眼鏡升級成 AI 智慧眼鏡。它支援錄製影片、識別物體和翻譯文字等功能,但需要與電腦配合使用,不支援在鏡片上顯示內容。

35、scribe:用 HTML 的方式展示樂譜。該專案透過 CSS+SVG+HTML 程式碼,實現了在網頁上顯示音樂符號和樂譜。

36、WTF-zk:零知識證明入門教程。這是一份入門級的零知識證明教程,零知識證明是一種技術,允許一方在不洩露任何具體資訊的情況下向另一方證明某件事為真,多用於密碼學、隱私計算和 Web3 等領域。

開源書籍

37、introduction-to-bash-scripting:《Bash 指令碼入門指南》。這是一本教你如何編寫出色的 Bash 指令碼的開源書籍。

38、PyTorch-Tutorial-2nd:《Pytorch 實用教程》。這本書不僅全面介紹了 PyTorch 的基礎知識,還包含豐富的 PyTorch 實戰案例和大型語言模型部署例項,能幫你快速上手 PyTorch,並具備出色的開發能力。來自 @TingsongYu 的分享

機器學習

39、gateway:大型語言模型 API 聚合閘道器。該項透過提供統一且快速的 API,讓開發者能夠輕鬆訪問超過 200 個 LLMs,還支援多模態、自動重試和負載均衡等功能。

40、MoneyPrinterTurbo:一鍵生成短影片的 AI 工具。該專案是基於大模型服務的 AI 影片生成工具,只需要提供一個主題或關鍵字,就可以自動生成高畫質的短影片。它擁有簡單易用的 Web 介面,支援批次生成、設定影片時長和橫/豎屏尺寸等功能。來自 @jolahua 的分享

41、Omost:極簡提示詞的文生圖工具。該專案基於 LLM 的程式設計能力幫使用者自動完善文生圖的提示詞,可以根據使用者輸入的簡短提示詞生成高質量的圖片,還支援圖片區域性修改等功能,比如將圖片中的龍變成恐龍,極大地降低了編寫文生圖的門檻,無需複雜的提示詞即可生成滿意的圖片。

42、Scrapegraph-ai:基於 AI 的 Python 爬蟲。這是一個由 AI 驅動的 Python 爬蟲庫,它藉助 LLM 的能力,可以根據提示詞自動抓取目標網站的資料。

smart_scraper_graph = SmartScraperGraph(
    prompt="List me all the projects with their descriptions",
    source="目標網站",
    config=graph_config
)

result = smart_scraper_graph.run()
print(result)

最後

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

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

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

相關文章