《HelloGitHub》第 78 期
興趣是最好的老師,HelloGitHub 讓你對編程感興趣!

簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。
https://github.com/521xueweihan/HelloGitHub
這里有實戰(zhàn)項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift...讓你在短時間內(nèi)感受到開源的魅力,對編程產(chǎn)生興趣!
以下為本期內(nèi)容|每個月 28 號更新
C 項目
1、gifsicle:壓縮和編輯 GIF 圖片的工具。它是一款體積小、功能強大的 GIF 圖片處理工具,不僅可以壓縮 GIF 圖片,還支持合并多個 GIF、導(dǎo)出所有幀、查看圖片信息、減少幀數(shù)、設(shè)置循環(huán)次數(shù)、延遲、編輯某一幀等功能。
# 安裝
brew install gifsicle
# 查看
gifsicle -I input.gif | head
# 優(yōu)化/壓縮
gifsicle input.gif -O3 -o output.gif
地址:https://github.com/kohler/gifsicle
2、CPU-X:一款顯示電腦 CPU、主板等信息的免費工具。能夠顯示設(shè)備的 CPU、主板、內(nèi)存、顯卡、操作系統(tǒng)等信息,支持 GUI 和命令行兩種啟動方式,適用于 Linux 和 FreeBSD 操作系統(tǒng)。

地址:https://github.com/X0rg/CPU-X
3、acl:一款跨平臺的網(wǎng)絡(luò)通信庫和服務(wù)器框架。它既可以做網(wǎng)絡(luò)通信的客戶端,也可以編寫服務(wù)器端,支持 HTTP、SMTP、ICMP、MQTT、Redis、Memcache 多種常見協(xié)議,以及 XML、JSON、BASE64 等編碼格式。
lib_acl:最基礎(chǔ)的庫 lib_protocol:實現(xiàn)了 HTPP 協(xié)議及 ICMP/PING 協(xié)議 lib_fiber:該庫為支持協(xié)程庫,直接 hook 系統(tǒng) read/write 等 API,與 epoll 配合支持高并發(fā)網(wǎng)絡(luò)編程

地址:https://github.com/acl-dev/acl
C# 項目
4、XCharts:Unity 數(shù)據(jù)可視化圖表插件。一款基于 Unity UGUI 的圖表插件,它功能強大、簡單易用,支持折線圖、柱狀圖、餅圖、雷達圖、散點圖、熱力圖、環(huán)形圖、K 線圖等多種圖表。

地址:https://github.com/XCharts-Team/XCharts
5、WinDynamicDesktop:類似 macOS 動態(tài)桌面的工具。該項目是將 macOS 動態(tài)桌面功能移植到 Windows 10,它可以基于你的位置計算出日出和日落的時間,并根據(jù)當前時間動態(tài)改變桌面壁紙,已上架 Microsoft 應(yīng)用商店。

地址:https://github.com/t1m0thyj/WinDynamicDesktop
6、Text-Grab:一個輕量級的 Windows OCR 工具。它基于 Windows 10 系統(tǒng)自帶的 OCR API 實現(xiàn),可以將看到的所有文字轉(zhuǎn)化成文本,而且啟動速度快、無需常駐后臺、可離線使用。

地址:https://github.com/TheJoeFin/Text-Grab
C++ 項目
7、kys-cpp:游戲《金庸群俠傳》的 C++ 復(fù)刻版。基于 SDL2 開發(fā)的《金庸群俠傳》游戲,資源大部分來自 DOS 版本,目前已完工可以正常運行。

地址:https://github.com/scarsty/kys-cpp
8、Cemu:任天堂 Wii U 游戲機模擬器。用 C++ 編寫的開源 Wii U 模擬器,能夠運行絕大多數(shù)的 Wii U 游戲和自制游戲,支持 Windows、Linux、macOS 操作系統(tǒng)。

地址:https://github.com/cemu-project/Cemu
9、wiliwili:專為手柄控制設(shè)計的第三方 B 站客戶端。一個用 C++ 編寫的適用于 Nintendo Switch 的 B 站客戶端,擁有接近 B 站官方 PC 客戶端的瀏覽體驗,同時支持觸屏與手柄按鍵操控。

