《HelloGitHub》第 91 期

削微寒發表於2023-10-27

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

簡介

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

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

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


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

C 專案

1、barrier:一套鍵盤滑鼠控制多臺電腦的工具。該專案透過模擬 KVM 切換器功能,實現多臺電腦、不同作業系統,共享一套鍵盤滑鼠,讓工作流程更加高效。它安裝簡單使用方便,無需複雜的配置,支援自定義熱鍵、多種作業系統、視覺化操作介面等功能。來自 @loongmonkey 的分享

2、clumsy:讓 Windows 網路變差的工具。該專案是基於 WinDivert 實現的手動控制 Windows 網路情況的工具,它無需安裝下載即用,可用於模擬網路延遲、節流、丟包等。

3、vlc:自由、免費、跨平臺的影片播放器。這是一款可播放幾乎所有音影片格式的檔案和各種流媒體協議的播放器,它完全免費、沒有廣告,無需額外安裝編解碼器,支援播放檔案、光碟、攝像頭和流媒體的內容,可執行在 Windows、Linux、macOS、Android 和 iOS 等平臺。來自 @Xuefeng Xu 的分享

C# 專案

4、Borderless-Gaming:通用的遊戲全屏工具。一款專門為遊戲開發的視窗最佳化工具,能夠將原本不支援全屏的遊戲全屏化。它介面簡潔、使用方便,支援一鍵全屏和恢復,適用於 Windows 系統。

5、Dependencies:檢視 DLL 依賴關係的工具。DLL 檔案即動態連結庫檔案是一種共享庫檔案,Windows 系統上的可執行檔案(.exe) 一般包含多個 .dll 字尾的檔案。該專案是 Windows 上檢視 DLL 檔案依賴樹的工具,能夠幫助解決因依賴缺失,導致執行 .exe 程式失敗的問題。來自 @孤膽槍手 的分享

6、WinMemoryCleaner:一款實用的 Windows 記憶體清理工具。它採用 C# 編寫、僅 200+KB 大小、介面清爽,可設定自動清理記憶體的間隔時間和閾值,支援程式白名單、多國語言、熱鍵、開機啟動等功能。來自 @獵隼丶止戈reNo7 的分享

C++ 專案

7、KeyDB:多執行緒版的 Redis。該專案是由 Snapchat 開源的支援多執行緒的 Redis,它具有高效能、更高的吞吐量、完全相容 Redis 協議等特點。有了多執行緒就可以放心大膽地執行 KEYS 和 SCAN 命令,不用再擔心阻塞 Redis 了。

8、MuseScore:一款免費開源的寫譜工具。這是一款用 C++ 編寫的建立和編輯樂譜的桌面工具,它擁有精美的介面、中文語言和豐富的功能,重點是免費暢用無限制。支援為包括鋼琴、吉他等 500 多種樂器編曲,適用於 Windows、Linux 和 macOS 系統。

9、rpcs3:流暢執行 PS3 遊戲的開源模擬器。該專案是用 C++ 寫的 PlayStation 3(PS3) 模擬器,安裝後使用預設配置,就能較為流暢地執行多種 PS3 主機上的遊戲,適用於 Windows、Linux、macOS 和 FreeBSD 作業系統。

10、tiled:一款強大的 2D 遊戲關卡編輯工具。該專案是一款完全由社群驅動、功能強大、容易上手的 2D 遊戲場景編輯器,它能夠幫助開發者快速製作 2D 遊戲地圖和設計關卡,支援靈活的物件圖層、自由放置影像、對齊畫素、圖塊動畫和碰撞編輯器等功能。

Go 專案

11、groupcache:Go 寫的輕量級分散式快取庫。該專案是由 Golang 官方開源的庫,它實現了一個無需部署的分散式快取。支援當查詢未命中快取時僅一個程式填充快取(防穿透和雪崩)、熱點資料自動擴充套件等功能,但不支援更新和刪除資料(LRU 控制記憶體),所以僅適用於某些特定場景。

12、kopia:好用的跨平臺備份工具。適用於 Windows、Linux 和 macOS 的備份/還原工具,它能夠將指定的檔案和目錄加密壓縮後生成快照,然後上傳到遠端伺服器或雲端儲存,實現遠端備份資料的功能,開箱即用支援命令列和 GUI 兩種使用方式。

13、photoprism:帶 AI 功能的開源私人云相簿。該專案是用 Go 語言寫的線上私人相簿,它穩定、部署方便,支援瀏覽/備份圖片、按地點/時間線瀏覽照片、移動端自動備份照片,以及人臉識別、圖片自動分類等功能,可用來搭建私人相簿管理你的照片。來自 @鴻宇Hov 的分享

