開源愛好者月刊《HelloGitHub》第 71 期

削微寒發表於2022-02-28

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

簡介

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

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

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


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

C 專案

1、h2o:高效能 HTTP 伺服器。相較於傳統 Web 伺服器,它充分利用了 HTTP/2 的資源載入優先順序和伺服器推送技術,所以在靜態檔案方面效能明顯優於 Nginx 伺服器

2、chibicc:迷你 C 編譯器。雖然它只是一個玩具級的編譯器,但是實現了大多數 C11 特性,而且能夠成功編譯幾十萬行的 C 語言專案,其中包括 Git、SQLite 等知名專案。而且它專案結構清晰、每次提交都是精心設計、程式碼容易理解,對編譯器感興趣的同學可以從第一個提交開始學習

C# 專案

3、CliWrap:執行外部命令的 C# 庫。提供啟動程式、輸入/輸出重定向、等待完成、管道等功能,支援 Windows、Linux、macOS 作業系統

using CliWrap;

var result = await Cli.Wrap("path/to/exe")
    .WithArguments("--foo bar")
    .WithWorkingDirectory("work/dir/path")
    .ExecuteAsync();
    
// 輸出包括:
// -- result.ExitCode        (int)
// -- result.StartTime       (開始時間)
// -- result.ExitTime        (結束時間)
// -- result.RunTime         (執行命令耗時)

4、DreamScene2:小巧的 Windows 動態桌面工具。適用於 Windows10/11 系統,支援視訊、網頁動畫播放

C++ 專案

5、vcpkg:微軟開源的 C/C++ 包管理工具。安裝和管理 C/C++ 依賴的命令列工具,適用於 Windows、Linux 和 macOS 作業系統。快速入門

6、finalcut:用於建立基於文字的使用者介面的 C++ 庫。它除了支援滑鼠操作和同時處理多個文字窗,還提供了常見的對話方塊、按鈕、核取方塊、單選按鈕、輸入行、列表框、狀態列等控制元件

CSS 專案

7、magic:炫酷的 CSS3 動畫庫。線上體驗

Go 專案

8、nali:離線查詢 IP 地理資訊和 CDN 服務提供商的命令列工具

$ nali 1.2.3.4
1.2.3.4 [澳大利亞 APNIC Debogon-prefix網路]

9、revive:快速且易擴充套件的 Go 程式碼檢查工具。它比 golint 更快、更靈活,深受廣大 Go 開發者的喜愛

10、go-chart:Go 原生圖表庫。支援折線圖、柱狀圖、餅圖等

package main
import (
	"os"
	"github.com/wcharczuk/go-chart/v2"
)

func main() {
	graph := chart.Chart{
		Series: []chart.Series{
			chart.ContinuousSeries{
				XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
				YValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
			},
		},
	}
	f, _ := os.Create("output.png")
	defer f.Close()
	graph.Render(chart.PNG, f)
}

11、filestash:線上檔案管理工具。在瀏覽器上管理 FTP、SFTP、Git、S3、MySQL、Dropbox 等服務中的檔案和資料,支援編輯檔案、圖片管理、視訊轉碼、Office 文件、全文搜尋等功能

12、vitess:用於橫向擴充套件 MySQL 資料庫的叢集系統。基於 Go 語言的併發特性,它能夠輕鬆處理數千個連線。還可以根據配置好的規則,自動優化影響資料庫效能的查詢,運維方面支援自動處理主故障轉移和備份等功能

Java 專案

13、thingsboard:完全開源的物聯網 IoT 平臺。它使用行業的標準物聯網協議 MQTT、CoAP 和 HTTP 連線裝置,支援資料收集、處理、視覺化和裝置管理等功能。通過該專案可快速實現物聯網平臺搭建,從而成為眾多大型企業的首選,行業覆蓋電信、智慧城市、環境監測等

14、from-java-to-kotlin:展示 Java 和 Kotlin 語法上差別的專案。讓有 Java 基礎的程式設計師可以快速上手 Kotlin,中文

15、graal:Oracle 開源的高效能跨語言虛擬機器。用它啟動的程式佔用記憶體更低、啟動時間更短,而且支援執行多種程式語言,比如 Python、Ruby、C/C++、Java 等。通過 Polyglot API 更是打破了不同語言之間的壁壘,實現多語言混合程式設計。目前部分功能還處於實驗階段,生產環境慎用。官網

import org.graalvm.polyglot.*;

class Polyglot {
    public static void main(String[] args) {
        Context context = Context.newBuilder().allowIO(true).build();
        Value array = context.eval("python", "[1,2,42,4]");
        int result = array.getArrayElement(2).asInt();
        System.out.println(result);
    }
}

/**
 * 執行結果
 * 執行:javac Polyglot.java
 * 輸出:42
 */

16、glide:流暢快速的 Android 圖片載入庫。為了實現快速載入和展示影像,Glide 會自動縮減畫素取樣、快取、積極重用減少垃圾回收。使用上一行程式碼就可以實現圖片載入和展示,同時網路請求部分可靈活接入任何庫

Glide.with(fragment).load(url).into(imageView);

17、jjwt:適用於 Java 和 Android 的 JWT(JSON Web Token)庫

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;

Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
String jws = Jwts.builder().setSubject("HelloGitHub").signWith(key).compact();
// 得到 JWS 字串

JavaScript 專案

18、handle:漢字版 Wordle 遊戲。線上試玩

19、noclip:電子遊戲關卡的數字博物館。該專案包含了很多遊戲的場景模型,可線上自由瀏覽。線上體驗

