《HelloGitHub》第 69 期

削微寒發表於2021-12-28

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

簡介

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

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

這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 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 變得更好!❤️

相關文章