地址:https://github.com/xfangfang/wiliwili
10、aseprite:開源、專業(yè)的像素畫編輯軟件。一款主要用于像素畫和 Sprite 動畫的圖像編輯軟件,它擁有圖層、自由手繪模式、陰影墨水、自定義筆刷、輪廓線、寬像素、命令行界面、Lua 腳本等特色功能。該軟件雖然專業(yè)版收費但并不貴,也可選擇免費版但無法保存作品。

地址:https://github.com/aseprite/aseprite
CSS 項目
11、30diasDeCSS:在 30 天內(nèi)用 HTML 和 CSS 創(chuàng)建 30 個迷你項目的挑戰(zhàn)。該項目包含了 30 個用 HTML+CSS 構(gòu)建的迷你項目,每個項目通過動圖直觀地展示了實現(xiàn)的效果,不僅包含全部源碼還指出了用到的知識點。

地址:https://github.com/MilenaCarecho/30diasDeCSS
Go 項目
12、HackBrowserData:一款瀏覽器數(shù)據(jù)導(dǎo)出工具。能夠?qū)С霰镜貫g覽器的密碼、歷史記錄、Cookie、書簽、下載記錄、localStorage 等數(shù)據(jù)的命令行工具,支持多平臺下的多種主流瀏覽器。

地址:https://github.com/moonD4rk/HackBrowserData
13、fq:一條命令查看二進制文件。用于查看和處理二進制文件的命令行工具,安裝簡單使用方便,支持 mp4、flac、mp3、jpeg 等多種格式的文件。

地址:https://github.com/wader/fq
14、statsviz:實時展示 Go 程序運行時指標的 Web 應(yīng)用。該項目通過圖表可視化的方式,實時展示 Go 程序運行時的堆、對象、Goroutines、MSpan/MCache 等信息。
mux := http.NewServeMux()
statsviz.Register(mux)

地址:https://github.com/arl/statsviz
15、v2:極簡的 feed 訂閱工具。該項目的“簡”是由內(nèi)而外,內(nèi)部代碼部分不使用 Web 框架和 ORM 僅采用 Go+PostgreSQL+JS 實現(xiàn),界面樸實無華、功能精簡實用,支持快速自建、源管理、自動獲取內(nèi)容、快捷鍵、用戶系統(tǒng)等,這一切不多不少剛剛好。

地址:https://github.com/miniflux/v2
16、cobra:當下最流行的 Go CLI 框架。功能強大且極易上手的 Go 語言 CLI 庫,可用于快速構(gòu)建命令行程序,被 K8s、Hugo、GitHub CLI 等眾多知名 Go 項目所采用,支持自動提示、自動構(gòu)建項目、嵌套子命令等功能。
var rootCmd = &cobra.Command{
Use: "hugo",
Short: "Hugo is a very fast static site generator",
Long: "A Fast and Flexible Static Site Generator built with love by spf13",
Run: func(cmd *cobra.Command, args []string) {
// Do Stuff Here
},
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}

地址:https://github.com/spf13/cobra
Java 項目
17、hippo4j:帶有監(jiān)控報警功能的動態(tài)線程池框架。支持運行時動態(tài)變更線程池參數(shù),可實時查看線程池運行時數(shù)據(jù),適配 RocketMQ、RabbitMQ、Tomcat 等中間件,解決了線程池參數(shù)不易評估以及運行時黑盒的問題。
@Bean
@DynamicThreadPool
public Executor sendMessageConsumeDynamicThreadPool() {
String threadPoolId = "send-message-consume";
ThreadPoolExecutor sendMessageConsume = ThreadPoolBuilder.builder()
.threadPoolId(threadPoolId)
.threadFactory(threadPoolId)
.dynamicPool()
.build();
return sendMessageConsume;
}
地址:https://github.com/opengoofy/hippo4j
18、ghidra:一款免費開源的軟件逆向分析工具。該項目由美國國安局開源,可用于分析編譯后的代碼。

