《HelloGitHub》第 93 期

削微寒發表於2023-12-28

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

簡介

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

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

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


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

C 專案

1、rsync:Linux 遠端同步檔案的工具。該專案提供了一種快速、增量的檔案傳輸方式,即僅傳輸有變動的部分,可用於遠端同步和備份檔案。

C# 專案

2、Kavita:一款功能豐富的線上閱讀平臺。該專案可以在本地架設一個閱讀漫畫和電子書的 Web 平臺,在手機、平板、桌上型電腦等裝置上都有著出色的訪問體驗。

3、LittleBigMouse:Windows 多顯示器滑鼠平滑移動的工具。在 Windows 多顯示器、解析度不一致的情況下,滑鼠在螢幕間移動會出現跳躍,比如外接了一臺 4k 螢幕的和一臺 2k 的螢幕,從 4k 螢幕中間挪到 2k 螢幕,滑鼠就出現在底部了。該專案可以完美解決這個滑鼠跳躍的問題,實現 Windows 多顯示器滑鼠平滑移動。來自 @Wu Zheng 的分享

C++ 專案

4、Modern-CPP-Programming:現代 C++ 程式設計課程。該教程面向有一定程式設計基礎的人,內容涵蓋 C++ 程式設計的基礎知識、高階 C++ 語義和概念。

5、WechatExporter:微信聊天記錄遷移和備份工具。這是一個用於匯出微信聊天記錄的工具,支援以 HTML、PDF 或文字格式儲存聊天內容,適用於 Windows 和 macOS 系統。

Go 專案

6、mailpit:帶 API 的電子郵件測試工具。這是一個小型、快速、多平臺的電子郵件測試工具,它可以充當一個 SMTP 伺服器,自帶 Web 介面,支援類比電子郵件接收、切換不同裝置檢視郵件等功能,還提供了可用於自動整合測試的介面。

7、muffet:Go 寫的網站連結檢查工具。該專案透過多執行緒和遞迴的方式,檢查目標網站中所有頁面的連結。它使用簡單、速度快,支援 a、img、link、script 等多種標籤。

8、one-api:OpenAI 介面管理和分發系統。該專案整合了各種大模型,並統一轉化成了類似 OpenAI 介面的服務。它開箱即用、單檔案,支援負載均衡、令牌管理、兌換碼、使用者分組、檢視額度、邀請獎勵等功能,可用於自建 ChatGPT 服務。

9、zen:一款適用於 PC 的廣告攔截器。該專案是採用 Go 語言 Wails 框架寫的能夠遮蔽各種廣告的桌面工具。它的工作原理是設定一個代理,攔截所有應用的 HTTP 請求,從而阻止廣告和跟蹤行為的請求,支援 Windows、macOS 和 Linux 作業系統。

Java 專案

10、sensitive-word:用於過濾敏感詞的 Java 庫。該專案是基於 DFA 演算法實現的高效能敏感詞過濾工具,詞庫收錄了 6w+ 內容,支援自定義敏感詞、白名單、替換策略、數字常見形式的互換、忽略重複詞等功能。

11、SMS4J:Java 的簡訊服務聚合框架。該專案整合了國內眾多第三方簡訊服務,簡化了接入多個簡訊 SDK 的流程,僅透過修改配置檔案,就能輕鬆實現傳送簡訊的功能。來自 @ヽ米 飯 的分享

@RestController
@RequestMapping("/test/")
public class DemoController {

    // 測試傳送固定模板簡訊
    @RequestMapping("/")
    public void doLogin(String username, String password) {
         //阿里雲向此手機號傳送簡訊
        SmsFactory.createSmsBlend(SupplierType.ALIBABA).sendMessage("18888888888","123456");
        //華為簡訊向此手機號傳送簡訊
        SmsFactory.createSmsBlend(SupplierType.HUAWEI).sendMessage("16666666666","000000");
    }
}

JavaScript 專案

12、daedalOS:跑在瀏覽器裡的桌面環境。該專案是用 JavaScript 寫的執行在瀏覽器中的仿 Windows 桌面作業系統,支援開始選單、動態桌布、命令列終端、影片播放器、3D 彈球、Markdown 檢視器、瀏覽器等功能。

