《HelloGitHub》第 68 期

削微寒發表於2021-11-26

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

簡介

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

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

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


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

C 專案

1、toybox:該專案將 200 多個常用的 Linux 命令列工具,做成一個可執行檔案。從而可以讓 Android 這種原本不支援 Linux 命令的系統,也得以用上 ls、find、ps 等命令。還可以用於快速構建最小的 Linux 環境

2、the_silver_searcher:比 ack 更快的命令列搜尋工具。速度快、功能強大、使用簡單,支援 Linux、Windows、macOS 作業系統,還能夠整合到 Vim 和 Emacs 等編輯器

ack test_blah ~/code(8G)/  104.66s user 4.82s system 99% cpu 1:50.03 total
ag test_blah ~/code(8G)/  4.67s user 4.58s system 286% cpu 3.227 total

3、WindTerm:支援 SSH/Telnet/Serial/Shell/Sftp 的終端工具。雖然該軟體完全免費,但部分程式碼尚未完全開源,對安全敏感的同學可以再觀望下

C# 專案

4、wavefunctioncollapse:基於波函式坍縮 (WFC) 演算法,實現的無限城市示例。城市裡有房子、樓梯、樹木、連線房屋的通道,你可以在城市中自由移動、跳躍、飛行,但不論你怎麼移動都找不到盡頭,因為這座城市會無限延伸

5、NETworkManager:管理和解決網路問題的工具。它整合了 IP 和埠掃描、WiFi 分析器、跟蹤路由、DNS 查詢等工具

C++ 專案

6、ppsspp:能夠執行在 Android 和 PC 上的開源 PSP 模擬器。下載地址

7、leocad:用來建立虛擬樂高模型的 CAD 工具。適用於 Windows、Linux 和 macOS 系統

CSS 專案

8、csshake:用 CSS 實現抖動效果

Go 專案

9、MangoDB:真正開源的 MongoDB 替代品。它底層採用 PostgreSQL 作為儲存引擎,用 Go 語言實現了 MongoDB 協議,所以幾乎相容所有的 MongoDB 庫,遷移起來毫無負擔。如果你用不到 MongoDB 的高階功能,還受限於它的開源協議,那麼這個專案可作為 MongoDB 的開源替代方案。它才剛剛起步,建議觀望一段時間或做足測試再用於生產環境

10、caddy:用 Go 編寫的輕量級 Web 伺服器。它相較於 Apache、Nginx 這些知名 Web 伺服器,獨特點在於提供了編譯好的可執行檔案,實現了真正的開箱即用。無需任何配置即可擁有免費的 HTTPS、自動把 Markdown 檔案轉化成 HTML 等人性化的功能。如果是搭建中小型的 Web 服務,它完全夠用而且省時省心

11、croc:可以讓任意兩臺計算機,安全方便地傳輸檔案和資料夾的工具。輕鬆實現端到端加密的跨平臺檔案傳輸,還支援多檔案傳輸、傳輸中斷和恢復等功能

Java 專案

12、jnativehook:獲取鍵盤和滑鼠事件的 Java 庫。輕鬆監聽按鍵、滑鼠移動、點選等事件

import GlobalScreen;
import NativeHookException;
import NativeMouseWheelEvent;
import NativeMouseWheelListener;
// 滑鼠移動
public class GlobalMouseWheelListenerExample implements NativeMouseWheelListener {
	public void nativeMouseWheelMoved(NativeMouseWheelEvent e) {
		System.out.println("Mosue Wheel Moved: " + e.getWheelRotation());
	}

	public static void main(String[] args) {
		try {
			GlobalScreen.registerNativeHook();
		}
		catch (NativeHookException ex) {
			System.err.println("There was a problem registering the native hook.");
			System.err.println(ex.getMessage());
			ex.printStackTrace();

			System.exit(1);
		}

		GlobalScreen.addNativeMouseWheelListener(new GlobalMouseWheelListenerExample());
	}
}

13、spider-flow:用流程圖的方式編寫爬蟲的平臺。無需寫程式碼就可以快速完成一個簡單的爬蟲

14、greenDAO:高效能的 Android ORM 庫。擁有體積小、易於使用、支援資料庫加密等特點,通過它 Android 開發者可以採用物件導向的方式運算元據庫,不需要再手寫和拼接 SQL 啦

JavaScript 專案

15、vue-color-avatar:純前端實現的向量風格頭像生成網站。可以通過搭配不同的素材,生成個性化頭像。該專案使用 Vite + Vue3 開發,能夠幫助前端初學者熟悉 Vue3 語法並掌握專案搭建的相關知識

16、colorfu:自動生成由文字/顏色/圖片/紋理元素組成的桌布。線上嘗試

17、pm2:Node.js 的程式管理工具。它容易上手操作簡單,可以有效地提高 Node.js 程式執行的穩定性,支援自動重啟、負載均衡、不停服務重啟、效能監控等功能,多用於生產環境中管理、監控 Node.js 程式

18、automa:通過圖形化介面拖拽功能模組,實現瀏覽器自動操作的擴充套件工具。輕鬆實現自動填表、截圖、定時執行等操作。讓瀏覽器自動完成預設工作流的外掛,從而減少重複性操作提高效率

Python 專案

