《HelloGitHub》第 73 期

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

簡介

HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。

//github.com/521xueweihan/HelloGitHub

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


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

C 項目

1、lvgl:美觀易用的輕量級嵌入式系統圖形庫

  • 擁有豐富的圖形組件:按鍵、圖表、圖片等
  • 支援多種輸入設備:觸控螢幕、鍵盤、按鍵等
  • 最低資源佔用:64 kB ROM、16 kB RAM
  • 不依賴特定的硬體平台,可在多種顯示器上運行
  • 支援多語種:中文、韓文、阿拉伯文等
  • 豐富詳細的示例

2、uthash:為 C 語言提供哈希表的庫。由於 C 語言中沒有類似字典的數據結構,該庫提供了哈希表常見的查詢、插入、刪除、排序等函數。使用方法簡單,僅需引入一個頭文件

#include "uthash.h"

struct my_struct {
    int id;            /* we'll use this field as the key */
    char name[10];
    UT_hash_handle hh; /* makes this structure hashable */
};

struct my_struct *users = NULL;

void add_user(struct my_struct *s) {
    HASH_ADD_INT( users, id, s );
}

3、warpd:用鍵盤代替滑鼠的工具。擁有多種操作模式比如方向鍵移動滑鼠和區域選擇,但僅支援 Linux 和 macOS 系統

C# 項目

4、TradingSystem:開源的交易管理系統。包含了伺服器端、PC 客戶端、手機客戶端的源碼,支援中文介面、交易管理、列印小票、會員管理、統計報表等功能,適用於餐廳、超市、酒店等領域。使用和二次開發前請認真閱讀開源協議

C++ 項目

5、Cytopia:免費開源的像素風模擬城市建設遊戲

6、FileCentipede:一個用 C++ 和 Qt 編寫的跨平台文件下載器。它介面簡潔、下載速度快、支援多協議,還有瀏覽器插件可用來下載網頁中的影片和音頻

7、ydb:Yandex 開源的企業級分散式 SQL 資料庫。具有高可用、易擴展、事務、強一致性、災後自動恢復等特點,提供 Web 平台方便查詢以及 Go、Java、Python、JavaScript 等多種程式語言 SDK

CSS 項目

8、simple.css:超輕量級的 CSS 框架。不引入新的樣式類,僅把 HTML 元素設為合理值,從而實現僅用 HTML 元素就可以構建美觀、響應式的網頁

Go 項目

9、monitoror:平鋪的監控工具。安裝簡單配置方便的「監控牆」,所有監控指標以平鋪的方式展示,美觀且一目了然。支援 Linux、macOS 和 Windows 主流作業系統

10、yomo:低延時流式邊緣計算框架。它基於 QUIC(快速 UDP 互聯網連接)協議實現,有效地提高了數據傳輸率和穩定性,實現在複雜網路環境下數據依然可以超低時延傳輸和處理。原生支援多地域分散式的部署模式,使得終端用戶可就近訪問節點,保證數據傳輸的低延時。適用於開發實時交互的應用,比如在線協作 SaaS、元宇宙、AR/VR、雲遊戲、物聯網 IoT 等

11、gorse:由 Go 語言實現的推薦系統引擎。無需具備推薦系統相關知識,就能輕而易舉地搭建推薦系統。開發者只需將用戶資訊、物料資訊和互動數據(例如點贊、收藏等)導入系統,Gorse 就會自動訓練模型為每個用戶生成推薦

12、lal:純 Go 開發的流媒體伺服器。完備的直播伺服器,支援多種常見編碼格式和 RTMP、RTSP、HLS 等協議

13、casdoor:提供登陸介面的身份訪問管理平台。提供中文介面的用戶管理後台,支援多種第三方登錄、單點登錄以及手機/郵箱驗證碼、找回密碼等功能

Java 項目

14、javamelody:監控 Java、Java Web 應用程式的工具。監控包含 HTTP 請求、SQL 耗時、方法執行次數、錯誤百分比、Java 記憶體等指標,支援自定義時間維度和導出報告

