《HelloGitHub》第 87 期

2023-06-28 12:01:16

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

簡介

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

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

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


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

C 專案

1、kilo:不到 1 千行程式碼實現的迷你文字編輯器。該專案是 Redis 作者用 C 語言寫的迷你文字編輯器,支援語法高亮和搜尋等功能。它不依賴第三方庫、程式碼簡潔優雅,去掉註釋和空行後不到 1000 行,且只有一個檔案,原始碼閱讀起來十分清爽。

2、Logan:面向終端的統一紀錄檔服務。由美團技術團隊開源的一整套前端紀錄檔系統,包含使用者端 SDK、紀錄檔處理和管理平臺。它適用於行動端 APP、Web、小程式、IoT 等終端場景下的實時紀錄檔收集。

C# 專案

3、winsw:將可執行檔案包裝成 Windows 服務的工具。該專案可以將原本不支援開機啟動的 Windows 應用,設定成開機自動啟動,整個過程只需要兩條命令。

C++ 專案

4、geometrize:將影象用幾何圖形重繪的工具。該專案可以用圓形、三角形、矩形等幾何圖形重新繪製影象,並將結果匯出為 SVG、PNG、JPG、GIF 等格式。

5、primihub:由密碼學專家團隊打造的開源隱私計算平臺。隨著《資料安全法》和《個人資訊保護法》的相繼頒佈,隱私計算技術在近兩年迎來了前所未有的熱度。該專案是由密碼學專家團隊打造的隱私計算平臺,它開箱即用、安全可靠,支援隱匿查詢、隱私求交、聯合統計、資料資源管理等功能,實現了「資料可用不可見」,為資料安全流通保駕護航。

# 第一步:下載
git clone https://github.com/primihub/primihub.git
# 第二步:啟動容器
cd primihub && docker-compose up -d
# 第三步:進入容器
docker exec -it primihub-node0 bash
# 第四步:執行隱私求交計算
./primihub-cli --task_config_file="example/psi_ecdh_task_conf.json"
I20230616 13:40:10.683375    28 cli.cc:524] all node has finished
I20230616 13:40:10.683745    28 cli.cc:598] SubmitTask time cost(ms): 1419
# 檢視結果
cat data/result/psi_result.csv
"intersection_row"
X3
...

6、redpanda:與 Kafka API 完全相容的流資料平臺。這個專案可以看作是用 C++ 重新編寫的 Kafka,它更輕、更快、更省錢,部署簡單使用方便,完全不受 JVM、ZooKeeper 等外部依賴的影響。

7、shotcut:一款功能強大的免費視訊剪輯軟體。這款軟體雖然免費但在功能上完全不輸收費的視訊剪輯工具,可作為 Pr 的開源替代品。它擁有中文和直觀的操作介面,支援數百種音訊和視訊格式、素材原生編輯、多時間線等功能,適用於 Windows、Linux、macOS 系統。

8、sqlitebrowser:SQLite 視覺化管理工具。這是一款實用的 SQLite 資料庫桌面管理工具,它支援建立和編輯 SQLite 資料庫檔案,可通過圖形化介面建立、定義、修改、刪除表和索引,以及執行 SQL 和匯出資料等操作。

Go 專案

9、gotenberg:基於 Docker 的生成 PDF 檔案服務。它支援通過 Docker 啟動一個服務,該服務可以通過 API 與 Chromium 和 LibreOffice 進行互動。讓你可以通過呼叫介面,輕鬆地將網頁、HTML、Markdown、Word、Excel 等格式的檔案轉換為 PDF 檔案。

curl \
--request POST 'https://demo.gotenberg.dev/forms/chromium/convert/url' \
--form 'url="https://sparksuite.github.io/simple-html-invoice-template/"' \
-o my.pdf

10、httprouter:Go 語言的高效能 HTTP 請求路由器。該專案結構簡潔,核心程式碼僅三個檔案。它通過 Radix tree 資料結構,實現了高效的路由處理。值得一提的是,著名的 Gin 框架也使用了它。

package main

import (
    "fmt"
    "net/http"
    "log"

    "github.com/julienschmidt/httprouter"
)

func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
    fmt.Fprint(w, "Welcome!\n")
}

func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
}

