《HelloGitHub》第 98 期

削微寒發表於2024-05-28

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

簡介

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

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

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


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

C 專案

1、cmus:小巧的命令列音樂播放器。這是一個專為類 Unix 系統設計的輕量級命令列音樂播放器,可以播放本地的音樂檔案。它簡單易用、佔用資源少、啟動速度快,支援多種音訊格式。

2、Remotery:輕量級的遠端實時 CPU/GPU 分析器。該專案是用於監控 CPU 和 GPU 上多執行緒活動的工具。它提供了一個 C 檔案,可輕鬆整合到專案中,並配備了一個實時監控 Web 介面,可透過瀏覽器遠端觀察和分析程式的效能。適用於監控遊戲的實時執行效能和分析移動端應用的效能等場景。

C# 專案

3、RunCat_for_windows:在 Windows 工作列飛奔的“小貓”。這是一個用 C# 寫的小工具,它會在 Windows 工作列顯示一隻奔跑的小貓動畫,CPU 使用率越高它跑得越快。

C++ 專案

4、caesium-image-compressor:免費的圖片壓縮軟體。這是一款用 C++ 編寫的圖片壓縮工具,它擁有簡潔的中文介面,支援 JPG、PNG 和 WebP 格式的無失真壓縮,同時配備了實時預覽和批次處理的功能。此外,還提供了 Windows、Linux 和 macOS 客戶端,以及無需安裝的 Web 版本。

5、concurrentqueue:C++ 的高效能無鎖併發佇列。該專案是用 C++11 編寫的快速、無鎖、併發佇列,支援多個執行緒同時進行生產者和消費者操作。它具有無需使用鎖和單標頭檔案的特點,適用於需要高效能併發處理的各種場景。

#include "concurrentqueue.h"

moodycamel::ConcurrentQueue<int> q;
q.enqueue(25);

int item;
bool found = q.try_dequeue(item);
assert(found && item == 25);

6、input-overlay:顯示使用者操作輸入的 OBS 直播外掛。該專案是用來在直播中顯示鍵盤按鍵、滑鼠移動和遊戲手柄按鈕的外掛,適用於 Windows 和 Linux 上的 OBS 直播軟體,可用於遊戲直播和教學演示等場景。

Go 專案

7、fscan:開源的內網安全掃描工具。該專案是用 Go 語言開發的內網掃描工具,提供了一鍵自動化全方位的漏洞掃描。它使用方便、功能全面,支援埠掃描、常見的伺服器爆破、Web 應用漏洞掃描、NetBIOS 嗅探等功能。

8、go-humanize:讓數字和時間更容易理解的 Go 語言庫。這是一個提供人性化數字和時間的 Go 語言庫,它透過提供格式化函式,幫助開發者將大小和時間等數字轉化為更易於人類理解的形式,比如檔案大小、相對時間、逗號分隔的數字、序數詞等。來自 @DeShuiYu 的分享

fmt.Printf("That file is %s.", humanize.Bytes(82854982)) // That file is 83 MB.
fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance)) // This was touched 7 hours ago.

9、mactop:專為蘋果晶片打造的 Mac 效能監控工具。該專案用不到 1k 行的 Go 程式碼,實現了一個類似 top 命令的工具。它可以實時顯示 Apple M 系列晶片的效能指標,包括 CPU、GPU 使用率、記憶體、網路和硬碟等資訊。

10、micro:現代化的終端文字編輯器。這個專案是用 Go 寫的基於終端的文字編輯器,可作為 Nano 的替代品。它下載即用、無需配置、跨平臺,支援多游標編輯、語法高亮、滑鼠、外掛擴充套件等功能,特別適合在 SSH 遠端連線伺服器時進行文字編輯工作。

11、superfile:非常漂亮的終端檔案管理器。這是一個現代終端檔案管理器,為命令列檔案操作提供了一個直觀且漂亮的介面。它預設採用 Vim 風格的快捷鍵操作,還支援外掛和主題自定義。

Java 專案

12、Acode:Android 手機上的程式碼編輯器。這是一款專為 Android 裝置設計的程式碼編輯工具,它是輕量級的 Web IDE,具有即時預覽、控制檯和豐富的外掛等特點,支援 HTML、Python、Java、JavaScript 等多種程式語言。來自 @蝦華 的分享

13、blossom:私有部署的雲端雙鏈筆記軟體。這是一個支援私有部署的雲端儲存雙鏈筆記軟體,可以將你的所有筆記、圖片、個人計劃安排儲存在私有伺服器上,並實現跨裝置的實時同步。它提供 Markdown 編輯、雙鏈筆記、全量備份、網頁轉換、多賬號許可權和統計等功能,相容 Windows、macOS 和網頁客戶端。來自 @獵隼丶止戈reNo7 的分享

14、JSqlParser:解析 SQL 語句的 Java 庫。該專案可以讀取 SQL 語句,並分解成結構化的 Java 物件,實現用 Java 程式碼解析或動態生成 SQL 語句,支援 SQL 標準和主流的關係型資料庫。

String sqlStr = "select 1 from dual where a=b";

PlainSelect select = (PlainSelect) CCJSqlParserUtil.parse(sqlStr);