15、guice:輕量級 Java 依賴注入框架。不需要大量的模版程式碼,即可編寫依賴注入的程式碼。使開發和調試更容易、更快速,適合個人開發者在小項目中使用

import javax.inject.Inject;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;

public class Main {
    @Inject
    private HelloWorldService service;//hello service
    
    public static void main(String[] args) {
        Main main = new Main();
        Module module = new HelloWorldModule();
        Injector injector = Guice.createInjector(module);
        injector.injectMembers(main);//injects the implementation of the service
        
        main.testGuice();
    }

    public void testGuice()
    {
        service.sayHello();//usage of the service
    }
}

16、databasir:一款資料庫模型文檔管理平台。支援自動同步資料庫元數據並生成文檔,解決數據模型文檔管理中的內容更新不及時等問題

17、streamx:Flink/Spark 極速開發框架,一站式流數據處理平台。提供開箱即用的流式大數據開發體驗,可在平台上統一管理配置、開發、測試、部署、監控、運維的整個過程

18、stendhal:一款免費、開源的多人在線冒險(MMORPG)遊戲。項目採用 Java 語言編寫,雖然遊戲畫面復古還是 2D 但擁有數百種物品、怪物、NPC、任務和自由交易組成的豐富世界。玩家可以通過完成任務得到經驗和金錢,更新裝備逐漸變強探索更多新的地圖。該遊戲從 2005 年開源持續維護至今,在線試玩

JavaScript 項目

19、nanoid:用於生成隨機 ID 的 JS 庫

  • 小巧:無依賴,僅 130 位元組
  • 快速:比 UUID 快 60%
  • 安全:加密的強隨機 API,可在集群中使用
  • 緊湊:它使用比 UUID 更大的字母表
  • 易用:已移植到 20 多種程式語言
const { nanoid } = require('nanoid');
nanoid(); //=> "U9HDHNW3BkWMEd6GV_QPa"

20、rubiks-cube:使用 Three.js 製作的 3D 魔方。支援自定義魔方階數,在線嘗試

21、nexe:可將 Node.js 應用程式,打包成一個可執行文件的命令行工具

22、cnchar:小巧的漢字處理 JS 庫。支援簡體字拼音、多音字、筆畫數等功能

let spell = cnchar.spell('你好');
let stroke = cnchar.stroke('你好');
console.log(spell, stroke);

23、rough:手繪風格的圖形庫。可以讓你用素描、類似手繪的風格來繪製圖形

const rc = rough.canvas(document.getElementById('canvas'));
rc.rectangle(10, 10, 200, 200); // x, y, width, height

Kotlin 項目

24、architecture-samples:Android 架構藍圖。該項目是官方給出的 Android 應用設計建議,展示並討論了如何設計 Android 應用架構,以及保證項目的可測試和可維護性。還有一個簡單的 to-do 應用作為示例,方便開發人員和初學者學習和理解

Objective-C 項目

25、hammerspoon:強大的 macOS 自動化工具。通過該項目可以方便地用 Lua 腳本與 macOS 系統 API 進行交互,實現操作窗口、滑鼠、文件系統、螢幕等功能。可用於打造各種 macOS 便捷工具

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "W", function()
  hs.notify.new({title="Hammerspoon", informativeText="Hello World"}):send()
end)

Python 項目

26、pikepdf:用於讀取和寫入 PDF 文件的 Python 庫

import pikepdf

with pikepdf.open('input.pdf') as pdf:
    num_pages = len(pdf.pages)
    del pdf.pages[-1]
    pdf.save('output.pdf')

27、docker-py:用 Python 操作 Docker 的庫。Docker 官方出品的 Python 庫,可以用來批量、自動管理鏡像

import docker
client = docker.from_env()
client.images.pull('nginx')
# <Image 'nginx'>
client.containers.run("ubuntu:latest", "echo hello world")
# 'hello world\n'
client.containers.list()
# [<Container '45e6d2de7c54'>, <Container 'db18e4f20eaa'>, ...]

