《HelloGitHub》第 70 期

削微寒發表於2022-01-28

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

簡介

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

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

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


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

C 專案

1、daytripper:上班摸魚神器之鐳射絆腳器。它分為發射器和接收器兩部分,設定好後會在有人路過絆腳器時,自動觸發隱藏桌面、切換應用等操作

2、tinyssh:極簡 SSH 伺服器。為了便於學習僅保留了基礎功能,而且拋棄了較舊的加密演算法。該專案的學習價值大於實用價值,適合對 SSH 和加密知識感興趣的小夥伴

C# 專案

3、LiveCharts2:簡單、靈活、強大的 .Net 圖表庫。支援 WPF、WinForms、WinUI、UWP 等

4、PowerRemoteDesktop:僅用 PowerShell 實現的遠端桌面工具。它易於安裝和使用、功能齊全,未依賴現有的協議和工具

5、.NET-Backend-Developer-Roadmap: .NET 後端學習路線圖

6、PDFPatcher:多功能的 PDF 工具箱,可用於修改 PDF 檔案資訊。支援:

  • 修改、合併 PDF 文件
  • 自動生成書籤
  • 書籤編輯器
  • 高速無損地匯出檔案中的圖片
  • 等等

C++ 專案

7、timg:在終端檢視圖片、動圖、視訊的命令列工具

timg some-image.jpg # 展示圖片
timg --loops=3 some-animated.gif # 迴圈展示三次動圖
timg some-video.mp4 # 播放視訊

8、oclint:強大的靜態程式碼分析工具。可以用來檢查 C、C++ 和 Objective-C 程式碼,發現潛在的 Bug 提高程式碼質量

9、CGraph:無第三方依賴的 DAG 排程框架。實現了依賴節點依次執行、無依賴節點併發執行的邏輯。專案結構清晰、文件齊全,不僅程式碼中包含關鍵註釋,還有示例程式碼和講解文章。初學者可以通過該專案學到圖排程方式、模組開發、模板程式設計、多執行緒程式設計、設計模式和通用演算法的知識

void tutorial_simple() {
    /* 建立一個流水線,用於設定和執行流圖資訊 */
    GPipelinePtr pipeline = GPipelineFactory::create();
    GElementPtr a, b, c, d = nullptr;

    /**
     * 其中,MyNode1運算元的執行內容為sleep(1s)
     * MyNode2運算元的執行內容為sleep(2s)
     * 以下幾行程式碼,相當於是設定了一個[b/c]依賴[a],[d]依賴[b/c]的dag流圖
     */
    pipeline->registerGElement<MyNode1>(&a, {}, "nodeA");
    pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB");
    pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC");
    pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD");

    /* 執行流圖框架 */
    pipeline->process();
    GPipelineFactory::destroy(pipeline);
}

Go 專案

10、gotests:自動生成 Go 語言測試程式碼的工具。該專案基於表驅動測試法(TableDrivenTests)自動生成測試程式碼,表驅動測試法是建立一張資料表格,每一行為輸入和預期輸出值,然後用這張表格的資料測試程式碼

11、gotop:用 Go 寫的系統監控命令列工具。重點是帶實時折線圖,看起來比較炫酷

12、minio:採用 Go 編寫的開源物件儲存服務。支援儲存圖片、視訊、日誌等檔案,還擁有方便操作的 Web 管理後臺。雖然輕量卻有著不錯的效能,同時採用 RS code 編碼演算法實現即使丟失一半的硬碟,依舊可以找回資料。適用於大資料、機器學習等場景

  • 高效能:單個檔案最大支援 5T,讀寫速率最高可以達到 55Gb/s 和 35Gb/s
  • 可擴充套件:不同叢集可以組合,支援跨越多個資料中心
  • 雲原生:支援容器化、基於 K8S 的編排、多租戶
  • 對接多種後端儲存:支援 S3、DAS、 NAS、Google 等雲端儲存

13、octosql:用 SQL 的方式查詢多個資料來源的命令列工具。支援用 SQL 查詢 CSV、JSON 檔案和多種資料庫中的資料,甚至可以在它們之間自由 JOIN

octosql "SELECT * FROM ./myfile.json"
octosql "SELECT * FROM ./myfile.json" --describe  # Show the schema of the file.
octosql "SELECT invoices.id, address, amount
         FROM invoices.csv JOIN db.customers ON invoices.customer_id = customers.id
         ORDER BY amount DESC"
octosql "SELECT customer_id, SUM(amount)
         FROM invoices.csv
         GROUP BY customer_id"

14、go-pry:Go 語言的互動式 REPL 命令列工具

# 安裝
go get github.com/d4l3k/go-pry
go install -i github.com/d4l3k/go-pry
# 執行
go-pry -i="fmt,math,strconv"

Java 專案

15、thumbnailator:Java 的縮圖生成庫

16、momo-code-sec-inspector-java:Java 靜態程式碼安全審計工具。它能夠在編碼過程中發現潛在的安全風險,並提供一鍵修復的功能,可在 IDEA 的外掛市場安裝

17、maven-mvnd:Apache Maven 團隊開源的更快的構建工具。因為內嵌了 Maven 所以可以絲滑地從 Maven 切換為 mvnd,而且它相較於 Maven 啟動速度更快、使用的記憶體更少、編譯花費的時間更少

18、agrona:提供了用於建立高效能應用的資料結構和實用方法的庫。它將 Java 標準庫中的資料結構進行包裝,避免了 Java 自動裝箱。比如提供的佇列使用了填充位元組的方式,避免頭尾結點進入同一緩衝行,來提高佇列出隊入隊的效能。整個專案程式碼量不多註釋完善、程式碼風格清晰,拋開使用來講也是一個值得學習的專案

