《HelloGitHub》第 94 期

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

簡介

HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。

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

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


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

C 項目

1、genann:C 語言寫的極簡神經網絡庫。這是一個輕量、無依賴、單文件的 C 語言神經網絡庫,內含豐富的示例和測試。代碼簡潔易讀,適合作爲初學者學習神經網絡的入門項目。來自 @ziming012 的分享

#include "genann.h"

/* Not shown, loading your training and test data. */
double **training_data_input, **training_data_output, **test_data_input;

/* New network with 2 inputs,
 * 1 hidden layer of 3 neurons each,
 * and 2 outputs. */
genann *ann = genann_init(2, 1, 3, 2);

/* Learn on the training set. */
for (i = 0; i < 300; ++i) {
    for (j = 0; j < 100; ++j)
        genann_train(ann, training_data_input[j], training_data_output[j], 0.1);
}

/* Run the network and see what it predicts. */
double const *prediction = genann_run(ann, test_data_input[0]);
printf("Output for the first test data point is: %f, %f\n", prediction[0], prediction[1]);

genann_free(ann);

C# 項目

2、FancyScrollView:Unity 滑動列表插件。該項目採用 Unity 引擎動畫系統來定製列表滑動效果,具備非常高的靈活性,除了用作滑動列表,還可以用作導航欄。項目代碼結構和風格規範,接入成本低、易於使用和定製。來自 @Wu Zheng 的分享

using UnityEngine;
using UnityEngine.UI;
using FancyScrollView;

class MyCell : FancyCell<ItemData>
{
    [SerializeField] Text message = default;

    public override void UpdateContent(ItemData itemData)
    {
        // 更新內容
        message.text = itemData.Message;
    }

    public override void UpdatePosition(float position)
    {
        // position 是一個介於 0.0 到 1.0 之間的值
        // 可以根據 position 自由控制滾動的外觀
    }
}

3、MarkovJunior:基於馬爾可夫鏈的圖像生成器。馬爾可夫鏈是一種數學模型,具有“無記憶”的性質,即未來狀態的概率分佈只依賴於當前狀態,而不依賴於過去的狀態。該項目利用馬爾可夫鏈原理,通過模擬圖像的狀態轉移來生成獨特的圖像,包括建築、迷宮等。

C++ 項目

4、abseil-cpp:谷歌開源的 C++ 基礎庫。這是一個在 Google 內部被廣泛應用的 C++ 公共庫,它提供了一系列高質量、可靠、高效的基礎模塊,其中包括字符串處理、併發、時間、STL 容器、測試、日誌等實用函數。來自 @張程林 的分享

5、gpupixel:高性能跨平臺實時美顏濾鏡庫。這是一個用 C++11 編寫的高性能圖像和視頻處理庫,內置基於 GPU 的美顏特效濾鏡,效果可以達到商業級別水平。支持磨皮、美白、瘦臉、大眼等特效,適用於 iOS、macOS 和 Android 平臺。來自 @Zhaoyou Ge 的分享

6、qtrvsim:面向教育的 RISC-V CPU 模擬器。這是一個採用 Qt 實現的 RISC-V CPU 模擬器,由捷克理工大學計算學院開發。

Go 項目

7、copilot-gpt4-service:將 Github Copilot 轉成 ChatGPT 的服務。該項目可以將 GitHub Copilot 轉換成 ChatGPT 的服務,爲什麼要這麼做呢?因爲如果你在 GitHub 上有一個開源項目,就有機會免費使用 Copilot,除此之外學生和老師在完成認證後也可以免費使用 Copilot,一番操作下來就等於白嫖 GPT-4。一定要按照推薦的方式部署,否則有封號風險,僅限自用。來自 @exiaOgW1q 的分享

8、goploy:容易上手的代碼發佈平臺。這是一個採用 Go + Vue.js 構建的 Web 部署平臺,可一鍵部署、發佈和回滾項目。支持基於角色的訪問控制、監控、秒級定時任務、Xterm、LDAP 等功能,提供了完整的安裝引導,即使是初學者也能輕鬆上手。來自 @zhenorzz 的分享

9、listmonk:開源的郵件列表和營銷平臺。這是一個開箱即用的郵件營銷平臺,可以幫助你管理郵件訂閱者、創建和發送郵件、分析營銷數據。可查看郵件閱讀率、鏈接點擊率等,支持自託管適用於個人和企業。

10、restic:一款強大的開源備份工具。該項目提供了簡單、快速、安全的開源備份解決方案。它無需繁瑣的配置,即可輕鬆完成備份和恢復操作。採用增量備份策略,備份數據經過加密和壓縮處理,保障數據安全且節省空間,支持靈活的存儲選擇,包括本地磁盤和雲存儲。可設置自動備份時間,確保數據得到定期的備份保護。

$ restic --repo /tmp/backup backup ~/work
enter password for repository:
scan [/home/user/work]
scanned 764 directories, 1816 files in 0:00
[0:29] 100.00%  54.732 MiB/s  1.582 GiB / 1.582 GiB  2580 / 2580 items  0 errors  ETA 0:00
duration: 0:29, 54.47MiB/s
snapshot 40dc1520 saved

