《HelloGitHub》第 74 期

2022-05-27 09:01:01

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

簡介

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

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

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


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

C 專案

1、entr:在檔案有改動時自動觸發任意命令的工具。採用 kqueue 或 inotify 事件通知介面監聽檔案改動事件,避免輪詢造成的資源浪費,可用於實現自動編譯、重啟、測試、同步等功能

# 自動 make 
find src/ | entr sh -c 'make | head -n 20'
# 自動重啟服務
ls *.js | entr -r node app.js

2、open-gpu-kernel-modules:英偉達開源的 Linux GPU 核心驅動。關於開源的原因網友們眾說紛紜駭客勒索、被 Linus 罵的、擁抱開源,但無論如何這是件好事,至於這件事後續對 Linux 系統的影響就讓我們拭目以待吧

3、sioyek:免費開源的 PDF 閱讀器。支援互動式快速搜尋檔案,而且就算檔案中的參照沒有連結也可以直接跳轉,特別適合 PC 端閱讀和研究論文、技術檔案等

4、ServerStatus:多伺服器雲監控。輕鬆監控多臺伺服器狀態的工具,用於解決多個不同平臺下的伺服器狀態監控問題

5、FreeRDP:完全免費的遠端桌面管理工具。此專案為遠端桌面協定(RDP)的一個開源實現,通過它可以輕鬆實現 macOS 或 Linux 遠端操作 Windows 桌面系統反之亦可,使用起來十分方便和流暢。下載地址

C# 專案

6、TowerDefense-GameFramework-Demo:開源的塔防遊戲範例。此專案主要用來上手和學習基於 Unity 引擎的遊戲框架 GameFramework,感興趣的同學可以把玩一下。遊戲共有五個關卡,玩家通過擊殺敵人和建造能量塔獲取資源,消耗能量建造防禦塔阻止敵人攻擊基地

C++ 專案

7、Cpp_Primer_Practice:《C++ Primer》中文版第 5 版的學習筆記。該專案不僅包含學習筆記還有課後習題的答案

8、serenity:開源桌面作業系統。一款披著復古外衣現代的類 Unix 開源作業系統。從核心到 Web 瀏覽器均採用 C++ 編寫,沒有依賴現成的第三方庫,外觀模仿 90 年代作業系統介面的風格,我認為這是一封極客致敬經典的情書

9、polybar:超酷的 Linux 桌面狀態列工具。使用時無需精通 shell 就能上手,輕鬆完成高度自定義的狀態列。還有更多現成的主題,拿來即用點選檢視

CSS 專案

10、weui:微信開源的原生基礎樣式庫。為微信內網頁和小程式量身設計的樣式庫,包括按鈕、徽章、進度條、圖示、對話方塊等各式元素

Go 專案

11、httprunner:開源的 API 測試工具。支援豐富的網路協定,涵蓋介面測試、效能測試等測試型別的測試工具

  • 多種網路協定:支援 HTTP(S)/HTTP2/WebSocket/RPC 等
  • 多格式可選:測試用例支援 YAML/JSON/go test/pytest 格式
  • 雙執行引擎:同時支援 Golang/Python 兩個執行引擎
  • 一鍵部署:一條命令在 macOS/Linux/Windows 完成安裝部署
  • 網路效能採集:在場景化介面測試的基礎上,可額外採集網路鏈路效能指標

12、fx:命令列 JSON 瀏覽工具。看似簡單卻十分實用的 JSON 命令列查詢工具,支援流式和互動式兩種查詢方式

13、zinc:輕量級全文搜尋引擎。Go 語言下的輕量級搜尋引擎,支援中文搜尋自帶 Web 管理介面

14、ants:高效能 goroutine 池。實現了大規模下的 goroutine 排程和複用,從而節省資源提高執行效果。還有如任務提交、動態調整 pool 大小、查詢執行狀態等實用介面

Java 專案

15、jclasslib:Java 位元組碼瀏覽器。支援視覺化操作、檢視、編輯編譯好的 Java 類檔案的開發工具