19、PyWebIO:快速構建 Web 應用的 Python 工具。通過該專案你可在不寫 HTML、CSS、JS 程式碼的前提下,僅用 Python 快速完成一個包含資料展示、表單的小型 Web 應用頁面

20、pottery:以 Python 的方式操作 Redis 的庫。忘記那些 Redis 命令吧,只要你知道如何使用 Python 字典,那麼你就會用這個庫操作 Redis

>>> from pottery import RedisList
>>> tel = RedisDict({'jack': 4098, 'sape': 4139}, redis=redis, key='tel')
>>> tel['guido'] = 4127
>>> tel
RedisDict{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> squares = RedisList([1, 4, 9, 16, 25], redis=redis, key='squares')
>>> squares
RedisList[1, 4, 9, 16, 25]
>>> squares[0]
1

21、zulip:完全開源的企業級即時通訊專案。後端採用 Python 語言實現效能足夠強大,功能齊全相當於開源、免費的 Slack,擁有拖拽上傳檔案、程式碼高亮、Markdown 語法、應用整合、容易接入的 API 等功能,還支援 Web、PC、iOS 和 Android 主流平臺,眾多知名企業都在用,能夠有效地提高團隊溝通和辦公效率。同時該專案對新手使用者友好,如果你想加入一個不錯的 Python 開源專案,推薦你花時間研究下它一定會有所收穫

22、webssh:簡單的 SSH 連線伺服器的 Python Web 應用。該專案後端採用 Tornado Web 框架和 Python SSH 庫 paramiko,前端是 TypeScript 寫的命令列前端元件 Xterm.js 實現。整個專案簡單還具有實用價值,可作為 Python Web 的實戰專案學習

23、django-debug-toolbar:Django 的除錯工具欄。可顯示當前請求和響應有關的各種除錯資訊,包括耗時、SQL、配置、效能等資訊

1. 安裝:pip install django-debug-toolbar
2. TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "APP_DIRS": True,
        # ...
    }
]
3. INSTALLED_APPS = [
    # ...
    "debug_toolbar",
    "django.contrib.staticfiles",
    # ...
]
4. 增加 __debug__ URL
import debug_toolbar
from django.urls import include, path

urlpatterns = [
    # ...
    path('__debug__/', include(debug_toolbar.urls)),
]
5. MIDDLEWARE = [
    # ...
    "debug_toolbar.middleware.DebugToolbarMiddleware",
    # ...
]
6. INTERNAL_IPS = [
    # ...
    "127.0.0.1",
    # ...
]

Rust 專案

24、hyperfine:命令列基準測試工具。可用來檢視和對比命令的耗時,支援多次執行的統計分析、結果匯出等功能

Swift 專案

25、xcode-dev-cleaner:用於清理各種 Xcode 的快取資料,釋放儲存空間。注意是清除 Xcode 快取資料,不是解除安裝 Xcode 哈

其它

26、toml:更易讀和易於維護的配置檔案格式。如果你厭倦了 INI 的侷限性、層層巢狀的 JSON 和 YAML 令人心驚膽戰的縮排語法,不防給 TOML 一個機會,它支援多種資料型別、拋棄了縮排和巢狀,而且眾多流行程式語言都有對應的庫。TOML 已經足夠成熟,絕對值得一試。檢視文件

27、waka-readme-stats:自動在 GitHub 個人首頁展示程式設計時長的工具。該專案通過 WakaTime 記錄使用者在 IDE 的使用時間,統計程式設計時長和資料,然後採用 GitHub Action 自動獲取並動態更新到 GitHub 個人首頁。輕而易舉地展示自己的程式設計時長

28、PathPlanning:常見的路徑規劃演算法集合。專案包含了 Python 程式碼實現、執行過程動畫以及相關論文

29、howdy:為 Linux 系統提供人臉識別解鎖電腦的工具。通過電腦內建的攝像頭和紅外裝置,實現了類似 Windows Hello™ 風格的身份認證,可用於登陸、鎖屏、sudo 等任何需要輸入密碼的地方

30、The-Open-Book:開源的電子水墨屏閱讀裝置。動手能力強的同學可跟著這個專案,從焊電路板開始親手製作出一個類 Kindle 的 4.2 英寸閱讀裝置

31、fl_chart:Flutter 圖表庫。它支援折線圖、條形圖、餅圖、散點圖和雷達圖

開源書籍

32、ugo-compiler-book:《從頭開發一個迷你 Go 語言》該書教你從頭實現迷你 Go 語言,內容包含了詞法解析、語法樹構建、函式閉包、介面、CGO 的實現等內容。線上閱讀

33、archbase:教科書《計算機體系結構基礎》第三版。線上閱讀

34、spring-in-action-v6-translate:《Spring 實戰第 6 版》中文翻譯。線上閱讀

機器學習

35、best_AI_papers_2021:2021 年必看的人工智慧論文列表。該專案不是簡單的羅列論文,它不僅包含相關論文的程式碼、效果展示,還有深入的文章和講解視訊。通過學習這些前沿的人工智慧論文,提前瞭解 AI 在未來更多可能性

36、AnimeGANv2:可以將圖片和視訊轉換成漫畫風格的工具。採用的是神經風格遷移+生成對抗網路(GAN)的組合,轉換速度快。線上嘗試

最後

如果你在 GitHub 上發現了有趣的開源專案,就分享給大傢伙吧。

相關文章