《HelloGitHub》第 61 期
興趣是最好的老師,HelloGitHub 讓你對(duì)編程感興趣!

分享 GitHub 上有趣、入門級(jí)的開源項(xiàng)目。
內(nèi)容包括:有趣、入門級(jí)的開源項(xiàng)目、開源書籍、實(shí)戰(zhàn)項(xiàng)目、企業(yè)級(jí)項(xiàng)目等,讓你在短時(shí)間內(nèi)感受到開源的魅力,對(duì)開源和編程產(chǎn)生興趣!
在電腦上閱讀本文的讀者,請(qǐng)翻到文章末尾點(diǎn)擊「閱讀原文」獲得更好的閱讀體驗(yàn)
以下為本期內(nèi)容|每個(gè)月 28 號(hào)更新
C 項(xiàng)目
1、acwj:教你寫 C 語言編譯器的實(shí)戰(zhàn)教程。教程注重實(shí)戰(zhàn)循序漸進(jìn),一步步教你如何用 C 語言寫一個(gè)可以自己編譯自己(自舉)、能夠在真正的硬件上運(yùn)行的 C 語言編譯器

GitHub 地址:https://github.com/DoctorWkt/acwj
2、zstd:快速、無損的數(shù)據(jù)壓縮算法 Zstandard 的實(shí)現(xiàn)。Zstd 的壓縮比接近 lzma、lzham 和 ppmx,并且比 lza 或 bzip2 性能更好。在相似的壓縮比情況下,它解壓縮的速度比其他的算法都要快。很多知名項(xiàng)目和游戲都有這個(gè)算法的身影,示例代碼:
static void compress_orDie(const char* fname, const char* oname)
{
size_t fSize;
void* const fBuff = mallocAndLoadFile_orDie(fname, &fSize);
size_t const cBuffSize = ZSTD_compressBound(fSize);
void* const cBuff = malloc_orDie(cBuffSize);
/* Compress.
* If you are doing many compressions, you may want to reuse the context.
* See the multiple_simple_compression.c example.
*/
size_t const cSize = ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1);
CHECK_ZSTD(cSize);
saveFile_orDie(oname, cBuff, cSize);
/* success */
printf("%25s : %6u -> %7u - %s \n", fname, (unsigned)fSize, (unsigned)cSize, oname);
free(fBuff);
free(cBuff);
}
GitHub 地址:https://github.com/facebook/zstd
C# 項(xiàng)目
3、ravendb:一款快速、可靠的開源 NoSQL 數(shù)據(jù)庫(kù)

GitHub 地址:https://github.com/ravendb/ravendb
4、Files:一個(gè)全新的文件管理器。采用 Fluent Design 和 Windows 平臺(tái)最新的 API 實(shí)現(xiàn),簡(jiǎn)約但不簡(jiǎn)單

GitHub 地址:https://github.com/files-community/Files
Go 項(xiàng)目
5、jql:用 Go 寫的 JSON 數(shù)據(jù)查詢工具。該工具安裝方便,語法簡(jiǎn)單容易上手,實(shí)用示例代碼很多比如:
# 查詢 test.json 文件中,所有國(guó)家的名稱
cat test.json | jql '(elem "countries" (elem (keys) (elem "name")))'
[
"Poland",
"United States",
"Germany"
]GitHub 地址:https://github.com/cube2222/jql
6、chanify:基于 Go 實(shí)現(xiàn)的向 iOS 設(shè)備推送消息的服務(wù)。手機(jī)上安裝好配套的 iOS 應(yīng)用,然后以 Docker 的方式部署完服務(wù),就可以通過一條命令推送指定消息到 APP 上,是不是很方便吖
# 發(fā)送文本消息
$ curl --form-string "text=hello" "http://<address>:<port>/v1/sender/<token>"
# 發(fā)送文本文件
$ cat message.txt | curl -H "Content-Type: text/plain" --data-binary @- "http://<address>:<port>/v1/sender/<token>"
GitHub 地址:https://github.com/chanify/chanify
7、algorithm-pattern:LeetCode 刷題集合項(xiàng)目。項(xiàng)目從 Go 語言入門講起,總結(jié)了一套刷題模板和解題套路,示例代碼為 Go 語言
GitHub 地址:https://github.com/greyireland/algorithm-pattern
8、imaging:Go 語言的圖像處理庫(kù)。支持:調(diào)整大小、旋轉(zhuǎn)、剪切、亮度調(diào)整等功能,示例代碼:
// 調(diào)整
dstImage128 := imaging.Resize(srcImage, 128, 128, imaging.Lanczos)
// 銳化
dstImage := imaging.Sharpen(srcImage, 0.5)
GitHub 地址:https://github.com/disintegration/imaging
9、ebiten:Go 語言的 2D 游戲引擎庫(kù)。通過它可以輕松地用 Go 語言制作出支持多平臺(tái)的 2D 游戲,項(xiàng)目中還包含很多示例代碼,幫助你快速上手

