《HelloGitHub》第 79 期

語言: CN / TW / HK

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

簡介

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

http://github.com/521xueweihan/HelloGitHub

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


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

C 專案

1、masscan:超快的 IP 埠掃描工具。非同步的 TCP 埠掃描器,特點就是快。最快能在 5 分鐘內掃描完整個網際網路,但要小心別把本機打掛了。 ```shell

掃描指定 IP 的全部埠

masscan -p 0-65535 IP --rate=1000 ```

2、sysbench:基於 LuaJIT 的可編寫指令碼的多執行緒基準測試工具。多用於資料庫基準測試的命令列工具,經常出現在各種知名資料庫的效能對比報告中。支援豐富的測試選項,比如表數量、資料條數、生成只讀 SQL 等。

C# 專案

3、imewlconverter:一款開源免費的輸入法詞庫轉換程式。輸入法會根據使用者的輸入和選詞頻率,形成一套符合使用者輸入習慣的詞庫,但這個詞庫無法直接轉換到其它輸入法,如果你換了輸入法就需要重新習慣、養成新的詞庫。該專案支援 20 多種輸入法的使用者詞庫相互匯入、匯出以及合併詞庫,能夠將你的輸入習慣帶到全新的輸入法。

4、jellyfin:優秀的本地媒體庫管理工具。這是一個完全免費、支援中文、安裝簡單、跨平臺、功能強大的媒體庫管理系統。它能把原本躺在資料夾裡的影片檔案,變成包含封面、描述、評分、演員表等資訊的“影碟”,讓影片整整齊齊、賞心悅目,還支援影片續播、訂閱更新、多端可看,讓你可以遠離廣告優雅地追劇。

5、PRemoteM:爽快利落的 Windows 平臺遠端桌面管理軟體。該專案致力於提供優秀的遠端桌面管理體驗,通過啟動器可以快速地連線到遠端伺服器,目前已支援 RDP、SSH、SFTP、FTP 等多種遠端連線方式。

C++ 專案

6、30dayMakeCppServer:從零編寫一個 C++ 伺服器的教程。該專案包含圖文教程和原始碼,講解了 socket、epoll、執行緒池、CMake 等知識點,適合有一定 C/C++ 基礎的小夥伴學習。

7、ImHex:保護視力的十六進位制編輯器。面向逆向工程師和程式設計師的編輯器,可用來檢視、解碼、分析和編輯二進位制資料。它功能豐富、介面炫酷、多彩高亮,而且專案更新積極,比如最初不支援中文路徑的問題,現已解決可正常使用。

8、NotepadNext:Notepad++ 的開源替代品。採用 C++ 重寫的跨平臺文字編輯器,擁有和 Notepad++ 相似的介面和功能。

9、srs:一款簡單、高效的實時影片伺服器。高效能的流媒體伺服器,支援 RTMP、WebRTC、HLS 和 HTTP-FLV 等協議,常用來構建直播和影片會議的後端服務。

Go 專案

10、env:用於解析環境變數的 Go 語言庫。一般情況下專案啟動時需要的配置引數,都是通過環境變數傳遞的。該專案就是 Go 語言用來解析環境變數的庫,它簡單、體積小、零依賴。 ```go package main

import ( "fmt" "time"

"github.com/caarlos0/env/v6"

)

type config struct { Home string env:"HOME" Port int env:"PORT" envDefault:"3000" Password string env:"PASSWORD,unset" IsProduction bool env:"PRODUCTION" Hosts []string env:"HOSTS" envSeparator:":" Duration time.Duration env:"DURATION" TempFolder string env:"TEMP_FOLDER" envDefault:"${HOME}/tmp" envExpand:"true" }

func main() { cfg := config{} if err := env.Parse(&cfg); err != nil { fmt.Printf("%+v\n", err) }

fmt.Printf("%+v\n", cfg)

} ```

11、k8s-tutorials:免費的 Kubernetes 教程。K8s 作為雲原生時代的必備技能之一,多少得會一些。該教程側重於實戰引導,用 Go 寫的專案作為演示物件,從最基礎的容器定義開始,逐一講述 pod、deployment、service、ingress 等資源,直到用 helm 打包部署一套完整服務。

12、mizu:強大的 Kubernetes API 流量檢視工具。如果把 k8s 比作作業系統,那它就是 k8s 上的 tcpdump,使用起來就像 Chrome 開發者工具一樣簡單直接,能夠讓 k8s 上微服務之間的網路通訊一覽無遺。

13、rod:Go 語言的網頁自動化和爬蟲庫。該專案是 Go 語言封裝的 DevTools 協議庫,實現用 Go 語言操作瀏覽器,自動化之前需要手動完成的操作,比如:爬取客戶端渲染的頁面、端到端測試、自動填寫表單、模擬點選等操作。專案包含豐富的示例程式碼,改改就能上手使用。 ```go package main

import ( "github.com/go-rod/rod" )

func main() { page := rod.New().MustConnect().MustPage("http://hellogithub.com") page.MustWaitLoad().MustScreenshot("a.png") } ```

