程式設計師的開源月刊《HelloGitHub》第61期

削微寒發表於2021-04-28

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

簡介

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

內容包括:有趣、入門級的開源專案、開源書籍、實戰專案、企業級專案等,讓你在短時間內感受到開源的魅力,對開源和程式設計產生興趣!


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

C 專案

1、acwj:教你寫 C 語言編譯器的實戰教程。教程注重實戰循序漸進,一步步教你如何用 C 語言寫一個可以自己編譯自己(自舉)、能夠在真正的硬體上執行的 C 語言編譯器

2、zstd:快速、無損的資料壓縮演算法 Zstandard 的實現。Zstd 的壓縮比接近 lzma、lzham 和 ppmx,並且比 lza 或 bzip2 效能更好。在相似的壓縮比情況下,它解壓縮的速度比其他的演算法都要快。很多知名專案和遊戲都有這個演算法的身影,示例程式碼:

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);
}

C# 專案

3、ravendb:一款快速、可靠的開源 NoSQL 資料庫

4、Files:一個全新的檔案管理器。採用 Fluent Design 和 Windows 平臺最新的 API 實現,簡約但不簡單

Go 專案

5、jql:用 Go 寫的 JSON 資料查詢工具。該工具安裝方便,語法簡單容易上手,實用示例程式碼很多比如:

# 查詢 test.json 檔案中,所有國家的名稱
cat test.json | jql '(elem "countries" (elem (keys) (elem "name")))'
[
  "Poland",
  "United States",
  "Germany"
]

6、chanify:基於 Go 實現的向 iOS 裝置推送訊息的服務。手機上安裝好配套的 iOS 應用,然後以 Docker 的方式部署完服務,就可以通過一條命令推送指定訊息到 APP 上,是不是很方便吖

# 傳送文字訊息
$ curl --form-string "text=hello" "http://<address>:<port>/v1/sender/<token>"

# 傳送文字檔案
$ cat message.txt | curl -H "Content-Type: text/plain" --data-binary @- "http://<address>:<port>/v1/sender/<token>"

7、algorithm-pattern:LeetCode 刷題集合專案。專案從 Go 語言入門講起,總結了一套刷題模板和解題套路,示例程式碼為 Go 語言

8、imaging:Go 語言的影像處理庫。支援:調整大小、旋轉、剪下、亮度調整等功能,示例程式碼:

// 調整
dstImage128 := imaging.Resize(srcImage, 128, 128, imaging.Lanczos)
// 銳化
dstImage := imaging.Sharpen(srcImage, 0.5)

9、ebiten:Go 語言的 2D 遊戲引擎庫。通過它可以輕鬆地用 Go 語言製作出支援多平臺的 2D 遊戲,專案中還包含很多示例程式碼,幫助你快速上手

Java 專案

10、flink-recommandSystem-demo:一個基於 Flink 實現的商品實時推薦系統。可以通過這個專案瞭解和學習推薦系統的設計和流程,該系統是通過 Flink 處理日誌和統計商品熱度,將處理好的資料放入 Redis 快取。然後再將畫像標籤和實時記錄放入 HBase。在使用者請求獲取推薦時,根據使用者畫像生成商品熱度榜,並結合協同過濾和標籤兩個推薦模組,返回最終生成的商品推薦列表

11、OpenRefine:一款用於清理資料的桌面工具。通過視覺化的方式分析、整理資料,支援 Windows、Linux、Mac 作業系統。擁有查詢、過濾、去重、分析等功能,可以把雜亂的資料變成“整潔”的電子表格,還能夠將結果匯出成多種格式的檔案。不會程式設計和 SQL 的小夥伴們,也可以輕鬆分析海量資料啦!

12、jacoco:Java 程式碼測試覆蓋率庫

13、kooder:一個開源的程式碼搜尋服務。為包括 GitLab、Gitea 的程式碼託管系統提供原始碼、倉庫、Issue 的搜尋服務

JavaScript 專案

14、taro:一款 Web 輕量級的 3D 遊戲引擎。底層基於 three.js 和 cannon-es 支援 3D 剛體物理引擎