地址:https://github.com/NationalSecurityAgency/ghidra
19、caffeine:Java 的高性能緩存庫。借鑒了 Guava 和 ConcurrentLinkedHashMap 的設(shè)計經(jīng)驗,青出于藍而勝于藍的 Java 本地緩存庫,擁有更高的緩存命中率和更快的讀寫速度。
LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
.maximumSize(10_000)
.expireAfterWrite(Duration.ofMinutes(5))
.refreshAfterWrite(Duration.ofMinutes(1))
.build(key -> createExpensiveGraph(key));

地址:https://github.com/ben-manes/caffeine
20、solon:一款 Java 輕量級應(yīng)用開發(fā)框架。可用來快速開發(fā) Java Web 項目,主框架僅 0.1 MB。類似 Python Flask 的微型框架,提倡按需組合插件。
@Controller
public class App {
public static void main(String[] args) {
Solon.start(App.class, args, app -> {
//手寫模式
app.get("/hello1", ctx -> ctx.output("Hello world!"));
});
}
//注解模式
@Get
@Socket
@Mapping("/hello2")
public String hello2(@Param(defaultValue = "world") String name) {
return String.format("Hello %s!", name);
}
}
地址:https://github.com/noear/solon
JavaScript 項目
21、notesnook:一款端到端加密的筆記軟件。這款筆記軟件以保護用戶隱私為主要特點,采用了安全的 XChaCha20-Poly1305 和 Argon2 算法對數(shù)據(jù)進行加密。它不僅安全還擁有豐富的功能,但免費版功能閹割嚴重,比如不支持 Markdown、插入圖片等重要的功能。

地址:https://github.com/streetwriters/notesnook
22、jsoncrack.com:優(yōu)雅的 JSON 數(shù)據(jù)可視化工具。該項目不是簡單的展示 JSON 數(shù)據(jù),而是將其轉(zhuǎn)化為類似腦圖的形式,支持放大/縮小、展開/收縮、搜索節(jié)點、導(dǎo)出圖片等操作,還可以快速部署成服務(wù)。

地址:https://github.com/AykutSarac/jsoncrack.com
23、sakana:可愛的 Sakana 模擬器。Sakana 是出自動漫《莉可麗絲》的一個梗,可愛的動作加上 Sakana 這句話,使得這個場面迅速走紅,這個項目可以讓你輕松再現(xiàn)這個瞬間。

地址:https://github.com/itorr/sakana
24、m3u8-downloader:m3u8 視頻在線提取工具。m3u8 視頻格式常用于直播服務(wù),其原理是將完整的視頻拆分成多個 .ts 視頻碎片,其中 .m3u8 文件會詳細記錄每個視頻片段的地址。視頻播放時,會先讀取 .m3u8 文件,再逐個下載播放 .ts 視頻片段。該項目就是基于上述原理實現(xiàn)的 m3u8 視頻提取工具,使用方便無需安裝打開網(wǎng)頁即可下載完整的視頻。
// 下載整合后的 TS 文件
downloadFile(fileDataList, fileName, fileType) {
this.tips = 'ts 碎片整合中,請留意瀏覽器下載'
const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) // 創(chuàng)建一個 Blob 對象,并設(shè)置文件的 MIME 類型
const a = document.createElement('a')
a.download = fileName + '.' + fileType
a.href = URL.createObjectURL(fileBlob)
a.style.display = 'none'
document.body.appendChild(a)
a.click()
a.remove()
}

地址:https://github.com/Momo707577045/m3u8-downloader
25、tldraw:一款實用的微型在線繪圖工具。這是一個”麻雀雖小,五臟俱全“的繪圖工具,支持插入便簽、保存進度、生成圖片、多人協(xié)作等實用的功能。

地址:https://github.com/tldraw/tldraw
PHP 項目
26、Piwigo:一款開源在線相冊應(yīng)用。采用 PHP+MySQL 開發(fā)的管理照片的 Web 項目,它功能強大安裝簡單,擁有豐富的主題和靈活的插件,可輕松完成個性化定制。支持 iOS 和 Android 客戶端,讓你可以隨時隨地上傳、管理照片。