SelectItem selectItem =
        select.getSelectItems().get(0);
Assertions.assertEquals(
        new LongValue(1)
        , selectItem.getExpression());

Table table = (Table) select.getFromItem();
Assertions.assertEquals("dual", table.getName());

EqualsTo equalsTo = (EqualsTo) select.getWhere();
Column a = (Column) equalsTo.getLeftExpression();
Column b = (Column) equalsTo.getRightExpression();
Assertions.assertEquals("a", a.getColumnName());
Assertions.assertEquals("b", b.getColumnName());
}

15、odc:企業級資料庫協同開發平臺。該專案是提供資料庫協同開發和資料管理的平臺,專為提升 SQL 開發效率而設計。它基於 Spring Boot 和 Electron 構建,提供了 Web 和桌面客戶端,支援 SQL 規範檢查、變更回滾、資料生命週期管理、資料脫敏和操作審計等功能,相容 OceanBase、Oracle、MySQL 和 Doris 等多種資料來源。來自 @XiaoYangGzeyP 的分享

JavaScript 專案

16、papermark:開源的檔案分享平臺。該專案作為 DocSend 服務的開源替代方案,提供了自託管、簡單易用的文件分享功能。它採用 Next.js+Tailwind CSS 構建,使用者僅需上傳文件,就能獲得一個可線上訪問檔案內容的地址,並支援自定義域名和訪問資料追蹤等功能。

17、plane:開源的專案管理和問題跟蹤平臺。該專案是開源的專案管理系統,旨在簡化團隊的專案管理流程。它易於使用、可自託管,支援問題跟蹤、週期管理、專案分解和分析統計等功能,可作為 JIRA 的替代品。

18、swr:用於資料請求的 React Hooks 庫。該專案是幫助開發者簡化資料請求邏輯的 React 庫,支援自動處理資料的快取、重驗證、錯誤重試等多種功能,比如當使用者重新點選/回到頁面時,自動請求介面獲取最新資料。

import useSWR from 'swr'
 
function Profile() {
  const { data, error, isLoading } = useSWR('/api/user', fetcher)
 
  if (error) return <div>failed to load</div>
  if (isLoading) return <div>loading...</div>
  return <div>hello {data.name}!</div>
}

19、undraw-ui:基於 Vue 3 的評論元件。這是一個基於 Vue 3 的 UI 元件,提供了評論、內容摺疊、回覆、表情等功能,以及目錄、搜尋等元件。來自 @Mr.King 的分享

20、uppy:易於整合的 JavaScript 檔案上傳元件。這是一個輕量級的 JavaScript 檔案上傳元件,它提供了一個美觀的使用者介面,支援從多個源匯入檔案、斷點續傳、國際化,以及預覽、編輯和多檔案上傳的功能。

import React, { useEffect } from 'react'
import Uppy from '@uppy/core'
import Webcam from '@uppy/webcam'
import { Dashboard } from '@uppy/react'

const uppy = new Uppy().use(Webcam)

function Component () {
  return <Dashboard uppy={uppy} plugins={['Webcam']} />
}

Kotlin 專案

21、Lemuroid:Android 裝置上的全能遊戲模擬器。這款基於 Libretro 的多合一遊戲模擬器,能夠讓你在 Android 裝置上玩各種懷舊遊戲。它提供了即時存檔、本地多人遊戲和自定義按鍵等功能,支援模擬 NES、GBA、3DS、PSP 等多種遊戲機。

Python 專案

22、buku:強大的瀏覽器書籤管理工具。這是一款開源的書籤命令列管理工具,它輕量、隱私安全且易於使用,支援從主流瀏覽器匯入書籤、自動獲取書籤資訊、跨平臺同步和強大的搜尋功能。

23、flagsmith:輕鬆管理功能開關和配置的平臺。這是一個開源、功能齊全的特徵標誌(Feature flag)和遠端配置平臺,專為中小型團隊設計。它是基於 Django REST framework 構建的 Web 應用,用於管理應用功能的開關和遠端配置,支援 A/B 測試、多變數測試和組織管理等功能,適用於逐步推出新功能、進行市場測試、環境管理等場景。

24、marimo:創新的響應式 Python 筆記本。該專案是專為 Python 設計的響應式筆記本(notebook),即在與 UI 互動時自動執行並更新所依賴的程式碼單元格,從而保證程式碼和輸出的一致性。它以純 Python 檔案的形式儲存,便於管理和執行,支援作為指令碼執行或部署為可互動的 Web 應用。

25、umap:高維資料降維的 Python 庫。該專案是用於將高維資料對映到低維空間的 Python 庫,幫助研究人員理解複雜資料集。與 t-SNE 相比,它在保持資料全域性結構方面更加出色,能夠高效地執行高維到低維的對映,適用於資料視覺化、特徵提取和聚類分析等多種場景。來自 @DeShuiYu 的分享

import umap
from sklearn.datasets import load_digits

digits = load_digits()

mapper = umap.UMAP().fit(digits.data)
umap.plot(mapper, labels=digits.target)