15、kutt:免費開源的短連結服務。服務基於 Node.js+Express+React 實現,支援管理連結、自定義短連結、設定連結密碼、訪問統計等功能

16、nav:一個支援 SEO 的靜態導航網站。不依賴後端的純前端專案開箱即用,簡單清爽

17、drawio:一款簡潔強大的繪圖工具。免費開源可以自行部署也可以線上使用,功能上直追 Microsoft Visio。支援流程圖、序列圖、網路拓撲圖、甘特圖、思維導圖、模型圖等,還能匯出多種格式型別比如 png、svg、PDF、HTML 和 VSDX 格式(Microsoft Visio 圖形格式)

18、npkill:快速查詢和輕鬆刪除 node_modules 資料夾的工具。還在為 node_modules 佔了很多磁碟空間而煩惱嗎?還在手動找用不到的 node_modules 目錄嗎?快來試試 npkill 吧!輕鬆地刪除 node_modules 目錄

PHP 專案

19、question2answer:採用 PHP+MySQL 實現的免費開源的問答平臺。基本上問答平臺該有的功能它都有,那麼問題來了是做個知乎還是 Stack Overflow 呢?

  • 支援回答投票、評論、最佳回答、關注和關閉問題
  • 完備的使用者和許可權管理
  • 多語言支援
  • 搜尋時的相似問題匹配
  • 等等

Python 專案

20、tomato-clock:Python 寫的命令列番茄工作法定時器。程式碼僅有 100 多行,不依賴其它第三方庫

? tomato 25 minutes. Ctrl+C to exit
 ??---------------------------------------------- [8%] 23:4 ⏰ 

21、vardbg:一款能夠把 Python 程式執行過程,匯出成視訊或動圖的程式碼除錯工具。可用於動畫學演算法、製作程式碼講解視訊等場景

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

23、graphene-django:讓你輕鬆地將 GraphQL 整合到 Django 專案的庫

Rust 專案

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 8k

Swift 專案

25、awesome-ios:超棒的 iOS 開源專案集合。它非常全面包含 Objective-C、Swift 語言的專案,擁有網路、UI、JSON、資料庫、音視訊等分類,iOS 初學者尋找開源專案的好地方

26、Knot:一款 iOS 抓包工具。實現了 HTTP(S) 解析、流量解析、多格式匯出、證照管理以及過程分析等

27、SwiftUITodo:用 SwiftUI 做的 Todo 工具。這是一個示例專案幫助新手掌握 SwiftUI

其它

28、LIII:免費開源的 BT 下載工具。如果你厭倦了廣告、購買 VIP 才能提速,只想要一個簡單好用的下載工具,那你可以試試這個開源專案

29、cloudmusic-vscode:網易雲音樂 VS Code 外掛。基於網易雲網頁 API 實現,支援:

  • 歌曲播放、收藏、喜歡
  • 心動模式、私人 FM
  • 評論(單曲、歌單...)
  • 歌詞顯示
  • 搜尋(熱搜/單曲/專輯/歌手...)
  • 等等

30、shapez.io:一款 Steam 上的模擬建造遊戲《異形工廠》的原始碼。遊戲是在無邊的地圖上開採資源、放置設施、組合圖形、相互搭配,擴建自己的異形工廠。遊戲輕鬆但也很有挑戰性,快去試一試吧

開源書籍

31、Probabilistic-Programming-and-Bayesian-Methods-for-Hackers:《黑客的貝葉斯方法:以 Python 為例》

32、The-design-and-implementation-of-a-64-bit-os:《一個 64 位作業系統的設計與實現》

33、tensorflow-handbook:《簡明的 TensorFlow 2》,線上閱讀

機器學習

34、Real-Time-Person-Removal:在 Web 瀏覽器中實時移除人像。該專案採用 JavaScript+TensorFlow.js 實現“憑空消失”

35、AI-Expert-Roadmap:人工智慧學習路線圖

最後

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

以上就是本期的所有內容了,看完還不過癮?

關注 HelloGitHub 公眾號不僅可以收到第一時間的更新。點選選單欄->往期->月刊

往期月刊所有的內容盡收眼底一次看過癮!還有更多開源專案的介紹和寶藏專案等待你的發現。

相關文章