地址:https://github.com/Piwigo/Piwigo
Python 項目
27、pendulum:讓 Python 處理時間更簡單的庫。該項目不僅提供了更加簡單易用的 API,而且還兼容 datetime 標準庫,可以直接替代碼中的 datetime 對象。它提供了很多人性化的時間處理方式,比如時間加減、多長時間的描述以及時區(qū)的處理等等。
>>> import pendulum
>>> now_in_paris = pendulum.now('Europe/Paris')
>>> now_in_paris
'2016-07-04T00:49:58.502116+02:00'
>>> tomorrow = pendulum.now().add(days=1)
>>> past = pendulum.now().subtract(minutes=2)
>>> past.diff_for_humans()
'2 minutes ago'
>>> delta = past - last_week
>>> delta.hours
23
>>> delta.in_words(locale='en')
'6 days 23 hours 58 minutes'
地址:https://github.com/sdispater/pendulum
28、pg_activity:類似 top 的 PostgreSQL 數(shù)據(jù)庫命令行監(jiān)控工具。一條命令就能實時查看 PostgreSQL 數(shù)據(jù)庫狀態(tài)和每條 SQL 語句執(zhí)行詳情、耗時、占用資源、讀/寫速度等信息的工具。

地址:https://github.com/dalibo/pg_activity
29、Games:純 Python 實現(xiàn)的桌面小游戲集合。該項目包含 20 多個不重樣的趣味小游戲,它們都是采用 Python 開發(fā)運行簡單,用到的庫包括 cocos2d、pygame、PyQt 等。雖然這些游戲可玩性較低,但項目簡單十分適合新手學習。

地址:https://github.com/CharlesPikachu/Games
30、django-silk:Django 的性能分析工具。它可以將 Django 服務(wù)的平均耗時、請求次數(shù)、查詢 SQL、代碼性能分析等信息展示到一個頁面,開發(fā)者有了這些信息就能夠更快地找到 Django 服務(wù)的性能瓶頸和響應(yīng)慢的原因。
# 安裝
pip install django-silk
# 中間件的方式使用
MIDDLEWARE = [
...
'silk.middleware.SilkyMiddleware',
...
]
INSTALLED_APPS = (
...
'silk'
)

地址:https://github.com/jazzband/django-silk
31、OCRmyPDF:可以把 PDF 文件變成可搜索文件的工具。它使用 Tesseract OCR 引擎,將 PDF 的內(nèi)容識別成文本,然后給 PDF 文件增加 OCR 文本層。從而實現(xiàn)可搜索和復(fù)制 PDF 的內(nèi)容,已支持 100 多種語言。

地址:https://github.com/ocrmypdf/OCRmyPDF
Ruby 項目
32、wpscan:一款 WordPress 安全掃描工具。該項目可用于發(fā)現(xiàn) WordPress 構(gòu)建的網(wǎng)站存在的安全隱患,掃描項包括 WordPress 漏洞、已安裝的插件和主題、弱密碼等。

地址:https://github.com/wpscanteam/wpscan
Rust 項目
33、espanso:Rust 寫的智能文本擴展工具。文本擴展器是可以幫你提高輸入效率的工具,當你輸入一個特定的關(guān)鍵詞時,它可以自動檢測到并將其替換為預(yù)設(shè)的內(nèi)容。這個項目幾乎可以和任何程序一起使用,適用于 Windows、macOS 和 Linux。

地址:https://github.com/espanso/espanso
34、easy_rust:用簡單的英語寫的 Rust 教程。雖然當下已經(jīng)有很多的 Rust 教程,但是大多都是以英語為主,這對不擅長英語的程序員并不友好,所以作者寫了一份僅用簡單的英語講解 Rust 的教程,已有中文翻譯版。
地址:https://github.com/Dhghomon/easy_rust
Swift 項目
35、TinyPNG4Mac:適用于 macOS 的 TinyPNG 第三方客戶端。TinyPNG 是一個提供免費圖像壓縮服務(wù)的網(wǎng)站,該項目是其第三方 macOS 客戶端,可以讓你無需打開瀏覽器、無需手動下載圖片,僅通過簡單的拖拽就能完成對 JPEG、PNG 圖片的壓縮。

