《HelloGitHub》第 75 期

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

簡介

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

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

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


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

C 項目

1、fontforge:免費開源的字體編輯器。適用於 Windows、macOS、Linux 的編輯字體桌面工具,支持創建和編輯多種格式的字體,可用來構建自己的字體。

2、TencentOS-tiny:騰訊開源的物聯網終端操作系統。精簡的實時操作系統(RTOS)內核,可移植到多種主流單片機,內部集成了多種物聯網協議棧,具有佔用資源少、低功耗、模塊化、易移植、安全等特點。

3、micropython:可運行在單片機上的 Python。衆所周知 Python 是一門語法非常簡單的編程語言,如果能用 Python 操控硬件豈不美哉!該項目就是單片機上的“迷你” Python,通過它就可以用 Python3 進行單片機開發了,大大地降低了硬件開發的入門門檻。

C# 項目

4、lively:Windows 動態桌面壁紙工具。支持 Windows 用戶設置多種動畫文件爲桌面壁紙的工具,不僅安裝簡單效果炫酷,而且完全免費。

C++ 項目

5、folly:Facebook 開源的 C++ 工具庫。包含一系列高性能的 C++ 組件庫,方便且高效在 Facebook 內部被廣泛應用。該項目不僅代碼規範測試用例充足,而且源碼中包含豐富的註釋。同樣功能的函數爲什麼別人寫的性能好還健壯,這次終於可以一探究竟了。

AtomicHashMap.h:高性能原子數據結構
Bits.h:處理各種位操作的工具
Conv.h:處理各種數據類型的轉換
dynamic.h:動態類型的對象,可用來處理 json-> map
...

6、async_simple:阿里開源的輕量級 C++ 異步框架。提供了基於 C++20 無棧協程(Lazy)、有棧協程(Uthread) 以及 Future/Promise 等異步組件,能夠輕鬆完成 C++ 異步的開發,廣泛應用於阿里的圖計算引擎、時序數據庫、搜索引擎等系統。

template <class T>
using Lazy = async_simple::coro::Lazy<T>;

Lazy<int> bar() {
  // ...
  int r = co_await read_some();
  // ...
  co_return r;
}

Lazy<int> read_some() {
  // ...
  int r = co_await read_coro();
  // ...
  co_return r;
}

CSS 項目

7、NES.css:NES 風格的 CSS 框架。NES 就是我們小時候玩的“紅白機”,如果你喜歡這種像素風格的畫面,該項目可以讓你輕鬆實現類似“紅白機”復古遊戲風格的網頁。

<head>
    <link href="fonts_url" rel="stylesheet">
    <link href="nes.css_url" rel="stylesheet" />

    <style>
      html, body, pre, code, kbd, samp {
          font-family: "font-family you want to use";
      }
    </style>
</head>

Go 項目

8、navidrome:Go 寫的開源音樂服務器。該項目可以用來搭建自己的音樂網站,功能豐富支持中文界面、專輯封面、多用戶、各種音頻格式、播放列表等功能,而且硬件要求低即使是在樹莓派上也能流暢地運行。

9、natpass:多功能主機管理平臺。Go 寫的主機管理 Web 平臺,支持 shell 和遠程桌面管理 Linux、Windows 和 macOS 系統的主機。

10、paopao-ce:一個 Go 寫的輕量級社區。採用 Gin+Vue 實現的微社區,界面清爽擁有話題、發佈短內容、評論等功能。

11、server:多用戶的屏幕分享服務。它可以快速啓動一個在線共享屏幕的服務,讓用戶無需安裝任何軟件,僅使用瀏覽器就能分享自己的屏幕畫面。項目基於網頁實時通信(WebRTC) 實現,由 STUN/TURN 協議完成內網穿透和瀏覽器端對端的連接,既實用又有源碼可以學習。

12、go-best-practice:編寫可維護 Go 代碼的建議。《Go 語言最佳實踐》一文的中文翻譯版。

Java 項目

13、concurrency-limits:奈飛開源的自適應限流庫。當服務在面對高併發處理不過來的時候,通常會採用限流的方式來保證服務可以正常運行,但限流的閾值很難精準把控,設置小了會損失流量、大了又容易搞掛服務。該項目基於 TCP 擁塞控制算法,實現了自適應併發限制,即自動設置最佳限流閾值,從而能夠在保證服務穩定的前提下,儘可能多地處理請求。

// Create and configure a server builder
ServerBuilder builder = ...;

