《HelloGitHub》第 69 期
- 2021 年 12 月 28 日
- 筆記
- HelloGitHub
興趣是最好的老師,HelloGitHub 讓你對編程感興趣!

簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。
這裡有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift…讓你在短時間內感受到開源的魅力,對編程產生興趣!
以下為本期內容|每個月 28 號更新
C 項目
1、quadsort:一種比快速排序快,穩定的歸併排序算法。項目包含原理講解、C 語言實現、性能對比和排序過程

2、minilisp:用 1000 行 C 語言寫的 Lisp 解釋器。實現了整數、符號、局部變量、條件語句、宏和垃圾回收等功能,為了讓讀者更好地理解項目,代碼中包含了豐富的注釋
(println 3) ; prints "3"
(+ 1 2 3) ; -> 6
(define a (+ 1 2))
(+ a a) ; -> 6
3、mpv:功能強大、免費開源、支持多平台的極簡播放器。底層採用了 MPlayer、mplayer2 和 FFmpeg 等開源項目,支持多種音視頻格式、高清視頻、GPU 解碼、自定義等功能,追求極簡的命令行啟動+快捷鍵操作方式,讓它成為了技術愛好者的首選視頻播放器

C# 項目
4、jynew:採用 Unity 重製的《金庸群俠傳》3D 版

C++ 項目
5、cutter:一款免費開源的逆向工程平台。採用 Rizin 作為核心引擎並集成了 Ghidra 反編譯器,它界面簡潔功能強大,深受逆向工程師們的喜愛
- 支持多種語言和主題
- 二進制搜索
- 十六進制編輯器
- Python 腳本和插件
- 支持 Linux、macOS、Windows

6、bpftrace:Linux 高級追蹤工具和語言。該工具基於 eBPF 和 BBC 實現了通過探針機制採集內核和程序運行的信息,然後用圖表等方式將信息展示出來,幫助開發者找到隱藏較深的 Bug、安全問題和性能瓶頸

7、Cataclysm-DDA:《大災變:黑暗之日》是一款以世界末日為背景的生存遊戲。遊戲中沒有任何任務,唯一的目標就是活下去。玩家可以通過尋找食物、裝備等資源建造避難所,還支持車輛改裝、製作物品等特色機制,支持 Windows、Linux、macOS、Android 系統。下載地址

CSS 項目
8、heti:專為中文內容展示設計的排版樣式。它會讓你的中文網站變得好看
- 貼合網格的排版
- 全標籤樣式美化
- 預置多種排版樣式
- 簡/繁體中文支持
- 移動端支持

Go 項目
9、k9s:監控和管理 K8s 集群的命令行工具。它安裝簡單功能齊全,命令行交互的操作方式可以輕鬆地解決日常問題

10、kind:使用 Docker 容器作為節點,在本地快速運行起 Kubernetes 集群的工具。通過該工具可以快速創建媲美 k8s 原生的本地環境,而且佔用資源相對較少啟動速度快。多用於本地開發和測試 k8s 原生組件,不能用於線上環境

11、air:有代碼變動就會自動重啟服務的 Go 工具。在開發 Go Web 項目時,每次修改後都需要手動編譯、重啟服務,這個工具會在文件和目錄發生變動後,自動編譯並重啟服務,大大提高了開發效率

12、juicefs:高性能 POSIX 共享文件系統。像使用本地存儲一樣高效使用海量雲端存儲,可同時被多台主機同時掛載讀寫

13、sniffer:用於查看進程和連接的流量情況的命令行工具。界面簡潔美觀,支持進程、Socket 等不同視角查看流量數據

Java 項目
14、AndResGuard:混淆壓縮 APK 的工具。原理是採用資源混淆的方式,不涉及編譯過程僅通過變短資源路徑實現壓縮和混淆,使用方法簡單只需傳入一個打包好的 APK 文件
15、datahub:基於 Java 開發的元數據治理平台,可接入 Hive、Kafka、ES、MySQL 等數據源。隨着公司業務的發展,數據的複雜度會呈指數倍增長,通過文檔和口口相傳的方式管理數據關係的方式終將被淘汰。如果你體驗過到處問數據庫的字段含義、沒捋清某個字段導致線上事故、分析數據毫無頭緒等情況。這個時候就需要元數據治理平台,它提供瀏覽、搜索和管理每個字段的含義、關係、來源等信息,通過元數據的方式更好的治理和挖掘數據的價值。在線體驗