GitHub 地址:https://github.com/hajimehoshi/ebiten
Java 項(xiàng)目
10、flink-recommandSystem-demo:一個(gè)基于 Flink 實(shí)現(xiàn)的商品實(shí)時(shí)推薦系統(tǒng)??梢酝ㄟ^這個(gè)項(xiàng)目了解和學(xué)習(xí)推薦系統(tǒng)的設(shè)計(jì)和流程,該系統(tǒng)是通過 Flink 處理日志和統(tǒng)計(jì)商品熱度,將處理好的數(shù)據(jù)放入 Redis 緩存。然后再將畫像標(biāo)簽和實(shí)時(shí)記錄放入 HBase。在用戶請(qǐng)求獲取推薦時(shí),根據(jù)用戶畫像生成商品熱度榜,并結(jié)合協(xié)同過濾和標(biāo)簽兩個(gè)推薦模塊,返回最終生成的商品推薦列表

GitHub 地址:https://github.com/CheckChe0803/flink-recommandSystem-demo
11、OpenRefine:一款用于清理數(shù)據(jù)的桌面工具。通過可視化的方式分析、整理數(shù)據(jù),支持 Windows、Linux、Mac 操作系統(tǒng)。擁有查詢、過濾、去重、分析等功能,可以把雜亂的數(shù)據(jù)變成“整潔”的電子表格,還能夠?qū)⒔Y(jié)果導(dǎo)出成多種格式的文件。不會(huì)編程和 SQL 的小伙伴們,也可以輕松分析海量數(shù)據(jù)啦!

GitHub 地址:https://github.com/OpenRefine/OpenRefine
12、jacoco:Java 代碼測(cè)試覆蓋率庫(kù)

GitHub 地址:https://github.com/jacoco/jacoco
13、kooder:一個(gè)開源的代碼搜索服務(wù)。為包括 GitLab、Gitea 的代碼托管系統(tǒng)提供源碼、倉(cāng)庫(kù)、Issue 的搜索服務(wù)

GitHub 地址:https://github.com/oschina/kooder
JavaScript 項(xiàng)目
14、taro:一款 Web 輕量級(jí)的 3D 游戲引擎。底層基于 three.js 和 cannon-es 支持 3D 剛體物理引擎

GitHub 地址:https://github.com/Cloud9c/taro
15、kutt:免費(fèi)開源的短鏈接服務(wù)。服務(wù)基于 Node.js+Express+React 實(shí)現(xiàn),支持管理鏈接、自定義短鏈接、設(shè)置鏈接密碼、訪問統(tǒng)計(jì)等功能

GitHub 地址:https://github.com/thedevs-network/kutt
16、nav:一個(gè)支持 SEO 的靜態(tài)導(dǎo)航網(wǎng)站。不依賴后端的純前端項(xiàng)目開箱即用,簡(jiǎn)單清爽

GitHub 地址:https://github.com/xjh22222228/nav
17、drawio:一款簡(jiǎn)潔強(qiáng)大的繪圖工具。免費(fèi)開源可以自行部署也可以在線使用,功能上直追 Microsoft Visio。支持流程圖、序列圖、網(wǎng)絡(luò)拓?fù)鋱D、甘特圖、思維導(dǎo)圖、模型圖等,還能導(dǎo)出多種格式類型比如 png、svg、PDF、HTML 和 VSDX 格式(Microsoft Visio 圖形格式)

GitHub 地址:https://github.com/jgraph/drawio
18、npkill:快速查找和輕松刪除 node_modules 文件夾的工具。還在為 node_modules 占了很多磁盤空間而煩惱嗎?還在手動(dòng)找用不到的 node_modules 目錄嗎?快來試試 npkill 吧!輕松地刪除 node_modules 目錄

GitHub 地址:https://github.com/voidcosmos/npkill
PHP 項(xiàng)目
19、question2answer:采用 PHP+MySQL 實(shí)現(xiàn)的免費(fèi)開源的問答平臺(tái)。基本上問答平臺(tái)該有的功能它都有,那么問題來了是做個(gè)知乎還是 Stack Overflow 呢?
支持回答投票、評(píng)論、最佳回答、關(guān)注和關(guān)閉問題 完備的用戶和權(quán)限管理 多語言支持 搜索時(shí)的相似問題匹配 等等

GitHub 地址:https://github.com/q2a/question2answer
Python 項(xiàng)目
20、tomato-clock:Python 寫的命令行番茄工作法定時(shí)器。代碼僅有 100 多行,不依賴其它第三方庫(kù)
?? tomato 25 minutes. Ctrl+C to exit
????---------------------------------------------- [8%] 23:4 ? GitHub 地址:https://github.com/coolcode/tomato-clock
21、vardbg:一款能夠把 Python 程序執(zhí)行過程,導(dǎo)出成視頻或動(dòng)圖的代碼調(diào)試工具。可用于動(dòng)畫學(xué)算法、制作代碼講解視頻等場(chǎng)景