builder.addService(ServerInterceptor.intercept(service,
    ConcurrencyLimitServerInterceptor.newBuilder(
        new GrpcServerLimiterBuilder()
            .partitionByHeader(GROUP_HEADER)
            .partition("live", 0.9)
            .partition("batch", 0.1)
            .limit(WindowedLimit.newBuilder()
                    .build(Gradient2Limit.newBuilder()
                            .build()))
            .build();

    ));

14、baritone:Minecraft 遊戲機器人 。它可以幫你自動完成尋路、採集礦石等操作。

15、cat:Java 開發的實時應用監控平臺。美團開源的實時監控告警服務,能夠幫助開發者快速定位線上的問題。功能豐富包括全量採集指標數據、分佈式跨機房部署、性能分析報表等,還支持多種編程語言客戶端。

Cat-client:提供給業務以及中間層埋點的底層 SDK
Cat-consumer:用於實時分析從客戶端提供的數據
Cat-home:作爲用戶給用戶提供展示的控制端

16、DataX:高效的離線數據同步工具。阿里開源的數據同步框架,可用於解決各種主流關係數據庫、HDFS、HBase 等數據源之間的數據同步問題。

JavaScript 項目

17、dicebear:供設計師和開發者使用的頭像庫。可根據傳入的字符串,自動生成對應用戶頭像的庫,還有免費的接口服務。支持多種不同的風格,比如:像素、冒險家、標識等。

// 安裝:npm install --save @dicebear/avatars @dicebear/micah

import { createAvatar } from '@dicebear/avatars';
import * as style from '@dicebear/micah';

let svg = createAvatar(style, {
  seed: 'custom-seed',
  // ... and other options
});

18、type-challenges:在線挑戰 TypeScript 類型問題。該項目包含了不同難度的關於 TypeScript 類型的問題以及答案,通過這些挑戰可以更好地理解 TypeScript 的類型系統。

19、react-illustration-series:圖解 React 源碼。作者從 React 項目結構和運行機制入手,先介紹 React 的整體結構,然後講解運行核心、數據管理以及用到的高頻算法。篇篇到“肉”乾貨滿滿,推薦給想要深入學習 React 源碼的小夥伴。

20、visual-drag-demo:教你做低代碼平臺的項目。低代碼平臺的核心功能就是拖拽組件生成頁面,該項目用 Vue 實現了一個可視化拖拽組件庫,不僅如此還有配套講解技術要點和原理分析的文章。

21、FFCreator:輕量級的視頻加工庫。完全基於 Node.js 實現的快速製作視頻的工具,能夠根據添加的圖片、視頻和音樂,輕鬆地製作出新的視頻。

22、payload:完全由 TypeScript 編寫的“無頭” CMS 系統。該項目採用 TypeScript +Node.js+React+MongoDB 構建而成,提供了完整的內容管理功能。相較於傳統的 CMS 系統 Django,它沒有前臺部分和模版引擎(無頭 headless)僅通過接口爲前端提供數據,從而可以輕鬆地實現前後端分離,讓後端程序員可以更加專注於接口開發。

Kotlin 項目

23、SmsForwarder:Android 上的消息轉發應用。可以監控 Android 手機上的短信、來電和應用通知,並根據配置好的規則自動轉發給其它手機,以及包括釘釘、飛書、企業微信在內的多種主流消息平臺。

PHP 項目

24、freenom:免費域名自動續期工具。因爲頂級免費域名供應商 Freenom,提供的免費域名需要每年續期,該項目可以自動完成域名續期,讓你輕鬆擁有免費的頂級域名。

Python 項目

25、kopf:用 Python 操作 Kubernetes 的框架。Kubernetes(k8s) 是一個容器編排系統,它本身提供了命令行工具(kubectl),但有時無法實現較爲複雜的操作。通過該項目可以用 Python 輕鬆完成,需要條件判斷、事件觸發等複雜的 k8s 操作。

import kopf

@kopf.timer('kopfexamples', interval=1)
def my_timer(spec, **kwargs):
    print(f"Object's spec: {spec}")

26、DearPyGui:強大的 Python GUI 庫。底層採用 GPU 渲染提供了卓越的性能,內置多種現成的部件和樣式控制,文檔詳細包含豐富的示例,可以輕鬆上手。

import dearpygui.dearpygui as dpg

def save_callback():
    print("Save Clicked")

dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()

with dpg.window(label="Example Window"):
    dpg.add_text("Hello world")
    dpg.add_button(label="Save", callback=save_callback)
    dpg.add_input_text(label="string")
    dpg.add_slider_float(label="float")

dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

27、sqlfluff:SQL 代碼風格檢查工具。編程語言的 linter 工具隨處可見,但是少有 SQL 的工具。該項目就是用來檢查、統一 SQL 代碼風格的工具,支持 MySQL、BigQuery、Hive 等多種 SQL 方言。

$ pip install sqlfluff
$ echo "  SELECT a  +  b FROM tbl;  " > test.sql
$ sqlfluff lint test.sql --dialect ansi
== [test.sql] FAIL
L:   1 | P:   1 | L050 | Files must not begin with newlines or whitespace.
L:   1 | P:   3 | L003 | First line has unexpected indent
L:   1 | P:  11 | L039 | Unnecessary whitespace found.
L:   1 | P:  14 | L039 | Unnecessary whitespace found.
L:   1 | P:  27 | L001 | Unnecessary trailing whitespace.

28、nonebot2:Python 異步聊天機器人框架。該項目基於 Python 的異步特性,可以輕鬆處理大量的消息。提供命令行腳手架、支持多種 IM 平臺,能夠快速構建聊天機器人、消息通知等項目。

$ pip install nb-cli
$ nb
[?] What do you want to do?
❯ Create a New Project
  Run the Bot in Current Folder
  Driver ->
  Adapter ->
  Plugin ->
  ...

Ruby 項目

29、gollum:基於 Git 的輕量級 wiki 系統。後端採用 Ruby 編寫,然後 Git 作爲文件存儲的 wiki 系統。功能夠用部署簡單,但界面比較“簡樸”。

Rust 項目

30、lapce:純 Rust 編寫的代碼編輯器。基於 Rust 的 Druid 和 Xi-Editor 構建的輕快代碼編輯器,內置終端、LSP 協議支持、遠程開發、VIM 模式,支持 Windows、Linux、macOS。

Swift 項目

31、SwiftFormat:用於格式化 Swift 代碼的工具。當多人合作開發項目的時候,一致的代碼風格就變得至關重要。該項目可以自動統一 Swift 代碼風格,支持多種編輯器和命令行方式調用,適用於 macOS 和 Linux,讓 Swift 代碼風格統一變得十分簡單和方便。

# macOS
$ brew install swiftformat
# Linux
$ mint install nicklockwood/SwiftFormat

32、WhatsNewKit:輕鬆展示應用新功能的 Swift 組件。當開發者爲應用增加了新功能,就需要在用戶更新後告知新功能和內容。通過該組件可以輕鬆展示新功能,支持高度自定義、SwiftUI、iOS 和 macOS 系統。

import SwiftUI
import WhatsNewKit

struct ContentView: View {
    
    var body: some View {
        NavigationView {
            // ...
        }
        .whatsNewSheet()
    }
    
}

33、Runestone:適用於 iOS 的高亮文本編輯器。基於 Tree-sitter 實現的高性能 iOS 文本編輯器,支持多種編程語言的語法高亮,以及行數、顯示不可見字符、插入符號對等功能。

其它

34、codi.vim:顯示每一行代碼結果的 Vim 插件。在 Vim 編輯器裏交互式展示,輸入的每一行代碼的運行結果,支持如 Python、Ruby、PHP、JavaScript 等多種編程語言。

35、IoT-For-Beginners:微軟開源的物聯網入門教程。如果你想學習物聯網但不知道如何開始,這有一份微軟製作和開源的物聯網教程,課程循序漸進製作精良,包含文字、插圖、視頻、課後練習和邊學邊做的項目,非常適合初學者。

36、live2d-widget:網頁的 Live2D 看板娘。通過該項目可以輕鬆地在網頁上,添加可愛的“看板娘”。

37、Ventoy:製作可啓動 U 盤的工具。重裝系統時不用再格式化 U 盤,該項目支持直接將系統鏡像拷貝進 U 盤就能啓動,無需其它操作。

38、jiffyreader.com:仿生閱讀英文的瀏覽器插件。通過加粗單詞的首字母部分提高閱讀效率,實現更輕鬆、快速地瀏覽英文網站、文章等內容的功能。

39、checkchan-dist:網頁內容監控工具。能監測網頁內容變化,併發送異動通知,可用來跟蹤網站內容、追番劇和小說。

開源書籍

40、cpp-game-engine-book:《遊戲引擎淺入淺出》。該書介紹瞭如何從零製作一個完整的遊戲引擎,內容包含從基礎的環境搭建,到後面的骨骼動畫、多線程渲染、陰影實現等方面。

機器學習

41、dalle-mini:根據文字生成圖片的 AI 模型。可以按照文字提示自動生成圖片,我試了下感覺生成的圖片有些“抽象”。

42、shap:解釋機器學習模型輸出的庫。它基於博弈論中的 Shapley Value 理論,將所有特徵視爲貢獻者,然後計算每個特徵對於模型輸出結果的貢獻。

最後

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章