14、zlsgo:簡單易用的 Golang 工具庫。該專案把 HTTP 服務、日誌、熱重啟、驗證器、編碼等十幾種開發中經常寫的功能,封裝成了一個庫,拿來即用提高開發效率。來自 @神經蛙9dyXx 的分享

  func main() {

      // 需要驗證的資料
      data := "我是需要驗證的資料,我的作用是做使用者名稱"
      // 開始驗證資料,不能為空,必須包含字母
      name, err := zvalid.Text(data, "使用者名稱").Required().HasNumber().HasLetter().String()
      if err != nil {
          zlog.Debug("驗證失敗", err)
      }

      data = "我是需要驗證的資料,我的作用是做使用者名稱,我有字母 A"
      name, err = zvalid.Text(data, "使用者名稱").Required().HasLetter().String()
      zlog.Debug("使用者名稱是:", name)

      // 初始化一個物件,並繫結需要驗證的字串
      // zvalid.New().Verifi("username","使用者名稱").String()
  }

Java 專案

15、minum:極簡的 Java Web 框架。該專案是作者手擼的 Java Web 框架,它簡約、零依賴、具有良好的效能,內建資料庫、Web 伺服器、模版引擎、日誌等功能。如果你是一個 Java 新手,而且經常在各大 Web 框架中“迷失方向”,那你可以透過這個專案,快速上手 Web 開發並理清頭緒。

package org.example.myproject;

import com.renomad.minum.web.*;
                                                                                                                       
public class Main {

    public static void main(String[] args) {
        // Start the system
        FullSystem fs = FullSystem.initialize();

        // Register some endpoints
        fs.getWebFramework().registerPath(
                RequestLine.Method.GET,
                "",
                request -> Response.htmlOk("<p>Hi there world!</p>"));

        fs.block();
    }
}

16、WePush:專注批次推送的小工具。該專案是用 Java 寫的批次推送桌面工具,支援自定義訊息、預覽訊息、批次匯入使用者、多賬號管理、定時推送等功能,目前已支援公眾號模板訊息、企業微信、微信客服、簡訊、郵件等訊息型別。來自 @周波 的分享

JavaScript 專案

17、auto-animate:一個即插即用的過渡動畫庫。該專案可以為你的 Web 應用新增平滑的過渡效果,它上手簡單無需修改現有程式碼,動畫會在子元素被新增、移除或移動時自動觸發,適用於 React、Solid、Vue、Svelte 和 JavaScript 應用。來自 @Uyloal 的分享

18、html-to-image:將 HTML 網頁轉化成圖片的庫。該專案可以將任意 DOM 節點,轉換成 SVG、PNG、JPEG 等多種格式的影像,可直接在 React 和原生 JavaScript 程式碼中使用。來自 @鴻宇Hov 的分享

var node = document.getElementById('my-node');

htmlToImage.toPng(node)
  .then(function (dataUrl) {
    var img = new Image();
    img.src = dataUrl;
    document.body.appendChild(img);
  })
  .catch(function (error) {
    console.error('oops, something went wrong!', error);
  });

19、lx-music-desktop:一款免費、沒廣告的音樂軟體。洛雪音樂助手桌面版是基於 Electron + Vue 開發的音樂搜尋工具,需要自己配置音樂源,支援在 Windows、macOS、Linux、Android 平臺上執行。

20、threejs-tetris-react:3D 俄羅斯方塊。該專案是採用 Three.js + React + TypeScript 構建的 3D 俄羅斯方塊遊戲。

21、workout-lol:制定你的肌肉訓練計劃。該專案是採用 NextJS 寫的小型 Web 應用,可以幫你更好地健身。使用者上來需要選擇鍛鍊器材、指定身體部位,隨後網站就會給出動作指導影片和文字描述。來自 @鴻宇Hov 的分享

Objective-C 專案

22、Sequel-Ace:適用於 macOS 的 MySQL 資料庫管理工具。因為 Mac 上的老牌資料庫管理工具 Sequel Pro 停止更新,所以就有了 Sequel-Ace。它免費、開源、持續更新,支援 Intel 和蘋果晶片,適用於 macOS 10.13 及以上系統。

Python 專案

23、codespell:一條命令找出程式碼中的拼寫錯誤。該專案主要用於檢查檔案中常見單詞的拼寫錯誤,對於變數名極少產生誤報,支援指定目錄、檔案字尾、修改建議、忽略檔案等功能。來自 @Xuefeng Xu 的分享

codespell some_file some_dir/ *.ext  # 檢查目錄下 ext 字尾檔案
codespell -w, --write-changes  # 顯示修改建議

24、pwntools:知名的 CTF 框架和漏洞利用開發庫。該專案是用 Python 編寫的 CTF 框架,開箱即用地提供了遠端連線、網路、彙編/反彙編、ELF 模組、生成 shellcode 等功能,讓 CTF 選手可以專注於編寫 EXP(利用漏洞的攻擊邏輯)。

from pwn import *
context(arch = 'i386', os = 'linux')

