《HelloGitHub》第 79 期

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

簡介

HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。

//github.com/521xueweihan/HelloGitHub

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


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

C 項目

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

# 掃描指定 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 語言用來解析環境變數的庫,它簡單、體積小、零依賴。

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 語言操作瀏覽器,自動化之前需要手動完成的操作,比如:爬取客戶端渲染的頁面、端到端測試、自動填寫表單、模擬點擊等操作。項目包含豐富的示例程式碼,改改就能上手使用。

package main

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

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

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

# 安裝
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 數學公式描述。

import math
import latexify

@latexify.with_latex
def solve(a, b, c):
    return (-b + math.sqrt(b**2 - 4*a*c)) / (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 文件。

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 多行,擁有豐富的注釋和單元測試,源碼閱讀起來十分輕鬆。

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 網站上,用於檢測開源項目程式語言佔比的庫。

# 安裝
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 程式碼片段進行基準測試的庫。該項目是Google開源的用來測試 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 等動態語言。

# 安裝
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 集群,以及不同數據集的測試結果比較。

安裝:
    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 開源的多語言識別系統。該項目是強大的自動語音識別系統,支援包括中文在內的多種語言識別。尤其是在快語速、口音、背景噪音等場景,依舊錶現出色,能夠達到極高的準確率。

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 上有趣的項目,就點擊分享給大傢伙吧。

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

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