《HelloGitHub》第 73 期

削微寒發表於2022-04-28

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

簡介

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

https://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 模型的專案。英偉達開源的最快只需 5 秒,訓練出一隻狐狸 NeRF 模型的技術。即根據靜態的 2D 圖片通過神經網路建模,快速訓練出可以放大且從任何角度觀察都清晰的圖片

最後

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

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

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

相關文章