16、RuoYi:開箱即用的許可權管理系統。基於 SpringBoot 開發的後臺管理系統,包含使用者管理、部門管理、角色管理、登入紀錄檔、定時任務、服務監控等功能,可以用來快速構建 CMS、CRM、OA 等系統

17、debezium:捕獲資料更改(CDC)的流式處理平臺。可以監控資料庫中的資料變動,把每一個行級別的資料改動,通過流的方式實時同步給其他服務。適用於更新快取、更新搜尋、雙寫等場景

18、shardingsphere:一套開源的分散式資料庫增強計算引擎。可將多種資料庫轉換為分散式資料庫的生態系統,就是把多種不同型別的資料整合成對外是一個整體的資料庫,即化零為整。充分合理地利用資料庫的計算和儲存能力,解決資料分片、資料加密、異構資料查詢等痛點

19、hertzbeat:易用友好的雲監控系統。適用於應用服務、資料庫、網站、API、作業系統等監控的場景,可以幫助中小型團隊快速搭建監控系統

JavaScript 專案

20、fortune-sheet:類似 Excel 的電子試算表元件。使用簡單無需繁瑣的設定,內建多種 Excel 常用功能,並且支援線上協同編輯

import React from 'react';
import ReactDOM from 'react-dom';
import { Workbook } from "@fortune-sheet/react";
import "@fortune-sheet/react/dist/index.css"

ReactDOM.render(
  <Workbook data={[{ name: "Sheet1" }]} ></Workbook>,
  document.getElementById('root')
);

21、xterm.js:功能齊全的終端前端元件。用 TypeScript 編寫的前端元件,提供了完整的終端功能、支援滑鼠事件、豐富的 Unicode 支援。在眾多流行開源專案中都能看到它的身影,比如 VS Code、Hyper 和 Theia 等

22、WebGAL:無需開發基礎分分鐘就能學會所有語法,立馬開始創作自己的 Galgame。線上嘗試

23、bytemd:掘金社群開源的 Markdown 編輯器元件。基於 Svelte 構建的 Markdown 編輯器元件,功能齊全還可以通過外掛擴充套件功能,預設安全且相容 SSR,適用於 React、Vue 和 Angular 框架

// React
import { Editor, Viewer } from '@bytemd/react'
import gfm from '@bytemd/plugin-gfm'

const plugins = [
  gfm(),
  // Add more plugins here
]

const App = () => {
  const [value, setValue] = useState('')

  return (
    <Editor
      value={value}
      plugins={plugins}
      onChange={(v) => {
        setValue(v)
      }}
    />
  )
}

Kotlin 專案

24、PermissionX:解決 Android 執行時許可權的庫。該專案本是作者寫的一本書中的練手專案,後來經過不斷優化和功能迭代,已經可以真正做到簡化 Android 執行時許可權處理的工作,所以就有了我們現在看到的 PermissionX。時至今日它依舊在持續更新,沒有停下變得更好的腳步,或許這就是工匠精神的體現吧。中文檔案

PHP 專案

25、framework:簡約大方的論壇專案。這是一個用 PHP+Mithril 開發的免費、美觀、簡單、速度快的論壇系統

Python 專案

26、pyenv:簡單易用的 Python 版本管理工具。開發者有時候因為歷史遺留問題,需要維護依賴不同 Pyhton 版本的專案,這時就需要安裝和管理多個 Python 版本,這是一件十分痛苦的事情。而 pyenv 恰好完美地解決了這一痛點,它支援 global、local、shell 三種模式,開發者可以根據情況靈活地切換不同的 Python 版本,這一切僅需一條命令

安裝 pyenv:brew install pyenv
安裝 Python:pyenv install 3.10.4
切換版本:pyenv shell|local|global
shell:當前 shell
local:當前目錄
global:全域性

27、Archery:線上 SQL 稽核平臺。採用 Django+Bootstrap 框架開發而成,支援 MySQL、Oracle 等資料庫的 SQL 上線、備份、慢紀錄檔查詢等功能。線上嘗試

28、xxh:在 SSH 伺服器時帶上自己喜歡的 shell。你的 shell 裡是不是塞滿了快捷指令碼、工具和顏色,但在 SSH 遠端連線伺服器時,你就會失去這一切。xxh 可以把你最喜歡的 shell 帶到任何地方