func main() {
    router := httprouter.New()
    router.GET("/", Index)
    router.GET("/hello/:name", Hello)

    log.Fatal(http.ListenAndServe(":8080", router))
}

11、slides:一款命令列演示工具。這款命令列工具可以讓你在終端中輕鬆建立和演示幻燈片,它開箱即用、支援 Markdown 語法。

12、sourcegraph:一款強大的程式碼搜尋平臺。該專案能夠對程式碼庫進行語意索引和分析,支援正規表示式搜尋、輸入搜尋條件時的自動補全、類似 IDE 的跳轉到定義和參照。它可以用於構建公司內部的程式碼搜尋平臺,幫助程式設計師完成跨專案的程式碼查詢、程式碼審查、程式碼追蹤等。

13、tinygo:專為「小場面」而生的 Go 編譯器。這是一個基於 LLVM 的小型 Go 編譯器,它能夠將 Go 程式碼編譯成可執行在開發板、物聯網、WebAssembly 等場景的程式。

Java 專案

14、FXGL:你的第一款 Java 遊戲開發框架。該專案是基於 JavaFX 的 2D 遊戲開發引擎,它無需安裝、API 簡單,能夠輕鬆地將開發的遊戲打包成一個可執行的 jar 包,一切的一切都是為了讓你喜歡上開發遊戲。

public class BasicGameApp extends GameApplication {

    @Override
    protected void initSettings(GameSettings settings) {
        settings.setWidth(800);
        settings.setHeight(600);
        settings.setTitle("Basic Game App");
    }

    public static void main(String[] args) {
        launch(args);
    }
}

15、SurveyKing:功能強大的調查問卷系統。這是一款 Java 寫的問卷調查和考試系統,支援 20 多種題型、Excel 匯入問卷、白名單答卷、公開查詢、資料匯出等功能。

JavaScript 專案

16、AFFiNE:類似 Notion 的協同知識庫系統。它擁有清爽、簡潔的介面,支援離線使用。整合了筆記、知識庫、資料表格等功能,同時這些內容之間還可以靈活組合。

17、ChatGPT-Next-Web:免費部署私人 ChatGPT 網頁應用。該專案不僅提供了更加人性化的 ChatGPT 聊天介面,還支援一鍵部署到 Vercel。你只需要提供 OpenAI API Key,就能免費擁有私人 ChatGPT 服務。

18、giscus:基於 GitHub Discussions 的評論系統。該專案是基於 GitHub Discussions API 實現的評論系統,它免費、無廣告、無需資料庫,支援自定義主題、多語言等功能。

19、Painter:小程式生成圖片庫。該專案可以讓小程式開發者通過 JSON 的方式繪製圖片,支援繪製文字、圖片、二維條碼、多種佈局、自定義字型、圓角等功能。

20、patch-package:給 npm 依賴項打修補程式的庫。如果專案依賴的第三方庫有個 bug,需要手動新增一段程式碼才能解決,這個時候用它打個修補程式就輕鬆搞定,支援 npm、yarn、pnpm 等。

Kotlin 專案

21、legado:一款免費的安卓小說閱讀器。這款閱讀器體積小、無廣告、介面簡潔,支援自定義書源、本地匯入小說、多種翻頁模式、替換淨化等功能。需要注意的是,它只是一個閱讀器,不提供小說內容,初次安裝後需要自行匯入書源。來自 @孤膽槍手 的分享

Python 專案

22、Auto_Bangumi:全自動追番工具。該專案是 Python 寫的自動訂閱更新和下載動畫的工具,使用者只需在 Mikan Project 上訂閱番劇,然後簡單設定一下就可以安心追番了。

23、edx-platform:Django 寫的開源慕課平臺。該專案是由麻省理工和哈佛大學聯合開源的大規模開放式線上課堂(MOOC)平臺,它提供了內容管理和學習管理服務。該平臺支援線上講課、建立課程、釋出前預覽、內容庫、學生反饋、考試等功能。雖然它功能豐富,但介面十分簡陋。

24、PyQt-Fluent-Widgets:Fluent Design 風格的 PyQt 元件庫。基於 PyQt/PySide 的 Fluent Design 風格元件庫,內含多種美觀、實用的元件,支援亮暗主題切換和自定義主題色。

25、stitching:強大的圖片拼接 Python 庫。這是一個基於 OpenCV 的拼接模組開發的用於快速拼接圖片的 Python 庫,支援在 Python 指令碼中使用和命令列方式。