11、vfox:無憂應對多編程語言不同版本的工具。這是一款跨平臺的通用版本管理工具,通過命令行快速安裝、切換編程語言的不同版本,並支持自定義源地址。相比於針對每種語言的獨立版本管理工具(如 nvm、fvm、gvm 等),這個項目讓開發者擺脫繁瑣的學習和記憶過程,只需一個工具、一條命令,輕鬆搞定多編程語言版本管理。來自 @Han Li 的分享

$ vfox c
node -> v20.10.0
java -> v11.0.12

Java 項目

12、1brc:探索 Java 處理 10 億行文本的最快速度。這是一個有趣的 Java 編程挑戰,要求開發者編寫一個 Java 程序,讀取包含多個氣象站溫度值的文件(10 億行),然後計算每個氣象站的最小、平均和最大值,最後按照站點名稱排序後輸出,現在最快速度爲 2 秒。

13、automq-for-kafka:一款真正的雲原生 Kafka 解決方案。該項目是基於雲原生重新設計的新一代 Kafka 發行版。在保持和 Apache Kafka 100%兼容前提下,AutoMQ 可以爲用戶提供高達 10 倍的成本優勢以及百倍的彈性優勢,同時支持秒級分區遷移和流量自動重平衡,解決運維痛點。

14、spring-startup-analyzer:優化 Spring Boot 應用啓動性能的工具。該項目利用採集 Spring 應用啓動過程數據,生成交互式分析報告,爲開發者提供了分析 Spring 應用啓動性能的工具。其主要功能包括分析啓動卡點、處理 Spring Bean 異步初始化,以及顯示應用未加載的 jar 包、方法調用次數和耗時統計等詳細信息。來自 @linyimin 的分享

JavaScript 項目

15、awesome-hands-control:用手勢操控電腦程序的工具。該項目基於手勢識別進行自定義操控電腦程序,採用純前端技術棧實現。它通過訓練好的模型(MediaPipe)來識別手勢,然後將特定手勢與電腦操控綁定,最後,用戶可以指定操作的進程,從而實現手勢操控電腦程序。來自 @Rylan 的分享

16、bpmn-js:專注於流程圖的可視化和編輯組件。該項目提供了直觀的拖拽式創建和編輯流程圖的功能,可用於構建業務流程管理、決策流可視化和低代碼平臺。來自 @塔咖 的分享

const xml = '...'; // my BPMN 2.0 xml
const viewer = new BpmnJS({
  container: 'body'
});

try {
  const { warnings } = await viewer.importXML(xml);

  console.log('rendered');
} catch (err) {
  console.log('error rendering', err);
}

17、dockge:一個美觀、易用的 Docker Compose 管理平臺。該項目提供了一個 Web 界面,用於管理 docker-compose.yaml 文件。它開箱即用、界面設計精美,支持交互式編輯 compose.yaml 文件、更新 docker 鏡像,以及啓動、停止、重啓、刪除 docker 等操作。來自 @獵隼丶止戈reNo7 的分享

18、theatre:一個用於創建 Web 動畫的 JavaScript 庫。該項目是帶圖形用戶界面的 Web 動畫編輯器,能對任何 JavaScript 變量進行動畫處理。它不僅支持處理 three.js 或其他 3D 庫對象的動畫功能,還能利用 React 等庫對 HTML/SVG 進行動畫處理。

19、tiny-rdm:一款輕量級的跨平臺 Redis 桌面客戶端。該項目是基於 WebView2 的 Redis 桌面客戶端,擁有小巧的體積和精美的界面,同時支持中文。它提供了多種連接方式、分段加載、慢日誌、轉碼顯示等功能,可以在 Windows、Linux 和 macOS 系統上使用。

Kotlin 項目

20、jingmo:一款古詩詞文和成語應用。它叫「京墨」是一個免費的 Android 閱讀應用,內含豐富的中國傳統文化內容,包括古詩、歇後語、成語故事、中國傳統節日、繞口令等。安裝應用第一次進入無內容,需要在設置裏手動同步數據。來自 @賀豐寶 的分享

Objective-C 項目

21、Itsycal:可愛的 Mac 菜單欄日曆。這是一個迷你的菜單欄,擁有可愛的界面和實用的功能,支持顯示/添加系統日曆的事件、深色模式、週數、快捷鍵等功能,適用於 macOS 11+ 系統。

22、KeepingYouAwake:防止 Mac 進入睡眠狀態的工具。這一個小型的菜單欄實用工具,可以讓 Mac 電腦在預設的時間內或永久不進入睡眠模式,適用於 macOS 10.13 或更高版本。

PHP 項目

23、akaunting:專爲小型企業和個人設計的在線會計軟件。該項目是基於 Laravel+Vue.js+Tailwind CSS+MySQL 構建的會計平臺,爲用戶提供全面的會計和財務功能。其中包括費用跟蹤、現金流、報告等,並且支持移動端適配和多語言。

Python 項目