26、Windrecorder:你的個人螢幕記憶搜尋工具。該專案是專為 Windows 設計的螢幕記錄工具,並提供搜尋和回放功能。它會持續錄製螢幕內容,同時保證資料安全(不上傳、不聯網),利用 OCR 和圖片識別技術,讓使用者可以輕鬆搜尋和回看螢幕活動歷史。

Rust 專案

27、bacon:後臺執行的 Rust 程式碼檢查工具。這是一個專為 Rust 語言設計的後臺程式碼檢查工具,它可以在後臺執行,並即時地向開發者提供關於 Rust 程式碼的警告、錯誤和測試失敗的反饋,讓開發者專注於編寫程式碼,而不是頻繁地手動執行檢查命令。來自 @DeShuiYu 的分享

28、bandwhich:檢視頻寬使用情況的命令列工具。這是一個開源的命令列網路頻寬監控工具,它可以實時顯示網路使用情況,包括程序、連線和遠端地址等資訊。

29、rust-by-practice:Rust 語言實戰。該專案提供了大量的 Rust 實戰練習,來幫助 Rust 新手學習和上手 Rust 語言。這裡除了有大量的練習題和答案,還支援線上編輯和執行 Rust 程式碼。

Swift 專案

30、MacSymbolicator:符號化 macOS/iOS 崩潰報告的工具。這是一個簡單的 Mac 應用,它能夠將 macOS/iOS 崩潰報告中的十六進位制地址,轉換為原始碼中的函式和行號,幫助開發者分析應用的崩潰原因,支援 crash 和 ips 格式的崩潰報告。

其它

31、cloudflare_temp_email:免費搭建臨時郵箱服務。該專案透過 CloudFlare 的免費服務,提供一個功能完備的臨時郵箱服務,支援收發郵件、訪問密碼、自動回覆、檢視附件等功能。來自 @Dream Hunter 的分享

32、docs-linux-kernel-labs-zh-cn:Linux 核心實驗。該專案是布加勒斯特理工大學的《Linux 核心教學》課程的中文翻譯版,適合對 Linux 核心感興趣的程式設計師學習。課程內容分為課程和實驗兩部分,其中實驗是在基於 QEMU 的虛擬機器中進行,親身體驗 Linux 核心的開發、構建、部署及執行過程。

33、LapisCV:開箱即用的簡歷模板。該專案提供了適用於 Obsidian 和 Typora 的簡歷模板,它基於 Markdown 格式、編輯方便、所見即所得,設計簡潔且正式,藉助編輯器可直接匯出 PDF 格式的簡歷。

34、OV-Watch:低成本的開源智慧手錶。這是一個製作成本僅需 80 元的智慧手錶專案,它不僅提供了基本的手錶功能,還支援睡眠模式、藍芽、計步、卡包、指南針和心率測量等功能。

35、phonedata:手機號碼歸屬地資訊庫。該專案整理了超過 40 多萬條中國手機號段和歸屬地資訊,資料均來自網上的公開資料。

開源書籍

36、LLMBook-zh.github.io:《大語言模型》。這是一本為想入門大模型技術的程式設計師/學生準備的開源書籍,內容不僅涵蓋了大模型的基礎原理和關鍵技術,還提供了配套的程式碼工具庫和大模型,幫助讀者快速入門並實踐。

37、raytracing.github.io:《Ray Tracing in One Weekend》系列書籍。這是一套光線追蹤技術的入門書籍,教你用 C++ 實現一個光線追蹤器。光線追蹤(Ray Tracing)是一種計算機圖形學中的渲染技術,能夠透過模擬光線在虛擬場景中的傳播,生成出栩栩如生的真實感影像。

機器學習

38、facefusion:開源的 AI 換臉和增強工具。這是一款功能強大的人臉交換和增強工具,支援將圖片/影片中的人臉替換成另一個人的臉、改善人臉和背景清晰度等功能,還提供了友好的 Web 介面(WebUI)和低門檻的 CPU 處理選項。

39、litellm:簡化大模型 API 呼叫的工具。該專案能夠將各種 AI 大模型和服務的介面,統一轉換成 OpenAI 的格式,簡化了在不同 AI 服務/大模型切換和管理的工作。此外,它還支援設定預算、限制請求頻率、管理 API Key 和配置 OpenAI 代理伺服器等功能。

from litellm import completion
import os

## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["COHERE_API_KEY"] = "your-cohere-key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)

# cohere call
response = completion(model="command-nightly", messages=messages)
print(response)

40、llama3-from-scratch:從頭開始實現 Llama 3 的教程。該專案透過逐層構建 Llama 3 的方式,幫助人們深入理解 LLM 是如何工作的。作者使用 PyTorch 框架,實現了載入模型權重、文字的分詞處理、模型配置以及逐層實現 Transformer 模型中的關鍵元件。

最後

感謝參與分​享開源專案的小夥伴們,歡迎更多的開源愛好者來 HelloGitHub 自薦/推薦開源專案。如果你發現了 GitHub 上有趣的專案,就點選這裡分享給大傢伙吧!

本期有你感興趣的開源專案嗎?如果有的話就留言告訴我吧~如果還沒看過癮,可以點選閱讀往期內容。

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

相關文章