13、miniPaint:免費的線上圖片編輯器。該專案無需安裝、可直接在瀏覽器中執行,支援建立/編輯影像、圖層、濾鏡、馬賽克、繪圖工具等功能。

14、multipleWindow3dScene:炫酷的前端量子糾纏效果。量子糾纏是一種量子力學現象,即兩個或多個量子不論相距多遠都存在一種關聯。該專案透過使用 Three.js 和 localStorage 跨多個瀏覽器視窗,展示了這一量子力學現象。來自 @YJLTF 的分享

15、omnivore:一款免費、多端的稍後閱讀工具。該專案採用 TypeScript + Next.js 構建而成,支援儲存文章、電子郵件、文件和同步 Obsidian 等個人知識管理系統的內容,以便日後閱讀。而且還提供了 iOS、Android 客戶端和瀏覽器外掛,方便隨時隨地閱讀。

16、vue-naive-admin:一款極簡風格的 Vue 管理後臺。這是一個開源、免費、可商用的後臺管理模板,基於 Vue3、Vite4、Pinia、Unocss 和 Naive UI 等前端最新技術棧。它簡潔、輕量、風格清新,上手成本低,適合中小型專案或者個人專案。來自 @Ronnie Zhang 的分享

Kotlin 專案

17、Calendar:適用於 Android 的高度可定製的日曆庫。這是一個用於開發 Android 日曆應用的庫,內含示例應用。提供了周或月模式顯示、邊界日期、水平或垂直滾動等功能,可以隨心所欲地設計日曆。

PHP 專案

18、BookStack:一個簡單、開箱即用的 wiki 平臺。該專案是基於 PHP 和 Laravel 的 wiki 平臺,擁有搜尋、Markdown 編輯器、繪圖、多語言、身份驗證等功能。

Python 專案

19、django-tailwind:Django 整合 Tailwind CSS 的庫。該專案可以讓你在 Django 專案中輕鬆地使用 Tailwind CSS 框架,內含 Tailwind CSS 官方的排版、表單、line-clamp 等外掛。

20、frigate:一款圍繞實時 AI 物件檢測構建的開源 NVR。該專案基於 OpenCV 和 Tensorflow 實現在本地為 IP Camera 提供實時目標檢測和安全報警等功能,還支援根據設定的規則,保留檢測到物體的影片。

21、sqlglot:一個非常全面的 SQL 解析器。該專案是用 Python 寫的 SQL 解析器、轉譯器和最佳化器,它可以格式化 SQL 以及支援在 20 種不同方言和 SQL 之間進行轉化,可用來自定義解析器、分析查詢,用程式設計方式構建 SQL。

import sqlglot

# SQL 轉 Spark
sql = """WITH baz AS (SELECT a, c FROM foo WHERE a = 1) SELECT f.a, b.b, baz.c, CAST("b"."a" AS REAL) d FROM foo f JOIN bar b ON f.a = b.a LEFT JOIN baz ON f.a = baz.a"""
print(transpile(sql, write="spark", identify=True, pretty=True)[0])

22、tablib:輕鬆處理表格資料集的 Python 庫。該專案能夠將不同格式的表格資料集,轉化成統一的 Dataset 物件。它提供了動態列、標籤、過濾等功能,支援 csv、df、json、yaml、xls 等格式的資料。

import tablib

data = tablib.Dataset(headers=['First Name', 'Last Name', 'Age'])

for i in [('Kenneth', 'Reitz', 22), ('Bessie', 'Monke', 21)]:
    data.append(i)

# 將資料輸出成 json 格式
print(data.export('json'))
# [{"Last Name": "Reitz", "First Name": "Kenneth", "Age": 22}, {"Last Name": "Monke", "First Name": "Bessie", "Age": 21}]

# df 物件
data.export('df')
#   First Name Last Name  Age
# 0    Kenneth     Reitz   22
# 1     Bessie     Monke   21

23、talebook:一款簡單好用的線上個人書庫。該專案是基於 Calibre 的個人圖書管理系統,後端是 Python 的 Tornado Web 框架,前端採用 Vue.js 構建。它不僅擁有美觀的介面而且安裝簡單,支援線上閱讀、匯入書籍、推送到 Kindle、私人模式等功能。

