興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript
簡介
分享 GitHub 上有趣、入門級的開源項目。php
這是一個面向編程新手、熱愛編程、對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。css
- 會編程的能夠貢獻代碼
- 不會編程的能夠反饋使用這些工具中的 Bug
- 幫着宣傳你以爲優秀的項目
- Star 項目⭐️
在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識、提升編程技巧、找到編程的樂趣。html
🎉 最後 HelloGitHub 這個項目就誕生了 🎉前端
如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容vue
C 項目
一、ucore:清華大學操做系統課程,配套實驗項目。推薦給有計算機結構原理、C 和彙編、數據結構基礎並對操做系統感興趣的同窗,項目中包含教學視頻、練習題、實驗指導書等java
C# 項目
二、RevokeMsgPatcher:適用於 Windows 系統下電腦版微信、QQ 的防撤回工具node
三、ContextMenuManager:一個純粹的 Windows 右鍵菜單管理程序。功能:python
- 啓用或禁用文件、文件夾、新建、發送到、打開方式等右鍵菜單項目
- 右鍵菜單項目進行修更名稱、修改圖標、導航註冊表位置、永久刪除等操做
- 右鍵菜單自定義添加項目,自定義菜單命令
C++ 項目
四、spdlog:快速、上手簡單的 C++ 日誌庫。示例代碼:c++
#include "spdlog/spdlog.h" int main() { spdlog::info("Welcome to spdlog!"); spdlog::error("Some error message with arg: {}", 1); spdlog::warn("Easy padding in numbers like {:08d}", 12); spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); spdlog::info("Support for floats {:03.2f}", 1.23456); spdlog::info("Positional args are {1} {0}..", "too", "supported"); spdlog::info("{:<30}", "left aligned"); spdlog::set_level(spdlog::level::debug); // Set global log level to debug spdlog::debug("This message should be displayed.."); // change log pattern spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v"); // Compile time log levels // define SPDLOG_ACTIVE_LEVEL to desired level SPDLOG_TRACE("Some trace message with param {}", 42); SPDLOG_DEBUG("Some debug message"); }
五、srpc:搜狗基於 C++ Workflow 的高性能 RPC 框架。與 thrift/brpc 協議兼容,支持 protobuf/thrift IDL一鍵遷移,核心代碼量僅 1w 行。示例代碼:
class ExampleServiceImpl : public Example::Service { public: void Echo(EchoRequest *request, EchoResponse *response, RPCContext *ctx) override { response->set_message("Hi, " + request->name()); } }; int main() { SRPCHttpServer server; ExampleServiceImpl impl; server.add_service(&impl); server.start(1412); pause(); server.stop(); return 0; } 訪問: curl 127.0.0.1:1412/Example/Echo -H 'Content-Type: application/json' -d '{message:"from curl",name:"CURL"}'
CSS 項目
六、tailwindcss:基於比組件更小、更靈活的工具類(utility-first)思想的 CSS 框架。這個思想簡單來講就是用 class 保證靈活、便於自定義組件,而不是在組件基礎上實現個性化。網上對這個框架褒貶不一,但我以爲挺好想學一下
Go 項目
七、inlets:基於 Go 實現的免費內網穿透服務,即將本地服務暴露到公網。若是以爲以前的內網穿透工具很差用、還貴的話,能夠試試這個項目,使用說明
八、syncthing:一個採用 Go 語言編寫的免費、跨平臺的文件同步工具。它不須要安裝,只須要下載對應系統的壓縮包解壓後就能夠直接運行和使用。擁有命令行、Web 和桌面程序多種操做模式,同時支持內網和互聯網的文件同步,能夠用來搭建私有網盤。又一個代替付費網盤的選擇,若是考慮到昂貴的寬費用。能夠把 syncthing 作爲局域網下手機、電視和電腦共享文件的開源解決方案
九、lazykube:支持鼠標操做和管理 K8s 的命令行工具。對比 k9s 命令行工具,能夠不用去記那麼多快捷鍵,直接用鼠標操做。解決公司不使用 rancher 和 dashboard 管理 K8s,只能經過堡壘機訪問的場景。使用該工具只須要終端和鼠標,固然用到搜索功能時仍是須要鍵盤的 😂
十、go-zero:一個可靠的 Go 語言 Web 和 RPC 框架。就算是 Go 新手基於該框架,也能夠快速寫出高性能可擴展的微服務。示例代碼:
func main() { flag.Parse() var c config.Config conf.MustLoad(*configFile, &c) ctx := svc.NewServiceContext(c) server := rest.MustNewServer(c.RestConf) defer server.Stop() handler.RegisterHandlers(server, ctx) server.Start() }
Java 項目
十一、Mindustry:一款 Java 編寫的免費沙盒塔防遊戲。支持多平臺:Windows、Linux、macOS、Android
十二、fiction_house:一個基於 SpringBoot 實現的小說和漫畫在線閱讀網站。網站功能齊全、資源豐富,同時支持 Web、安卓、微信小程序多平臺。服務端分爲網站和管理後臺,採用 SpringBoot、MyBatis、MySQL、Redis 等技術實現,可看成 Java 新手實戰項目學習
JavaScript 項目
1三、AdminLTE:基於 Bootstrap 4.5 和 jQuery 的管理後臺模板
1四、blockly:不會編程也能夠寫代碼,經過拖拽模塊自動生成代碼的 Web 編輯器。谷歌開源的一個可視化編程的前端項目,支持自動生成:Python、JavaScript、PHP 等編程語言的代碼,在線嘗試的地址網絡很差,能夠經過 npm install blockly
安裝後使用和學習
1五、screenity:一個強大的屏幕錄製和標註的 Chrome 插件。特性:
- 🎥 能夠錄製任何應用的內容,包含「色相頭」
- ✏️ 在屏幕上的任何地方,添加文本和箭頭等註釋
- 👀 突出你的點擊操做、光標
- 💾 支持導出爲 mp四、gif 等經常使用格式
- ✂️ 修剪或刪除錄像
1六、vue-luck-draw:一個基於 Vue 的大轉盤/九宮格抽獎插件。在線嘗試,特性:
- 可自由配置獎品、中獎機率等
- 支持同步、異步式抽獎
- 適配移動端
- 等等
1七、piano:基於 Omi 和 Omi Snippets 構建的鋼琴應用。你不須要懂樂理知識,僅用鍵盤便可彈奏簡單而熟悉的音樂,也藉此項目感謝音樂和編程的陪伴!也致敬各位奮鬥於 996 的代碼家和打工人,音樂未曾辜負任何人,正如 Leehom Wang 歌曲中唱到:若是世界太危險,只有音樂最安全,帶着我進夢裏面,讓歌詞都實現!上面這段是做者寫的推薦語,我原本想從項目的角度再誇下這個項目,但我放棄了。雖然我以前推薦過的那個鋼琴項目彈的比這個要好聽,但我更喜歡這個項目。由於我從他的項目中感覺到滿滿敬意和「愛」,致敬每一位奮鬥的「代碼家」,HG 愛大家。在線嘗試,示例代碼:
playSong(song) { this.setSong([...song]) let offset = 0 let time = 0 let playSong = async () => { // 右邊是從外部來中斷遞歸 if (offset < song.length && this.store.data.song.length > 0) { switch (typeof song[offset]) { // 簡譜2演奏方法 根據 ++12345--6. 簡單旋律狀況 case 'string': let letters = song[offset].match(/[0-9]/g) switch (letters.length) { case 1: time = this.handleString(song, offset) break default: time = this.handleStrings(song, offset) break } break // 簡譜1演奏方法 根據 CDEFGAB,複雜旋律狀況,好比有和絃 case 'object': console.log(song[offset]['note']) time = song[offset]['time']; this.playNote(song[offset]['note']) break; case 'number': // 休止符 switch (song[offset]) { case 0: time = 1000 break } break } await new Promise((resolve) => { let timer = setTimeout(() => { clearInterval(timer) resolve() }, time) }) offset++ // 自定義事件,跟下面底部的音符自動跳動結合 this.add() playSong() } else { // 暫停播放 clearTimeout(this.timer) this.store.data.song = [] this.store.data.count = 0 return } } playSong() }
Objective-C 項目
1八、Sloth:一款 macOS 系統下顯示進程打開的文件、socket、管道等信息的工具。就像桌面版的 lsof,快來試試吧
PHP 項目
1九、freenom:自動續期 Freenom 免費域名的工具。Freenom 是一個提供免費頂級域名的商家,不過申請的域名須要每一年定時續期,不然會被回收。有了這個項目,白 piao 頂級域名就是那麼簡單
Python 項目
20、running_page:一個展現我的跑步主頁的 Python 項目。特性:
- GitHub Actions 管理自動同步跑步進程及自動生成新的頁面
- Gatsby 生成的靜態網頁,速度快
- Mapbox 進行地圖展現
- 支持 Nike、Runtastic、佳明、Keep 的數據
- 自動備份 gpx 數據,方便備份及上傳到其它軟件
2一、gopup:採集各類權威公開數據的 Python 庫。示例代碼:
# 安裝:pip isntall gopup import gopup as gp covid_baidu_df = gp.covid_baidu(indicator="熱搜謠言粉碎") print(covid_baidu_df)
2二、flask-state:一款輕便的機器狀態監控 Flask 插件。示例代碼:
flask_state.init_app(app) // npm import 'echarts'; import 'flask-state/flask-state.min.css'; import {init} from 'flask-state'; // Create a DOM node with ID 'test'. After init() binds the node, click to open the listening window init({dom:document.getElementById('test')});
2三、python-cheatsheet:全面且實用的 Python 備忘錄。這個東西特別適合我這個上了年紀的人,好比:忘記怎麼用 Python 寫正則、要搞個進度條忘記庫的名字和基本用法、用 pandas 處理數據忘記方法須要的參數等等。正當我以爲本身須要「回爐重學」的時候發現了這個項目,有了它上面的問題均可以找到拿來即用的代碼片斷。我又是那個快樂的 Pythoneer 了,示例代碼:
# $ pip3 install tqdm >>> from tqdm import tqdm >>> from time import sleep >>> for el in tqdm([1, 2, 3], desc='Processing'): ... sleep(1) Processing: 100%|████████████████████| 3/3 [00:03<00:00, 1.00s/it]
Swift 項目
2四、eul:一款極簡免費的 macOS 狀態監控工具。我就在用,強烈推薦給你
其它
2五、winapps:一個讓你在 Linux (Ubuntu/Fedora) 系統裏使用 Windows 辦公軟件的項目。支持 Microsoft Excel、Word、PowerPoint、Adobe Photoshop 等
2六、Front-End-Interview-Notebook:一份非拼湊、優秀的前端面試複習筆記。以提問方式發出問題,並給出了做者的答案,內容涵蓋:HTML、CSS、JS、算法、計算機網絡等方面。做者拿到了不少大廠 offer,而後把這些東西總結整理下來送給準備面試、換工做的前端小夥伴
2七、pi-hole:一個免費開源、部署簡單的 DNS sinkhole 項目。不要緊,我也不明白 DNS sinkhole 是個啥,就知道用它可實現路由器層屏蔽廣告的功能。須要先在樹莓派安裝這個項目,而後配合支持自定義 DNS 的路由器,就能夠實現該網絡下的全設備廣告自動屏蔽。詳細步驟
2八、CopyTranslator:支持網頁和 PDF 的劃詞翻譯工具。有了它就能夠解決閱讀 PDF 文件時,要翻譯大段內容狀況下的亂碼、換行、翻譯不許的問題
2九、styleguide:谷歌的代碼風格指南。每一個大型項目都有本身的代碼風格,當代碼的風格統一時將更容易被理解。本項目是谷歌項目的代碼風格說明,包含:C++、C#、Swift、Python、Java 等語言
30、upptime:一個免費開源的網站正常運行時間(uptime)監控服務。之所沒有任何費用是由於實現方法都是徹底基於 GitHub 提供的免費服務,好比:使用 GitHub 的 Action 每隔 5 分鐘訪問一次目標網站,獲取網站最新的狀態。而後經過 GitHub Issues 記錄和報告異常,最後在 GitHub Pages 上可視化展現網站的運行狀態。就很「綠色無公害」,我特別喜歡
機器學習
3一、examples:關於視覺、本文等方面的 PyTorch 的示例集合。包含:使用 Convnets 的圖像分類(MNIST)、生成對抗網絡(DCGAN)等
3二、EasyOCR:支持多種語言的即用型的 Python OCR 庫,包括中文、日文、韓文等。示例代碼:
import easyocr reader = easyocr.Reader(['ch_sim','en']) # need to run only once to load model into memory result = reader.readtext('chinese.jpg') # 輸出 [([[189, 75], [469, 75], [469, 165], [189, 165]], '愚園路', 0.3754989504814148), ([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436), ([[517, 81], [565, 81], [565, 123], [517, 123]], '東', 0.9989598989486694), ([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049), ([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631), ([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908), ([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215), ([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
3三、DeepLearningProject:哈佛大學開源的深度學習教程
最後
若是你發現了 GitHub 上有趣的項目,歡迎在 HelloGitHub 項目提 issues 告訴咱們。
本文同步分享在 博客"削微寒的程序員之路"(CNBlog)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。