JavaScript 專案

19、js-sdsl:實用的 JavaScript 資料結構庫。實現了 LinkList、Queue、Set、Map 等資料結構,嚴格的單元測試提供了正確性和效能的保證,可用於各種需要用到高階資料結構的場景

<script src="https://zly201.github.io/js-sdsl/js-sdsl.min.js"></script>
<script>
    const { Vector } = sdsl;
    const myVector = new Vector();
    // you code here...
</script>

20、resume:線上簡歷生成器。輕鬆實現線上簡歷,支援線上預覽、編輯和下載 PDF 簡歷。線上嘗試

21、mometa:前端程式碼視覺化編輯器。一款低程式碼輔助開發的工具,可通過拖拽的方式構建和編輯頁面。特性:

  • ? 直接作用於原始碼,支援移動端佈局
  • ? 開放物料生態,可定製團隊內物料庫
  • ? 無縫相容接入,不破壞已有專案開發模式

22、shepherd:用來引導使用者瀏覽網站的 JavaScript 庫

23、lottery:年會抽獎程式。基於 Express + Three.js 的 3D 球體抽獎專案,能夠自定義文字、圖片和抽獎規則,還支援一鍵匯入抽獎人員和匯出抽獎結果

Objective-C 專案

24、Stay:移動端 Safari 瀏覽器外掛管理器。提供了豐富的指令碼管理能力,還支援執行油猴外掛。內建的指令碼庫提供了 App 防跳轉、廣告攔截、自動展開文字等功能

PHP 專案

25、dootask:線上專案管理平臺。功能包括任務分配、文件協作、即時 IM、文件協作、檔案管理等

26、esupdater:基於 Canal 的 ES 增量更新框架。適用於把 MySQL 的增量資料,實時更新到 ES 實現同步更新搜尋資料

Python 專案

27、Hitomi-Downloader:Python 寫的桌面下載工具。介面簡單使用方便,擁有下載限速、BT 種子、自動提取網頁視訊等功能,支援下載國內多個視訊網站的內容

28、django-grappelli:美化 Django 預設管理後臺介面的庫

# 安裝
pip install django-grappelli
# 設定 settings.py 檔案
INSTALLED_APPS = (
    'grappelli',
    'django.contrib.admin',
)
# 增加路徑
urlpatterns = [
    path('grappelli/', include('grappelli.urls')), # grappelli URLS
    path('admin/', admin.site.urls), # admin site
]
# 增加請求處理器
TEMPLATES = [
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                ...
]
# 最後
python manage.py collectstatic

29、trzsz:簡單實用的檔案傳輸工具。支援 tmux 和 iTerm2 一起使用,並且有顯示上傳/下載進度的進度條

Ruby 專案

30、fastlane:一款專為 iOS 和 Android 開發者提供自動化構建的工具。它上手簡單使用方便,能夠幫助開發者自動完成 App 打包、簽名、測試、釋出、提交到 App Store、Google Play 等工作,實現一條命令釋出應用

lane :beta do
  increment_build_number
  build_app
  upload_to_testflight
end
lane :release do
  capture_screenshots
  build_app
  upload_to_app_store       # 上傳截圖和應用到應用商店
  slack                     # 釋出完成回撥通知
end

Swift 專案

31、SwiftPamphletApp:一款免費開源的 Swift 手冊工具。能夠幫助開發者方便的檢視 Swift 語法和常用庫的使用指南,除此之外還可以接收 Swift 開源庫的動態

32、iGlance:macOS 狀態列系統監視器

其它

33、m-cli:macOS 命令列工具。實現在終端用簡短命令的方式操作 macOS 系統,比如管理藍芽、開啟 Wi-Fi、清空廢紙簍、操作 iTunes 等

34、WhiteSur-gtk-theme:仿蘋果 Big Sur 風格的 GTK 主題

35、JetBrainsMono:JetBrains 為開發者開源的免費字型。該字型形狀簡單沒有不必要的細節,從而閱讀起來十分輕鬆而且小尺寸時顯示更加清晰

36、one-html-page-challenge:單個 HTML 頁面的挑戰。該專案彙集了滿足僅有一個 HTML 檔案、小於 1MB、不可接入 API、不能引用庫條件下實現的創意網頁。線上檢視

37、realworld:該專案彙集了不同技術棧的實戰專案。這裡有採用不同程式語言框架,實現相同功能內容網站的專案程式碼。例如用 Vue.js+Django 開發包含註冊、登入、釋出文章、標籤、評論等功能的網站,讓你通過簡單但完整的實戰專案,快速上手新的技術棧,消除剛接觸某個技術時的手足無措。點選檢視

開源書籍

38、rust-course:《Rust 語言聖經》涵蓋了 Rust 語言從入門到精通的全部知識。該書目前還未完成,正處於積極更新的狀態。線上閱讀

39、safe-rules:由 360 質量工程部開源的《程式碼安全規則集合》。一份全面詳細的 C/C++ 程式設計規範指南,適用於桌面、服務端以及嵌入式等軟體開發

機器學習

40、VNN:高效能、輕量級的神經網路部署框架。支援人臉關鍵點檢測、卡通影像風格化、天氣場景識別等功能,打包全部功能後的 SDK 體積還不到 3 MB,適用於 Android、iOS 等作業系統

最後

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

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

感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享, 您的鼓勵就是 HelloGitHub 前進的動力!❤️

最後提前祝大家新年快樂! 年後見嘍!

相關文章