24、DouyinLiveRecorder:一款支持多平臺的直播錄製工具。該項目是基於 FFmpeg 實現的多平臺直播源錄製工具,支持循環執行直播錄製任務(循環值守)、直播狀態推送、多人錄製、去水印、選擇畫質等功能。

25、harlequin:一個簡單、快速、美觀的終端數據庫客戶端。這是一個帶界面的命令行數據庫客戶端,提供了數據庫和表目錄、查詢編輯器、顯示結果、導出數據的功能,支持 DuckDB、SQLite、Postgres、MySQL 等數據庫。

26、khal:一款簡單、美觀的終端日曆。該項目是用 Python 寫的命令行日曆工具,支持快速便捷地瀏覽、添加和編輯事件,以及同步日曆數據。

27、pyupgrade:一鍵升級 Python 代碼的工具。這是一個用於自動升級 Python 代碼,以適應新版本語法的工具。支持升級到不同的 Python 版本、提供預覽模式即查看改動變化等功能。

28、text_blind_watermark:給文本加盲水印的 Python 庫。通過該項目可以將一段隱祕信息嵌入到明文中,嵌入前後的明文無變化。簡單說就是給文本打上隱藏水印,適合在版權保護、數據泄漏溯源、數據安全等場景使用,支持 macOS 的 Chrome 瀏覽器、蘋果備忘錄、macOS/iPhone 的微信和釘釘等應用。

from text_blind_watermark import TextBlindWatermark2

password = 'HelloGitHub'
text = '這句話中有盲水印,你能提取出來嗎?'
watermark = 'HelloGitHub'

text_blind_wm = TextBlindWatermark2(password=password)

text_with_wm = text_blind_wm.embed(text=text, watermark=watermark)
print(text_with_wm)

Rust 項目

29、cmd-wrapped:一個 Rust 編寫的命令行歷史記錄分析工具。這是一款命令行工具,它可以讀取你的命令行操作歷史記錄,並生成詳細的分析報告。報告包括過去任意一年的命令行活躍時段、常用命令等信息,支持 Zsh、Bash、fish 等。

其它

30、gdb-dashboard:GDB 可視化調試界面。這是專爲 GNU 調試器(GDB)設計的文本界面,支持模塊化顯示調試的程序相關信息,更直觀和方便地調試代碼。該界面採用 Python 編寫,具備輕鬆自定義和擴展的特性。

31、kubernetes-network-policy-recipes:只需複製粘貼即可解決 K8s 網絡問題的配方。該項目包含了 Kubernetes 網絡策略的各種用例和示例 YAML 文件,可直接複製使用。

32、network_proxy_flutter:支持手機端的免費抓包工具。該項目是採用 Flutter 開發的抓包工具,可用於攔截、檢查和重寫 HTTP(S) 流量。它支持掃碼連接、域名過濾、請求重寫等功能,適用於 Windows、macOS、Linux、Android 和 iOS 平臺。

33、particle-life:粒子生命演化遊戲。該項目通過定義粒子之間的相互作用力,從而生成複雜的自組織圖案。源碼十分簡單,用戶可以在線試玩,創造出各種有趣的圖案。

34、vimwiki:Vim 中的個人 wiki。這是一個 Vim 插件,通過以 wiki 的方式連接文本,提供更好的組織筆記和想法的功能。

開源書籍

35、game-programming-patterns:《遊戲編程模式》。該書收集了經過驗證、已發佈的 3A 級遊戲中的經驗和模式,來解決你在遊戲開發中遇到的問題。

36、PDF-Explained:《PDF 解析》。該項目是《PDF Explained》一書的非官方中文翻譯版,內容由淺入深介紹瞭如何構建簡單的 PDF 文件,以及 PDF 運算符、書籤、超鏈接、註釋、加密等高級特性。

機器學習

37、AnimateDiff:讓 AI 生成的圖動起來。這是一款可以在 Stable Diffusion 中製作動圖的庫,支持將大多數開源模型轉換爲動畫生成器。讓原本通過文字生成的圖片,變成 gif 圖片動起來。來自 @adoin 的分享

38、AnyText:輕鬆 DIY 圖片文字,定製你的創意設計。該項目提供了文字生成和文字編輯兩種模式,它能夠根據提示詞生成圖文融合的圖片,並確保文字的準確性,還支持對上傳圖片中的文字進行編輯後,重新生成圖片。支持中文、英語、日語、韓語等多語言,適用於海報設計、Logo 設計、創意塗鴉、表情包等場景。

39、pyvideotrans:開源的視頻翻譯和配音工具。該項目可以將視頻從一種語言翻譯成指定語言的視頻,並自動生成和添加對應語言的字幕和配音。來自 @okaymyworld 的分享

40、StreamDiffusion:實時交互式 AIGC 圖片。該項目能以驚人的速度生成 AIGC 圖像,單張 RTX4090 顯卡可達 100 張/秒。它通過流批處理簡化數據處理,採用殘差無分類器(RCFG)減少計算冗餘,隨機相似性過濾器提高 GPU 利用率,並通過優化 IO 隊列實現並行處理。同時,利用多種模型加速工具,實現爆炸式地提升 AIGC 圖像速度。

最後

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

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

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

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