《HelloGitHub》第 91 期

興趣是最好的老師,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 上有趣的項目,就點擊這裏分享給大傢伙吧!

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章