GitHub 地址:https://github.com/CCExtractor/vardbg
22、apkleaks:掃描 APK 文件是否包含敏感信息的命令行工具
// custom-rules.json
{
"Amazon AWS Access Key ID": "AKIA[0-9A-Z]{16}",
...
}
$ apkleaks -f /path/to/file.apk -p rules.json -o ~/Documents/apkleaks-results.txt
GitHub 地址:https://github.com/dwisiswant0/apkleaks
23、graphene-django:讓你輕松地將 GraphQL 整合到 Django 項(xiàng)目的庫(kù)
GitHub 地址:https://github.com/graphql-python/graphene-django
Rust 項(xiàng)目
24、fselect:用類 SQL 的命令查找文件的命令行工具
fselect size, path from /home/user where name = '*.cfg' or name = '*.tmp'
fselect size, abspath from ./tmp where size gt 2g
fselect hsize, abspath from ./tmp where size lt 8kGitHub 地址:https://github.com/jhspetersson/fselect
Swift 項(xiàng)目
25、awesome-ios:超棒的 iOS 開源項(xiàng)目集合。它非常全面包含 Objective-C、Swift 語言的項(xiàng)目,擁有網(wǎng)絡(luò)、UI、JSON、數(shù)據(jù)庫(kù)、音視頻等分類,iOS 初學(xué)者尋找開源項(xiàng)目的好地方

GitHub 地址:https://github.com/vsouza/awesome-ios
26、Knot:一款 iOS 抓包工具。實(shí)現(xiàn)了 HTTP(S) 解析、流量解析、多格式導(dǎo)出、證書管理以及過程分析等

GitHub 地址:https://github.com/Lojii/Knot
27、SwiftUITodo:用 SwiftUI 做的 Todo 工具。這是一個(gè)示例項(xiàng)目幫助新手掌握 SwiftUI

GitHub 地址:https://github.com/devxoul/SwiftUITodo
其它
28、LIII:免費(fèi)開源的 BT 下載工具。如果你厭倦了廣告、購(gòu)買 VIP 才能提速,只想要一個(gè)簡(jiǎn)單好用的下載工具,那你可以試試這個(gè)開源項(xiàng)目

GitHub 地址:https://github.com/aliakseis/LIII
29、cloudmusic-vscode:網(wǎng)易云音樂 VS Code 插件?;诰W(wǎng)易云網(wǎng)頁 API 實(shí)現(xiàn),支持:
歌曲播放、收藏、喜歡 心動(dòng)模式、私人 FM 評(píng)論(單曲、歌單...) 歌詞顯示 搜索(熱搜/單曲/專輯/歌手...) 等等

GitHub 地址:https://github.com/YXL76/cloudmusic-vscode
30、shapez.io:一款 Steam 上的模擬建造游戲《異形工廠》的源碼。游戲是在無邊的地圖上開采資源、放置設(shè)施、組合圖形、相互搭配,擴(kuò)建自己的異形工廠。游戲輕松但也很有挑戰(zhàn)性,快去試一試吧

GitHub 地址:https://github.com/tobspr/shapez.io
開源書籍
31、Probabilistic-Programming-and-Bayesian-Methods-for-Hackers:《黑客的貝葉斯方法:以 Python 為例》

GitHub 地址:https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
32、The-design-and-implementation-of-a-64-bit-os:《一個(gè) 64 位操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》
GitHub 地址:https://github.com/yifengyou/The-design-and-implementation-of-a-64-bit-os
33、tensorflow-handbook:《簡(jiǎn)明的 TensorFlow 2》
GitHub 地址:https://github.com/snowkylin/tensorflow-handbook
機(jī)器學(xué)習(xí)
34、Real-Time-Person-Removal:在 Web 瀏覽器中實(shí)時(shí)移除人像。該項(xiàng)目采用 JavaScript+TensorFlow.js 實(shí)現(xiàn)“憑空消失”

GitHub 地址:https://github.com/jasonmayes/Real-Time-Person-Removal
35、AI-Expert-Roadmap:人工智能學(xué)習(xí)路線圖

GitHub 地址:https://github.com/AMAI-GmbH/AI-Expert-Roadmap
最后
如果你發(fā)現(xiàn)了 GitHub 上有趣的項(xiàng)目,就分享給大家伙吧。
本期 HelloGitHub 月刊到這里就結(jié)束啦,你有沒有找到感興趣的開源項(xiàng)目?歡迎留言討論。

閱讀原文獲取更好的 PC 端閱讀體驗(yàn)
