興趣是最好的老師,HelloGitHub 讓你對程式設計感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。
這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對程式設計產生興趣!
以下為本期內容|每個月 28 號更新
C 專案
1、ecapture:一款無需 CA 證照即可抓取 HTTPS 明文的工具。該專案基於 eBPF 技術實現了 TLS 加密的明文捕獲,可用於 MySQL 資料庫的查詢審計、bash 命令捕獲等場景,僅支援 Linux 和 Android 系統。
2、FSHistory:最早的微軟模擬飛行遊戲。該專案提供了 1982 年發行的懷舊遊戲《微軟模擬飛行》,支援線上試玩、共有 4 個版本可供選擇。
3、iodine:一款可快速建立 DNS 隧道的工具。該專案包含 C 語言寫的 DNS 隧道伺服器和客戶端,可快速搭建 DNS 隧道傳輸 IPv4 資料,常用於繞過防火牆等場景。因為一般情況下防火牆的 DNS 埠是開啟的,所以將流量偽裝成 DNS 資料包,就可以突破防火牆限制啦。
4、tinyriscv:從零開始寫 RISC-V 處理器。該專案是採用 Verilog 語言實現一個單核 32 位的小型 RISC-V 處理器核,包含全部程式碼和詳細的教程。RISC-V 是一種開源指令集架構,它允許任何人設計、製造和銷售 RISC-V 晶片和軟體。
C# 專案
5、DevToys:程式設計師的瑞士軍刀。該專案打包了程式設計師日常開發會用到的小工具,比如時間戳轉化、各種解碼、輸出美化、顏色選擇器等,使用方便顏值高。
6、Tai:Windows 上統計軟體使用時長的工具。該專案會根據軟體獲得焦點和失去焦點的時間差,來計算軟體的真實使用時長,而不是簡單地統計軟體存活時間。
C++ 專案
7、GASDocumentation:虛幻引擎 5 之 GAS 外掛上手教程。該專案是講解如何使用虛幻引擎 5 的 GameplayAbilitySystem 外掛,作者從什麼是 GAS 開始,最後用 GAS 做出了一個簡單的多人射擊遊戲。如果你對虛幻引擎 5 感興趣而且會 C++ 的話,那麼看完這份教程一定會讓你有所收穫。
8、organicmaps:一款免費、沒廣告的離線地圖應用。適用於旅行者、遊客、徒步旅行者和騎行者的 Android 和 iOS 離線地圖應用,它使用 OpenStreetMap 資料,支援詳細的離線地圖、騎行路線、語音導航、等高線、海拔剖面、山峰和坡度等功能。
9、tesseract:一款“老當益壯”的 OCR 引擎。這個專案最早誕生於 1985 年,幾經易主在 2005 年的時候 HP 將其開源。目前,Tesseract 已經成為 OCR 領域 Star 數最多的開源專案,它支援包括中文在內的 100 多種語言,具有精準度高、跨平臺等特點。
CSS 專案
10、china_school_badge:全國高校校徽字型圖示庫。該專案包含國內 200 多所高校校徽製作的字型圖示。
11、daisyui:一款極為流行的 Tailwind CSS 元件庫。作為當下最流行的 Tailwind CSS 元件庫,具有高顏值、更純淨的 HTML、深度自定義等特點。
<ul class="menu p-3 bg-base-200 rounded-xl">
<li class="menu-title">
<span>Menu Title</span>
</li>
<li><a>First Menu Item</a></li>
<li><a>Second Menu Item</a></li>
<li><a>Third Menu Item</a></li>
</ul>
Go 專案
12、answer:一款開源的問答社群。採用 Go 語言編寫的問答社群,支援積分、提問、回答、標籤等功能,部署簡單。
13、btree:Go 語言實現的 B-樹 資料結構。由谷歌開源的 B-樹 Go 語言實現,程式碼整潔、註釋豐富,推薦閱讀原始碼。B-樹 這種資料結構,能夠讓查詢資料、順序訪問、插入及刪除操作,都在對數時間內完成,多用於資料庫和檔案系統。
14、nap:一款命令列的程式碼片段管理工具。該專案可以透過命令列介面,快速建立和管理程式碼片段。支援快捷鍵、搜尋、程式碼高亮、自定義顏色等功能,操作簡單方便。
15、oh-my-posh:適用於多種 shell 的終端提示個性化工具。該專案內建多款主題開箱即用,支援 Windows、Linux、macOS 三個系統上的 PowerShell、Bash、Zsh 等多種 shell,自動補全你輸入的每個命令。
16、raft:Raft 演算法的 Go 語言實現。Raft 是一種分散式一致性演算法(共識演算法),常用於分散式叢集內的任意節點,在某種狀態轉換上保持一致。
Java 專案
17、JimuReport:一款線上製作報表的工具。該專案可透過線上拖拽製作報表,支援報表設計、圖形報表、大屏展示等功能。
18、kafka-ui:一款開源的 Kafka 管理平臺。由開源社群建立和維護的 Kafka Web UI 管理工具,承諾永久免費。可方便地檢視 Kafka Brokers、Topics、訊息、Consumer 等情況,支援多叢集管理、效能監控、訪問控制等功能。
19、leetcode-editor:刷 LeetCode 的 IDE 外掛。讓你可以在 IDE 裡刷 LeetCode 演算法題的外掛,支援 IntelliJ IDEA、PyCharm、GoLand 在內的 Jetbrains 全家桶。
20、LibreraReader:一款支援多種格式的 Android 電子書閱讀器。適用於 Android 裝置的閱讀應用,支援最流行的文件格式,包括 PDF、EPUB、MOBI、DjVu、FB2、TXT、RTF、AZW、HTML、CBZ、DOC 等多種電子書格式。
JavaScript 專案
21、infisical:一款幫助團隊同步環境變數的工具。該專案可用於團隊成員之前同步環境變數,擁有簡單易懂的操作介面,支援端到端加密、自託管、許可權控制、整合 CI/CD 等功能。
22、outils:前端業務程式碼的工具庫。該專案包含了前端開發中,經常會用到的日期格式化、瀏覽器型別判斷、檢測是否為手機號等函式。
/**
*
* @desc 獲取作業系統型別
* @return {String}
*/
function getOS() {
var userAgent = 'navigator' in window && 'userAgent' in navigator && navigator.userAgent.toLowerCase() || '';
var vendor = 'navigator' in window && 'vendor' in navigator && navigator.vendor.toLowerCase() || '';
var appVersion = 'navigator' in window && 'appVersion' in navigator && navigator.appVersion.toLowerCase() || '';
if (/iphone/i.test(userAgent) || /ipad/i.test(userAgent) || /ipod/i.test(userAgent)) return 'ios'
if (/android/i.test(userAgent)) return 'android'
if (/win/i.test(appVersion) && /phone/i.test(userAgent)) return 'windowsPhone'
if (/mac/i.test(appVersion)) return 'MacOSX'
if (/win/i.test(appVersion)) return 'windows'
if (/linux/i.test(appVersion)) return 'linux'
}
23、podcast-together:和你的好友一起線上聽播客。該專案無需註冊和登入,即可建立/進入房間和三五好友,一起收聽同一個部落格,支援收聽小宇宙、Apple Podcast 中國區等音源。
24、terminalizer:強大的終端錄製工具。該專案可以輕鬆記錄下你在命令列的操作,並將錄製好的內容輸出成 gif 影像或直接分享到網上。
25、watching-you:讓 DOM 像眼睛一樣注視的 JS 動畫庫。這是一個簡易的動畫庫,主要用於計算一個 DOM 與觀察目標,比如滑鼠、DOM、輸入框值之間的位置,從而做出一些有趣的動畫,比方說讓它變成跟眼睛一樣。
PHP 專案
26、snipe-it:一款 IT 資產管理系統。該專案是基於 Laravel 8 構建的適用於中小型企業的 IT 資產管理系統,支援資產分配、生成二維碼標籤、資產審計、保修到期提醒等功能。
Python 專案
27、Bottles:一款可輕鬆實現 Linux 上執行 Windows 軟體的工具。該專案提供了清爽易用的 GUI 介面,使用者就算不懂任何程式設計技巧,也可以輕而易舉地在 Linux 系統上,執行 Windows 的遊戲和軟體。
28、django-cacheops:一款靈活的 Django ORM 快取庫。該專案使用 redis 作為快取,可透過裝飾器設定資料庫查詢結果的過期時間。
from cacheops import cached_as
@cached_as(Article, timeout=120)
def article_stats():
return {
'tags': list(Article.objects.values('tag').annotate(Count('id')))
'categories': list(Article.objects.values('category').annotate(Count('id')))
}
29、doccano:一款開源的文字標記工具。它可以提供文字分類、序列標記、情感分析、文字摘等功能,幫助快速完成打標工作,支援中文和多人協作。
30、FileCodeBox:一款匿名口令分享文字和檔案的服務。該專案是基於 FastAPI+SQLite3 開發的檔案分享服務,支援分享檔案、口令提取檔案等功能,無需註冊即可完成檔案提取。
31、python-systemd-tutorial:用 Python 編寫 systemd 服務的教程。許多 Linux 發行版都用 systemd 來管理系統的服務,比如開機啟動、自動重啟、守護程式等。該專案講解了如何入門 systemd,並提供了一個 Python 指令碼和 systemd unit 檔案,可以在此基礎上快速開發出 systemd 服務。
if __name__ == '__main__':
import time
import systemd.daemon
print('Starting up ...')
time.sleep(10)
print('Startup complete')
systemd.daemon.notify('READY=1')
while True:
print('Hello from the Python Demo Service')
time.sleep(5)
Rust 專案
32、rust-raspberrypi-OS-tutorials:學習如何用 Rust 編寫嵌入式作業系統。該教程會從零開始,一步步地指導你如何用 Rust 開發出一個功能齊全的嵌入式作業系統的核心。它包含了實現一般作業系統的任務,例如開發串列埠控制檯、設定虛擬記憶體和處理硬體異常。教程中的所有程式碼,均可執行在樹莓派 3 和 4 上。
33、spacedrive:一款 Rust 寫的跨平臺檔案管理工具。它基於用 Rust 編寫的虛擬分散式檔案系統(VDFS),可以將 macOS、Windows、Linux、iOS、Android 等不同作業系統的裝置連線到一起,統一管理所有的檔案。該專案還處於開發階段,客戶端需要自行編譯。
Swift 專案
34、Plash:將網站變成 Mac 桌面桌布。這是一款適用於 macOS 的桌面桌布應用,支援將多種網站設定為桌布,這些網站並不侷限於圖片網站,還可以是新聞、氣象等站點。
其它
35、chinese-independent-blogs:中文個人獨立部落格網站合集。如果說中文獨立部落格的時代已經過去,那麼至少還有這麼一塊地方,屬於熱愛自由的博主們。
36、CSrankings:非官方的頂級 CS 學校排名榜單。該專案以高校教師在電腦科學(CS)各領域頂級會議上發表的論文數量,作為重要的衡量標準。
37、FlutterDouBan:一款用 Flutter 寫的豆瓣客戶端。該專案用 Flutter 還原了豆瓣客戶端的首頁、書影音、小組、市集及個人中心等功能。
38、portal_calendar:自制電子墨水屏的日曆。基於 ESP32 的電子墨水屏日曆,使用 4 節 7 號電池可執行多年,支援透過 OpenWeatherMap 實現天氣顯示等功能。
39、relationship:中國親戚關係計算器。該專案實現了中國親戚關係及稱呼之間的換算,可以將中國複雜的親戚關係及稱呼透過計算器的方式簡單的運算出來。
開源書籍
40、hello-algo:一本動畫圖解資料結構與演算法的入門書。《Hello,演算法》一書透過動畫和程式碼詮釋資料結構和經典演算法,學習曲線平滑,支援電腦、手機等多種終端線上閱讀。
機器學習
41、DeOldify:一款可以給老舊照片上色的專案。該專案基於深度學習實現了對黑白影像和影片進行著色的功能。
42、wandb:一款輕量級的機器學習視覺化工具。該專案是用於視覺化和跟蹤機器學習實驗的工具,透過幾行程式碼就可以實現跟蹤、比較和視覺化機器學習實驗。
import wandb
# 1. Start a W&B run
wandb.init(project="gpt3")
# 2. Save model inputs and hyperparameters
config = wandb.config
config.learning_rate = 0.01
# Model training code here ...
# 3. Log metrics over time to visualize performance
for i in range(10):
wandb.log({"loss": loss})
最後
如果你發現了 GitHub 上有趣的專案,就點選分享給大傢伙吧。
以上就是本期的所有內容了,往期內容點選閱讀
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️