Oh My Zsh:source xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh +if +q 
xonsh:xxh anyhost +s xonsh

29、Handright:模擬手寫體中文的 Python 庫。基於 PIL 開發實現的工具庫,能夠輸出手寫體中文的圖片,支援自定義背景圖

# coding: utf-8
from PIL import Image, ImageFont

from handright import Template, handwrite

text = "分享 GitHub 上有趣、入門級開源專案"
template = Template(
    background=Image.new(mode="1", size=(1024, 2048), color=1),
    font=ImageFont.truetype("path/to/my/font.ttf", size=100),
)
images = handwrite(text, template)
for im in images:
    assert isinstance(im, Image.Image)
    im.show()

30、OneForAll:功能強大的子域收集工具。具有強大的子域收集能力、支援子域驗證、速度快等特點的子域掃描工具

Ruby 專案

31、solidus:開源的簡約電商平臺。基於 Ruby on Rails 構建的電商平臺,介面清爽程式碼完全開源。線上嘗試

Rust 專案

32、mdBook:Rust 官方開源的 Markdown 電子書構建工具。類似 Gitbook 可以將 Markdown 檔案製作成線上書籍,簡單易用非常適合建立教學、課程材料、開源書籍等文稿

Swift 專案

33、TermiWatch:終端風格的 iWatch 手錶面

其它

34、opensource.guide:GitHub 官方的開源指南。為想學習如何建立和貢獻開源專案的個人、社群和公司提供的資源集合,中文

35、pinball:谷歌開源的彈珠檯遊戲。使用 Flutter 和 Firebase 平臺開發的彈珠檯遊戲,可執行在 Android、iOS、Windows、macOS、Linux 作業系統。線上試玩

36、A-Programmers-Guide-to-English:專為程式設計師編寫的英語學習指南。一位程式設計師提升英語水平的實踐經驗分享,還有相關訓練方法和用到的工具,點選檢視

37、code996:根據 git 的提交時間推斷工作強度的工具。通過分析 git 提交記錄,得出是否加班、工作強度的視覺化圖表的工具

38、Thanks-Mirror:國內公共倉庫映象的集合。該專案包含開發常用的庫、軟體、系統映象地址以及使用的方法

39、flutter_floatwing:Flutter 的 Android 浮動視窗外掛。該外掛能夠讓開發者使用 Flutter 完成浮動視窗的功能開發,同時無需任何原生 Android 開發的背景

40、wechat-report:自制微信聊天年度報告。教你如何生成和女朋友微信聊天記錄的年度報告專案

開源書籍

41、TCP-IP-NetworkNote:《TCP/IP 網路程式設計》學習筆記。除了筆記還包含書中的程式碼實現和課後習題回答

42、machine-learning-yearning-cn:《Machine Learning Yearning》中文版。《機器學習訓練祕籍》樣稿吳恩達著,線上閱讀

43、the-unix-workbench:《The Unix Workbench》該書面向剛接觸程式設計和類 Unix(如 macOS)和 Linux 作業系統的開發者,幫你快速上手命令列以及搞懂相關知識。線上閱讀

機器學習

44、WantWords:拯救詞窮的字典。由清華大學 NLP 實驗室開源,可以根據你的意思返回相關詞彙,有效解決詞窮、話到嘴邊說不出來的窘境。線上嘗試

45、mindsdb:用 SQL 開啟機器學習的資料庫。把機器學習引入 SQL 資料庫將模型作為虛擬表(AI-table),從而省去了資料準備、預處理等步驟,可以直接用 SQL 查詢時間序列、迴歸、分類預測的結果,實現簡化機器學習開發流程的效果

46、machine_learning_complete:全面的機器學習教學庫。一份包含 30 多個 Jupyter Notebook 的集合庫,內容涵蓋機器學習所需的 Python 基礎,資料操作、清洗、分析、視覺化常用的庫和工具,以及經典機器學習、NLP、計算機視覺等演演算法,一份面面俱到的機器學習入門教學

最後

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

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

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