r = remote('exploitme.example.com', 31337)
# 這裡寫漏洞利用邏輯
r.send(asm(shellcraft.sh()))
r.interactive()

25、python-holidays:處理假期的 Python 庫。該專案支援動態生成國家/地區和省份公佈的法定節假日,可以快速地判斷指定日期是否為節假日。

from datetime import date
import holidays

cn_holidays = holidays.CN()
date(2021, 10, 1) in cn_holidays  # True
date(2023, 10, 8) in cn_holidays  # False
date(2024, 2, 9) in cn_holidays  # True 我看了下原始碼還未更新 2024 年的假期

26、Qexo:漂亮的 Hexo 靜態部落格編輯器。該專案是基於 Django 的 Hexo 靜態部落格管理後臺,支援文章管理、多種圖床、自動更新、友情連結、站點統計等功能。

27、tacticalrmm:一個遠端監控和管理 PC 的工具。該專案是採用 Django+Vue.js 構建的 IT 管理平臺,支援類似 TeamViewer 的遠端桌面控制、遠端執行命令和指令碼、上傳和下載檔案、警報等功能。

Rust 專案

28、helix:一款 Rust 寫的終端文字編輯器。受 Kakoune 和 Neovim 啟發的編輯器,它開箱即用、智慧、對新手更加友好,支援類似 Vim 的編輯模式、tree-sitter(高亮更加快速)、LSP 等功能。

29、mini-redis:Rust 寫的迷你 Redis。該專案是用 Tokio 構建的 Redis,僅實現了 PING、GET、SET、PUBLISH 等命令。可作為 Tokio 的練手專案,不可用於生產環境。

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (mut socket, _) = listener.accept().await?;

        tokio::spawn(async move {
            let mut buf = [0; 1024];

            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };

                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

30、rust-blog:面向 Rust 初學者的部落格。這裡的文章可以幫助 Rust 初學者更好地掌握 Rust 語言,包括給新手學習 Rust 的建議、Rust 標準庫講解等內容。

Swift 專案

31、Delta:iOS 上的多合一經典遊戲模擬器。這是一款無需越獄、適用於 iOS 裝置的遊戲模擬器,支援 NES、GBA、Nintendo 64 等遊戲。

其它

32、AnuPpuccin:一款精美的 Obsidian 主題。這款 Obsidian 主題支援各種調色盤、內建主流配色方案、彩虹資料夾、自定義背景等功能。

33、fluentui-system-icons:微軟開源的圖示集合。這是一套微軟 Fluent UI 設計風格的圖示,它豐富、精緻、統一。

34、leetcode:全面的 Leetcode 演算法解題指南。該專案包含 LeetCode、《劍指 Offer》、《程式設計師面試金典》等題目的相關題解,題解有 Java、Python、C++、Go、TypeScript、Rust 等多種程式語言實現。來自 @Libin YANG 的分享

35、Smart_Plant:自制智慧植物監控裝置。這是一款可直接插入土壤的環境監控裝置,支援測量土壤溼度、溫度和光照,專案僅包含電路板,需自行組裝電子墨水屏、太陽能電池板等。

36、TNT-Weekly:TNT 前端週刊。該專案是由騰訊新聞前端團隊(TNT)發起的週刊,每週會發布國內外前端領域最新的優秀文章和行業動態。

37、try:在命令執行前先試一試。該專案可以讓你在命令真正執行前,檢視命令執行結果,需要注意的是它並不是一個完全獨立的空間(sandbox),因為所有的網路請求都是被允許的。

開源書籍

38、latex-cookbook:《LaTeX 論文寫作教程》。該書是教你如何用 LaTeX 寫論文,內容涵蓋了 LaTeX 基礎、文字編輯、公式、圖表設計、文獻引用等方面。

39、Startup-CTO-Handbook:《初創公司 CTO 手冊》。這是一本寫給初創公司技術長的書,內容涵蓋技術團隊管理、招聘和麵試、技術架構等方面。作者先後擔任過多家創業公司的 CTO 和 CEO,還曾在騰訊做過駐點企業家(EIR)。

機器學習

40、deepface:輕量級人臉識別和分析庫。該專案是 Python 寫的人臉識別和麵部屬性分析框架,可根據人臉影像智慧識別年齡、性別、情緒等資訊。

41、DeepLearningSystem:AI 系統 & 深度學習教程。該專案主要是關於人工智慧、深度學習系統設計的教程,內容涵蓋 AI 基礎知識和概述、AI 晶片、AI 編譯器原理、AI 框架核心技術等方面。

42、guidance:微軟開源的 LLM 提示程式語言。該專案是微軟開源的編寫 prompt 的模版語言,用於編寫複雜、可複用、易於管理的 prompt,支援 GPT-4、LLaMa 等多種大語言模型。

最後

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

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

相關文章