16、termux-app:運行在 Android 上的開源終端模擬器。提供了 Linux 環境和 Shell 通過自帶的包管理器,能夠在手機上安裝和運行 ssh、Python、gcc、htop、git、vim 等工具

17、questdb:高性能的開源時序數據庫。該項目主要採用 Java 代碼實現,它通過面向列的存儲引擎、並行執行、SIMD 指令等技術實現了出色的寫入和查詢性能,多用於物聯網、機器學習、金融等場景。還提供了 SQL 查詢方式以及交互式的 Web 操作平台,一款值得期待的開源數據庫

18、addax:支持多種異構數據源離線同步工具。服務於大數據的 ETL 工具,可快速實現 MySQL、HDFS、Hive、HBase 等數據源之間的數據同步,主要用於離線採集各類數據到數據倉庫或者大數據平台

JavaScript 項目
19、arco-design:基於 ArcoDesign 的 React/Vue UI 組件庫。包含 60 多個開箱即用的高質量組件,還提供了可視化的樣式配置平台,可用於快速構建企業級管理後台
import React from 'react';
import ReactDOM from 'react-dom';
import { Button } from '@arco-design/web-react';
import '@arco-design/web-react/dist/css/arco.css';
function App() {
return (
<Button type='secondary'>
Hello World
</Button>
);
}
ReactDOM.render(<App ></App>, document.getElementById('app'));

20、context-note:帶上下文的網頁筆記瀏覽器插件。大多數時候我們使用書籤來標記網站鏈接,但在一些特定的場景中比如閱讀文章和瀏覽信息時,就需要對特定的句子及其上下文進行標記。這個項目提取了信息的內容和位置,有上下文容易回顧,一鍵跳轉方便溯源

21、S2:高性能多維交叉分析表格工具。提供 KPI 趨勢表、佔比表、對比表等多種表格樣式,開箱即用上手簡單擁有詳細的文檔。通過按需渲染和虛擬滾動等方式,實現在百萬級數據量秒級渲染、滾動不卡頓。在線體驗

22、prisma:適用於 Node.js 和 TypeScript 的 ORM。支持主流數據庫可用於開發 REST API、GraphQL API、gRPC API 等任何需要連接數據庫的程序,項目還包括了數據遷移工具和管理數據的 GUI 工具
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// A `main` function so that you can use async/await
async function main() {
const allUsers = await prisma.user.findMany({
include: { posts: true },
})
// use `console.dir` to print nested objects
console.dir(allUsers, { depth: null })
}
main()
.catch((e) => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})

Objective-C 項目
23、vienna-rss:適用於 macOS 的免費 RSS 訂閱工具

PHP 項目
24、laravel-tips:Laravel 編碼技巧集合。中文
25、PHPWord:提供了讀/寫多種文檔文件格式的 PHP 庫。支持 Microsoft Office、富文本(RTF)等文檔格式
<?php
require_once 'bootstrap.php';
// 新建文檔
$phpWord = new \PhpOffice\PhpWord\PhpWord();
// Adding an empty Section to the document...
$section = $phpWord->addSection();
// Adding Text element to the Section having font styled by default...
$section->addText(
'"Learn from yesterday, live for today, hope for tomorrow. '
. 'The important thing is not to stop questioning." '
. '(Albert Einstein)'
);
Python 項目
26、orjson:更快更強的 Python JSON 庫。支持比如日期、numpy 數組等豐富的數據類型,而且速度更快
>>> import orjson, datetime, numpy
>>> data = {
"type": "job",
"created_at": datetime.datetime(1970, 1, 1),
"status": "🆗",
"payload": numpy.array([[1, 2], [3, 4]]),
}
>>> orjson.dumps(data, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)
b'{"type":"job","created_at":"1970-01-01T00:00:00+00:00","status":"\xf0\x9f\x86\x97","payload":[[1,2],[3,4]]}'
>>> orjson.loads(_)
{'type': 'job', 'created_at': '1970-01-01T00:00:00+00:00', 'status': '🆗', 'payload': [[1, 2], [3, 4]]}
27、tiler:將圖片轉化成各種較小圖塊拼接成的圖像工具。馬賽克風格的圖片轉化工具,支持自定義拼接圖案和符號。工具實用方便、代碼簡單易懂,適合對圖像感興趣的小夥伴學習和上手