28、memray:Python 的記憶體分析器。幫你分析 Python 應用的記憶體使用情況,找到記憶體泄漏的原因、佔用記憶體多的程式碼、記憶體使用率高的原因。支援生成記憶體報告(火焰圖、表格、樹狀圖)和實時報告等模式,以及統計結果等功能

  • 表格報告:memray table [options]
  • 實時報告:memray run –live application.py
  • 統計結果:memray stats [options]

29、pinry:分享圖片的開源網站。該項目前後端分離採用 Vue.js + Django 等技術棧,網站以平鋪的方式展示圖片,支援瀏覽、上傳和搜索圖片以及管理後台、個人頁、增加標籤等功能

30、modin:更快、類似 pandas 的數據處理和分析庫。底層通過 Ray 或 Dask 加速計算,上層兼容大部分 pandas API。所以使用起來十分簡單,僅需更改一行程式碼即可從 pandas 無縫切換到 Modin,同時獲得更快的數據處理速度

# import pandas as pd
import modin.pandas as pd
import numpy as np

frame_data = np.random.randint(0, 100, size=(2**10, 2**8))
df = pd.DataFrame(frame_data)

Ruby 項目

31、lobsters:lobste.rs 網站的源碼。採用 Rails 開發的網站,類似 Hacker News 以分享鏈接和討論為核心。可用來二次開發類似的網站

Rust 項目

32、gitv:由 Rust 編寫的 Git 倉庫分析和數據可視化的命令行工具

33、dnsguide:用 Rust 從頭寫一個 DNS 服務的教程

Swift 項目

34、WordPress-iOS:官方開源的 WordPress iOS 客戶端

其它

35、iRedMail:開箱即用的免費郵件伺服器。通過該項目可以快速在 Linux/BSD 上部署郵件服務,除此之外還擁有 Web 管理平台,數據均存儲在伺服器上,即保證了數據隱私還易於遷移和備份

36、WechatMomentScreenshot:朋友圈截圖生成工具

37、RedisInsight:官方開源的 Redis 桌面管理工具。提供了可視化操作介面、監控、記憶體分析、管理 Redis 集群等功能

38、getwidget:免費開源的 Flutter UI 庫。包含 1000 多種常用組件,幫你快速、輕鬆地構建 Flutter 應用

39、SmartIDE:快速搭建雲開發環境的工具。不需要手動安裝任何工具、SDK、編輯器和設置環境變數等繁瑣操作,一條命令即可獲得所需的開發環境和 IDE,輕鬆實現雲端開發

40、vcard-personal-portfolio:用來展示個人資訊的網站

開源書籍

41、awk:《AWK 程式設計語言》中文翻譯

42、tensorflow-internals:《TensorFlow 內核剖析》通過剖析 TF 源碼的方式,介紹它的架構、領域模型、工作原理等知識。雖然講解的 1.2 版本已經過時,但仍然可以用來了解知名機器學習框架的內部原理

43、rCore-Tutorial-Book-v3:用 Rust 語言從零開始寫一個基於 RISC-V 架構的類 Unix 內核。清華大學開源的中文教程,從電腦發展歷史開始科普,一步步說到為何作業系統會誕生,以及現代作業系統必須具備的特性。實踐方面也是從空文件夾開始,像搭樂高積木一樣,慢慢將作業系統的核心開發出來,教程讀起來簡直像看小說一樣讓人慾罷不能。在線閱讀

機器學習

44、instant-ngp:加速訓練 NeRF 模型的項目。NVIDIA 開源的最快只需 5 秒,訓練出一隻狐狸 NeRF 模型的技術。即根據靜態的 2D 圖片通過神經網路建模,快速訓練出可以放大且從任何角度觀察都清晰的圖片

最後

如果你發現了 GitHub 上有趣的項目,就點擊分享給大傢伙吧。

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

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