14、trivy:一款全面的容器安全掃描工具。目前最流行的開源容器映象漏洞掃描工具,擁有速度快、精準度高、依賴檢測、機密檢查、對 CI 友好等特點。它不僅安裝簡單而且容易上手,僅需一條命令,即可發現映象存在的安全漏洞。 ```shell

安裝

docker pull aquasec/trivy:0.33.0

執行

trivy image [YOUR_IMAGE_NAME] ```

Java 專案

15、GoodWeather:從零開發 Android 天氣 APP。該專案介紹瞭如何開發一款支援天氣預報、城市搜尋、空氣質量、自動更新等功能的 Android 應用,內含原始碼和配套講解博文。

16、jvm-sandbox:一種 JVM 的非侵入式執行期 AOP 解決方案。簡單點說就是如果線上 Java 服務出現故障,需要加一條日誌定位問題,通過該專案可以在不重新部署服務的情況下,完成增加日誌的操作。它還支援線上故障模擬、請求錄製和結果回放等功能。

17、spring-cloud-tencent:騰訊開源的一站式微服務解決方案。基於 Spring Cloud 的服務治理框架,提供了微服務領域常見的服務註冊與發現、配置中心、服務路由、限流熔斷以及元資料鏈路透傳等能力。

JavaScript 專案

18、ava:可以併發執行 JavaScript 測試的工具。這是一款 Node.js 的測試執行工具,擁有簡潔的 API、詳細的錯誤輸出、較高的執行效率等特點。

19、kbar:為你的站點提供命令面板介面的元件。這是一個即插即用的 React 元件,可以快速地為站點增加命令面板功能。讓使用者可以通過快捷鍵,靈活、互動式地訪問網站。

20、LogicFlow:滴滴開源的流程圖編輯框架。該專案提供了一系列流程圖互動和編輯的功能,支援實現腦圖、ER 圖、UML、工作流等各種場景。

21、min:一款最小化的瀏覽器。它是僅包含搜尋、書籤、密碼管理、廣告遮蔽器等最基礎功能的極簡瀏覽器,適用於 Windows、Linux、macOS 作業系統。

22、PPTist:線上編輯和演示 PPT 的應用。該專案採用 Vue3+TypeScript 構建,還原了大部分 Office PowerPoint 常用功能,支援線上編輯、演示和匯出 PPT 檔案。

Kotlin 專案

23、uhabits:一款幫助建立和維持好習慣的應用。該軟體完全免費、支援中文、無廣告和內購,在 Google 應用商店上有 500 萬的下載量。首先使用者需要在 APP 上新建一個習慣,可以設定頻率、量化任務、提醒時間等,每當完成一次習慣就在應用上做一個標記,後面會有詳細的圖表展示習慣養成情況。

Python 專案

24、latexify_py:用於生成 LaTeX 數學公式的 Python 庫。LaTeX 是一種基於 ΤΕΧ 的排版系統,對於展示覆雜的數學公式表現極為出色。該專案可以用 Python 函式,輕鬆生成複雜的 LaTeX 數學公式描述。 ```python import math import latexify

@latexify.with_latex def solve(a, b, c): return (-b + math.sqrt(b2 - 4ac)) / (2*a)

print(solve(1, 4, 3)) print(solve)

輸出如下

-1.0

\mathrm{solve}(a, b, c)\triangleq \frac{-b + \sqrt{b^{2} - 4ac}}{2a}

```

25、matrix-webcam:在“矩陣”中進行影片會議。可以讓你在影片會議時,實現類似《黑客帝國》數字雨的效果,支援 Teams/Zoom/Skype 影片軟體,適用於 Windows、macOS、Linux 作業系統。

26、pdf2docx:可將 PDF 轉換成 docx 檔案的 Python 庫。該專案通過 PyMuPDF 庫提取 PDF 檔案中的資料,然後採用 python-docx 庫解析內容的佈局、段落、圖片、表格等,最後自動生成 docx 檔案。 ```python from pdf2docx import parse

pdf_file = '/path/to/sample.pdf' docx_file = 'path/to/sample.docx'

convert pdf to docx

parse(pdf_file, docx_file) ```

27、schedule:簡單友好的 Python 任務排程庫。該專案人性化的 API 設計,讓開發者僅用幾行程式碼就能輕鬆實現定時任務。它不依賴任何第三方庫,全部程式碼也就一個檔案 800 多行,擁有豐富的註釋和單元測試,原始碼閱讀起來十分輕鬆。 ```python import schedule import time

def job(): print("I'm working...")

schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) schedule.every().monday.do(job) schedule.every().wednesday.at("13:15").do(job) schedule.every().minute.at(":17").do(job)

while True: schedule.run_pending() time.sleep(1) ```

28、Umi-OCR:基於 PaddleOCR 的 OCR 圖片轉文字識別軟體。完全免費、可離線使用的開源軟體,支援截圖識別文字、批量匯入圖片、橫/豎排文字,還可以自動忽略水印區域,適用於 Win10 作業系統。