地址:https://github.com/kyleduo/TinyPNG4Mac
其它
36、WebKit:蘋果開源的 Web 瀏覽器引擎。它被用于開發(fā) macOS 和 iOS 上的 Safari、App Store、Mail 等應(yīng)用。WebKit 不僅出現(xiàn)在蘋果的生態(tài)中,其分支 Blink 項目也是 Chromium 的重要組成部分,它又是各大主流瀏覽器的核心。
地址:https://github.com/WebKit/WebKit
37、missing-semester:大學計算機教育中缺失的一課。大學里的計算機課程往往只專注于講授數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)這些知識,對于編程開發(fā)中常用的工具則留給學生自行學習。在 MIT 這個課程中,你可以了解和掌握命令行(shell)、文本編輯器(Vim)、版本控制系統(tǒng)(Git)等強大的工具,越早接觸越能更加熟練地使用它們,有助于未來的職業(yè)生涯。

地址:https://github.com/missing-semester/missing-semester
38、nginx-tutorial:免費的 Nginx 極簡教程。這是一套簡單的 Nginx 教程,包含 Nginx 的安裝、常用命令、反向代理、負載均衡等知識點,能夠幫助新手快速入門 Nginx。

地址:https://github.com/dunwu/nginx-tutorial
39、Crash-Course-Computer-Science-Chinese:計算機科學速成課[40集全/精校] 。油管上的計算機科學速成課(Crash Course Computer Science)中文字幕翻譯版,視頻從晶體管講到了操作系統(tǒng)和人工智能,但并不會教你如何編程屬于科普類視頻。

地址:https://github.com/1c7/Crash-Course-Computer-Science-Chinese
40、bats-core:Bash 自動化測試系統(tǒng)。它通過測試用例驗證 Bash 腳本的運行結(jié)果是否符合預(yù)期,原理是基于 Bash 的 errexit(set -e) 選項判斷測試用例的執(zhí)行成功與否。
#!/usr/bin/env bats
@test "addition using bc" {
result="$(echo 2+2 | bc)"
[ "$result" -eq 4 ]
}
@test "addition using dc" {
result="$(echo 2 2+p | dc)"
[ "$result" -eq 4 ]
}
地址:https://github.com/bats-core/bats-core
41、The-Art-of-Linear-Algebra:圖解線性代數(shù)?!禠inear Algebra for Everyone》是一門廣受好評的線性代數(shù)公開課,該項目是基于這門公開課,編寫整理而成的圖文并茂的學習筆記。

地址:https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra
開源書籍
42、patterns-of-distributed-systems:《分布式系統(tǒng)模式》中文版。該書嘗試將副本同步、可靠性、網(wǎng)絡(luò)延遲等分布式系統(tǒng)共性問題歸納總結(jié),并參考像 Kafka、Zookeeper 等分布式系統(tǒng)的實現(xiàn)過程,給出分布式系統(tǒng)中同類問題的通用解決方法/模式。

地址:https://github.com/dreamhead/patterns-of-distributed-systems
43、Cookbook:《數(shù)據(jù)工程師 Cookbook》。這本書會告訴你,如果想要成為一名出色的數(shù)據(jù)工程師,到底需要學習哪些知識。

地址:https://github.com/andkret/Cookbook
機器學習
44、stable-diffusion:可以根據(jù)文字生成圖片的模型。只要輸入一段文字描述,就能得到一張由 AI 生成的圖片,除此之外該項目還支持將粗糙的草圖轉(zhuǎn)化成精致的藝術(shù)圖片。
# make sure you're logged in with `huggingface-cli login`
from torch import autocast
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
use_auth_token=True
).to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt)["sample"][0]
image.save("astronaut_rides_horse.png")

地址:https://github.com/CompVis/stable-diffusion
45、style2paints:一款給線稿上色的 AI 輔助工具。能夠幫助用戶給沒有上色的圖片,快速完成上色的 AI 工具,上色效果廣受好評,完全免費開箱即用。

地址:https://github.com/lllyasviel/style2paints
最后
以上就是本期的所有內(nèi)容,還沒看過癮?點擊閱讀往期內(nèi)容。
如果安裝或運行開源項目遇到問題,就看這篇文章吧!
如果您覺得本期內(nèi)容還不錯的話 求贊、求分享,有了您的支持 HelloGitHub 一定會變得更好!??
- END -
?? 關(guān)注「HelloGitHub」收到第一時間的更新??