import stitching

stitcher = stitching.Stitcher()
# 多個檔案
panorama = stitcher.stitch(["img1.jpg", "img2.jpg", "img3.jpg"])
# 萬用字元
panorama = stitcher.stitch(["img?.jpg"])

26、sympy:進行符號運算的 Python 庫。這是一個功能齊全、純 Python 寫的計算機代數系統(CAS),可用於計算複雜的數學問題。它支援解方程、離散數學、微積分、邏輯計算、幾何、概率與統計等功能。

>>> from sympy import Symbol, cos
>>> x = Symbol('x')
>>> e = 1/cos(x)
>>> print(e.series(x, 0, 10))
1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + 277*x**8/8064 + O(x**10)

Rust 專案

27、hexyl:命令列十六進位制檢視器。這是一款 Rust 寫的命令列十六進位制檢視器,它簡單純粹、彩色輸出效果十分舒服。

28、ruffle:Rust 寫的 Flash Player 替代品。這是一個用 Rust 語言開發的 Adobe Flash Player 模擬器,它不僅可以通過 WebAssembly 嵌入網站,還支援瀏覽器外掛的方式使用以及在本地通過命令列播放 Flash 檔案。來自 @浮生若夢 的分享

Swift 專案

29、LocationSimulator:iOS 裝置的定位模擬器。這是一個能夠輕鬆修改 iOS 和 iPadOS 位置資訊的 macOS 應用,使用時手機端無需越獄和安裝應用,只需通過 USB 或 WiFi 將裝置連線上電腦,即可輕鬆完成位置修改。

30、SwiftUI-Cheat-Sheet:SwiftUI 小抄。該專案是一份 SwiftUI 2.0 速查表,內容包含複製即用的程式碼片段和執行效果截圖。

其它

31、awesome-macos-screensavers:令人驚豔的 macOS 屏保集合。這裡有不同風格、樣式、趣味性十足的 macOS 屏保,相信總有一款適合你。

32、BlackHole:一款高顏值的音樂播放器應用。該專案是用 Flutter 寫的高顏值、無廣告、免費音樂播放器,擁有歌詞、專輯、藝術家、播放列表、定時關閉等功能,支援 Android、iOS、macOS 系統。

33、personal-security-checklist:保護你的數位安全和隱私的清單。這是一份教你如何保護個人資訊的列表,包括密碼、瀏覽網頁、電子郵件、社群網路、手機、電腦等方面。

34、radian:更先進的 R 語言控制檯。該專案可作為 R 語言自帶控制檯的替代品,它支援自動補全、多行編輯和語法高亮,更方便、更好用。

35、web-vitals:Google 開源的核心頁面指標。該指標可以幫助站長提升網站的使用者體驗,它分為 LCP(載入效能)、FID(互動性)、CLS(視覺穩定性) 三個方面。

36、XiangShan:一款國產的開源 RISC-V 處理器。「香山」是由中國科學院計算技術研究所牽頭髮起的開源 RISC-V 處理器專案。

開源書籍

37、Clean-Code-Notes:一本關於如何寫出 Clean Code 的書。該書從什麼是 Clean Code 講起,一步步教你如何寫出簡潔、容易理解和維護的程式碼,幫助你養成良好的編碼習慣。

機器學習

38、AI-For-Beginners:微軟開源的入門級人工智慧教學。這是一份完全免費、面向零基礎人群的 AI 課程,為期 12 周共計 24 節課。你將學習到關於 AI 的歷史、基本知識、主流框架、CV 和 NLP 等知識。

39、DragGAN:拖動 GAN 完成 P 圖。這是 DragGAN 的官方原始碼,它支援通過滑鼠拖拽的方式對影象進行編輯。任何人都可以通過精確控制畫素去向,輕鬆修改影象中物體的姿態、表情、形狀、佈局等。例如,可以讓圖片上原本站著的小狗坐下。

40、mediapipe:谷歌開源的跨平臺機器學習框架。它是一個能夠輕鬆部署到行動端、Web、PC 和物聯網裝置的機器學習工具庫,包含了物體檢測、影象分類、臉部辨識、手勢識別、文字分類、語言檢測、音訊分類等模型。

最後

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

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

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