Ruby 專案

29、linguist:GitHub 官方開源的識別專案程式語言的庫。該專案是 GitHub.com 網站上,用於檢測開源專案程式語言佔比的庫。 ```shell

安裝

gem install github-linguist

在專案根目錄下執行命令

github-linguist

結果

66.84% 264519 Ruby 24.68% 97685 C 6.57% 25999 Go 1.29% 5098 Lex 0.32% 1257 Shell 0.31% 1212 Dockerfile ```

Rust 專案

30、atuin:神奇的 shell 歷史記錄工具。該專案通過 SQLite 資料庫儲存 shell 歷史,能夠顯示更多的 shell 歷史、命令執行時間、執行時間等資訊,還支援選擇、過濾、統計、同步/備份等操作。 ```

搜尋昨天下午3點之後記錄的所有成功的 make 命令

atuin search --exit 0 --after "yesterday 3pm" make ```

31、this-week-in-rust:Rust 語言社群的每週摘要。該專案是由 Rust 社群發起,每週釋出一期 Rust 相關動態,包括 Rust 語言的文章、影片、音訊、開源專案分享,以及本週的更新(PR)、RFC(徵求意見)和開發進度。

Swift 專案

32、isowords:3D 魔方單詞消消樂遊戲。這是一款用 Swift 編寫的 iOS 遊戲,玩家可以選擇 3D 立方體上的字母組成英文單詞,如果一個字母被使用 3 次,該字母立方體就會消失,顯示下面更多的字母。支援限時、無限、多人三種遊戲模式,以及每日挑戰和全球排行榜。

33、swift-benchmark:用於對 Swift 程式碼片段進行基準測試的庫。該專案是谷歌開源的用來測試 Swift 程式碼片段效能的庫。 ```swift import Benchmark

benchmark("add string reserved capacity") { var x: String = "" x.reserveCapacity(2000) for _ in 1...1000 { x += "hi" } }

Benchmark.main() ```

其它

34、code2flow:為動態語言生成呼叫圖的工具。可根據原始碼檔案生成漂亮的呼叫圖的命令列工具,支援 Python、JavaScript、Ruby 等動態語言。 ```shell

安裝

pip3 install code2flow

使用

code2flow 檔案 ```

35、Codex-CLI:讓終端理解自然語言命令的工具。該專案使用 GPT-3 Codex 可將自然語言命令,轉換為 PowerShell、Zsh 和 Bash 中的命令,比如輸入 what‘s my IP?就能得到本機 IP。

36、collisions:講解和演示雜湊衝突的專案。包含了攻擊介紹、演示檔案和示例程式碼,快速理解 MD5 訊息摘要演算法的弱點,比如兩個不同內容的檔案生成相同 MD5 值。

37、rally:ES 官方開源的壓力測試工具。基於 Python3 的 ES 壓力測試命令列工具,功能豐富支援自動建立、執行、銷燬 ES 叢集,以及不同資料集的測試結果比較。 ```shell 安裝: pip3 install esrally

執行: esrally

命令: race Run a benchmark list List configuration options info Show info about a track create-track Create a Rally track from existing data generate Generate artifacts compare Compare two races download Downloads an artifact install Installs an Elasticsearch node locally start Starts an Elasticsearch node locally stop Stops an Elasticsearch node locally ```

38、testssl.sh:測試 TLS/SSL 加密的工具。它可以用來檢查 Web 服務是否支援 TLS/SSL 加密和協議,以及存在的缺陷。

開源書籍

39、craftinginterpreters:《Crafting Interpreters》手擼直譯器。該書作者在 Google 從事 Dart 語言的相關工作,書中內容是從一門小型自創程式語言 Lox 開始,詳細介紹瞭如何為該語言製作直譯器和虛擬機器,推薦給想要學習編譯原理或自創程式語言的同學。

40、ThinkDSP:《Think DSP》Python 數字訊號處理。本書內容是將 Python 程式碼和數字訊號處理結合,相較於乾巴巴的文字,通過程式碼示例更容易理解相關概念,該書作者還著有《Think Python》等圖書。

機器學習

41、motion-diffusion-model:根據文字生成 3D 人體運動的模型。論文《Human Motion Diffusion Model》第一作者開源的 PyTorch 實現。

42、whisper:OpenAI 開源的多語言識別系統。該專案是強大的自動語音識別系統,支援包括中文在內的多種語言識別。尤其是在快語速、口音、背景噪音等場景,依舊錶現出色,能夠達到極高的準確率。 ```python import whisper

model = whisper.load_model("base") result = model.transcribe("audio.mp3") print(result["text"])

命令列使用

$ whisper --language Chinese --model large audio.wav

[00:00.000 --> 00:08.000] 如果他們使用航空的方式運輸貨物在某些航線上可能要花幾天的時間才能卸貨和通關

```

最後

如果你發現了 GitHub 上有趣的專案,就點選分享給大傢伙吧。

以上就是本期的所有內容了,往期內容點選閱讀

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