28、rumps:簡單的 macOS 狀態欄 Python 庫
import rumps
class AwesomeStatusBarApp(rumps.App):
@rumps.clicked("Preferences")
def prefs(self, _):
rumps.alert("jk! no preferences available!")
@rumps.clicked("Silly button")
def onoff(self, sender):
sender.state = not sender.state
@rumps.clicked("Say hi")
def sayhi(self, _):
rumps.notification("Awesome title", "amazing subtitle", "hi!!1")
if __name__ == "__main__":
AwesomeStatusBarApp("Awesome App").run()

其它
29、Simula:Linux 上的 VR 窗口管理工具。通過該工具+VR 設備可輕鬆實現「目光所及皆桌面」的效果,它基於 Godot 開發安裝簡單實用方便,支持 HTC Vive Pro、Valve Index 等 VR 設備

30、penpot:開源的設計和原型在線平台。它不僅完全免費還提供 Docker 自建和在線使用,而且支持中文和團隊共享。缺點是平台提供的組件太少了,第一次上手需要自己從形狀開始搞,不過可以自定義組件做到一勞永逸。如果你在尋找開源、免費的原型設計平台,不妨試試它。在線嘗試

31、design-resources-for-developers:設計資源集合。項目包含了圖片、網站模版、CSS 框架、UI 等資源

32、koreader:電子墨水(E-Ink)設備的開源閱讀軟件。適用於 Kindle、Kobo、PocketBook、Android 和 Linux 等設備,擁有設置字體、行距、文本樣式等功能,最厲害的是適應水墨屏設備的 PDF 文件排版優化功能,極大的提高了 PDF 文件在 Kindle 等設備的閱讀體驗

33、tabby:高顏值的終端工具。功能強大高度可配置,適用於 Windows、macOS、Linux 操作系統
- 支持自定義主題和配色
- 可配置快捷鍵和組合鍵
- 集成了 SSH、Telnet 等連接
- 分割窗口
- 等等

34、doomcaptcha:毀滅戰士射擊遊戲形式的驗證碼。在線嘗試

35、wsa_pacman:輕鬆地在 Windows11 安裝 Android 應用的桌面工具。使用該工具可以實現雙擊安裝 Android 應用,基於系統自帶的 WSA 實現,不需要安裝第三方模擬器

36、appflowy:開源筆記工具。基於 Flutter 開發適用於各種操作系統,目標是成為 Notion 的代替品

開源書籍
37、school-of-sre:領英開源的成為 SRE(網站可靠性工程師)的入門級教程。內容涵蓋 Web、Linux、Git、計算機網絡、數據庫、安全等方面

38、everything-curl:《關於 curl 的所有東西》。由 curl 項目發起者撰寫的書,內容包括 curl 入門、開源、源碼、項目等方面。在線閱讀

機器學習
39、ML-For-Beginners:微軟開源的入門級機器學習教程

40、spleeter:基於 Tensorflow 實現的音軌分離工具。可以用於提取音樂中的人聲、鼓、鋼琴等樂器
# 用 conda 安裝依賴
conda install -c conda-forge ffmpeg libsndfile
# 用 pip 安裝 spleeter
pip install spleeter
# 提取人聲
spleeter separate -p spleeter:2stems -o output 音頻.mp3
最後
如果你發現了 GitHub 上有趣的項目,就分享給大傢伙吧。
以上就是本期的所有內容了,往期內容點擊閱讀
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享,您的支持將讓 HelloGitHub 變得更好!❤️