Rust 專案

24、sshx:基於 Web 的安全終端協作工具。該專案只需一條命令,即可與多人共享終端。支援實時多人協作、多視窗、遠端游標、線上聊天、自動重連等功能,可用於教學和遠端除錯。來自 @獵隼丶止戈reNo7 的分享

25、tailspin:一款實用的日誌高亮命令列工具。該專案是 Rust 寫的命令列檢視日誌的工具,它無需配置開箱即用,透過高亮的形式,突出顯示數字、日期、IP、URL 等內容,讓重要的資訊一目瞭然。

26、Weylus:將平板用作計算機上的輸入板/觸控式螢幕。透過該專案可以將平板裝置,作為電腦的外接螢幕、觸控板、鍵盤,適用於 Windows、Linux 和 macOS 系統。

Swift 專案

27、visionOS_30Days:挑戰 30 天上手蘋果 visionOS 開發。visionOS 是執行在蘋果的混合實境頭戴式裝置 Apple Vision Pro 上的作業系統,該專案提供了 30 個 visionOS 開發的示例程式碼。

其它

28、dbgate:(no)SQL 資料庫桌面管理工具。該專案支援包括 MySQL、PostgreSQL、SQL Server、MongoDB、SQLite、Redis 等多種資料庫,適用於 Windows、Linux、macOS 系統。

29、Detect-It-Easy:用於檢視檔案型別的工具。該專案可以快速檢測二進位制檔案的檔案型別、體系結構和編譯器資訊,支援識別多種檔案格式,有助於進行逆向工程和安全分析,適用於 Windows、Linux、macOS 系統。

30、github-chinese:GitHub 網站漢化外掛。該專案可以將 GitHub 網站的選單欄、標題、按鈕等公共元件,自動翻譯成中文,適合剛接觸 GitHub 的小白使用。來自 @wuyuncheng-26 的分享

31、HumanSystemOptimization:人體系統調優不完全指南。這是一份幫助改善人體健康狀態的指南,篇幅較長。儘量做到保持睡眠時長與質量、不要吸菸、每天做點運動、減少糖分的攝入,就能擁有不錯的健康狀態。

32、wondershaper:Linux 限制網路頻寬的工具。該專案透過使用 iproute 的 tc 命令,實現了對 Linux 網路頻寬限速的功能,支援多網路卡、限制最大上傳/下載速率。

開源書籍

33、Node.js-Troubleshooting-Guide:Node.js 應用故障排查手冊。該手冊主要是幫助 Node.js 開發者,應對開發和線上部署中遇到的問題,比如定位故障、壓測和效能調優等。

34、pml-book:《機率機器學習》。該專案包含凱文·墨菲的三本書籍,分別為《機器學習:機率視角》、《機率機器學習:簡介》、《機率機器學習:高階》,內容涵蓋了基礎理論和前沿研究,圖文並茂並配有示例和練習。來自 @Xuefeng Xu 的分享

機器學習

35、backgroundremover:一條命令自動移除影像背景。該專案透過 AI 技術,可自動移除圖片和影片中的背景。

36、machine-learning-roadmap:機器學習路線圖。這份機器學習思維導圖,包含了機器學習相關的問題、學習步驟、工具、底層數學知識、教程資源等,為如何學習機器學習指出方向。

37、PokemonRedExperiments:透過強化學習訓練 AI 玩 Pokemon。該專案使用 Python + RL 從零訓練了一個玩「寶可夢紅」的 AI,同時作者還提供了配套的講解影片,以及如何在本地執行和自定義訓練的教程,快來上手試試吧!來自 @老荀 的分享

38、supervision:計算機視覺 AI 工具庫。該專案簡化了物件檢測、分類、標註、跟蹤等計算機視覺的開發流程。開發者僅需載入資料集和模型,就能輕鬆實現對影像和影片進行檢測、統計某區域的被檢測數量等操作。

import cv2
import supervision as sv
from ultralytics import YOLO

image = cv2.imread(...)
model = YOLO('yolov8s.pt')
result = model(image)[0]
detections = sv.Detections.from_ultralytics(result)

print(len(detections))
# 5

最後

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

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

那麼,下個月 28 號 不見不散,完結撒花🎉

相關文章