20、ts-node:可直接在 Node.js 上執行 TypeScript 程式碼的庫。通過 JIT 方式將 TypeScript 程式碼轉換成 JavaScript,實現不需要預編譯即可在 Node.js 上執行 TypeScript 程式碼

21、summernote:基於 jQuery 的編輯器庫。可用來建立所見即所得(WYSIWYG)編輯器,支援 Bootstrap 3、4 和 5

22、yn:面向程式設計師的本地 Markdown 筆記工具。一款適合程式設計師的筆記工具,擁有和其它工具不一樣的體驗

  • 技術筆記:可直接在文件中執行程式碼塊(預設支援 JS 程式碼,其它語言需配置)
  • 製作輔助工具:可在文件中嵌入 HTML 元件來製作輔助工具
  • 畫圖和圖表:支援嵌入多種圖形、思維導圖、Plantunl、Drawio、Mermaid 、ECharts
  • 工作日報:支援任務代辦列表,使用“巨集替換”功能可以方便的生成日報週報

Kotlin 專案

23、RocketXPlugin:加速 Android APK 編譯的外掛。它會自動識別未改動模組並在編譯流程中替換為 AAR,最後只編譯改動過的模組,從而實現加速的效果

// app module 的 build.gradle 加入
apply plugin: 'com.rocketx'

// 在根目錄的 build.gradle 加入
buildscript {
    dependencies {
        classpath 'io.github.trycatchx:rocketx:1.0.17'
    }
}
依賴 AS 外掛 android studio setting->plugins-> marketplace 搜尋 RocketX 安裝

PHP 專案

24、codefever:由蒲公英團隊開源的程式碼託管平臺。介面清爽後端採用 PHP 編寫,支援 Docker 一鍵部署

  • ❤️ 完整開源:毫無保留的完整開源,無任何編譯或加密程式碼
  • ⌨️ 程式碼對比:支援提交程式碼的不同版本支援高亮顯示對比
  • ??‍♀️ 分支保護:分支保護功能讓程式碼提交安全可控,程式碼 Review 更容易清晰
  • ? 多人協作:支援多人團隊協作,並可以設定每個成員的角色和許可權
  • ? Webhook:支援 Webhook 功能,可輕鬆和其它系統進行整合

25、PrestaShop:PHP 寫的開源電商平臺。功能齊全、部署方便、適配移動端。雖然前端支援高度自定義,但是現成的前端模版需要付費

Python 專案

26、Python:用 Python 實現所有演算法。該專案是用 Python 語言實現各種演算法的集合,主要用於教育和學習。包括搜尋、排序、資料結構、機器學習、密碼、神經網路等方面

27、drf-yasg:為 Django Rest Framework 介面自動生成 Swagger 介面文件的庫

28、tstock:在命令列看股票走勢的工具

29、python-mini-projects:一個簡單的 Python 迷你指令碼集合。雖然程式碼簡單但其中不乏實用的 Python 指令碼,比如圖片新增水印、批量下載圖片、傳送電子郵件、定時截圖等

Rust 專案

30、tui-rs:用來構建豐富的終端使用者介面的庫

Swift 專案

31、vapor:流行的 Swift 語言 Web 框架。核心框架基於非阻塞事件驅動庫 SwiftNIO 構建,除此之外還提供了 ORM、模版引擎、使用者身份驗證等模組,可用來快速建立網站、介面等服務。中文文件

import Vapor
 
let app = try Application(.detect())
defer { app.shutdown() }

app.get("hello") { req in
    return "Hello, world."
}
try app.run()

32、DevUtils-app:macOS 上的開發者實用工具箱。單機應用無需聯網,內含開發者開發時經常用到的 30 多種工具,比如:URL 解碼、JSON 格式化、正則匹配、時間戳轉化等,而且還會根據剪貼簿的內容,自動推薦對應的處理工具,實用且高效

其它

33、svg-path-editor:線上 SVG 編輯器。線上體驗

34、Arduino:開源電子平臺,可用來製作嵌入式專案。Arduino 提供的電路板安裝簡單、價格便宜,而且電路圖完全開源。官方還提供了配套的開發工具,加上互動式的開發模式使得上手變得極為簡單。軟硬體的完全開源讓開發者社群十分活躍,為社群提供了豐富的教程、實戰專案、三方資源。如果你想動手做個機器人,就從 Arduino 開始吧!官網

35、macos-web:線上體驗 macOS 系統。該專案使用 Svelte 復刻了 macOS 作業系統的部分操作體驗,雖然已實現的功能較少,但更新積極未來可期。線上檢視

36、resume:簡歷模板。不需要懂 LaTeX 語法就可以用,適合用來做一頁紙簡歷

37、teslamate:自建特斯拉的日誌平臺。該專案可以將車主的特斯拉行駛資料收集、儲存、展示,而且方便地支援 Docker 部署

38、HowToCook:程式設計師做飯指南。一份極其詳盡的菜譜,裡面沒有模糊的量詞和看不懂的操作,菜品從主食到甜品應有盡有

39、db-tutorial:一份關於資料庫的教程。內容涵蓋了 MySQL、Redis、ES、MongoDB 從入門到面試等多方面的知識

40、pushdeer:無 APP 推送服務。該專案可以實現不安裝龐大的應用,就可以收到自定義的及時推送、告警和通知。還可以選擇自行搭建服務(免費)或使用已有的線上服務(收費),支援快應用、iOS、macOS、Android 等客戶端

機器學習

41、ColossalAI:高效的分散式人工智慧訓練系統。它能幫助使用者在提升人工智慧訓練效率的同時降低訓練成本,從而適應快速迭代的演算法和模型,將 AI 大模型以低成本便捷推廣到更多應用場景

最後

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

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

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

相關文章