《HelloGitHub》第 56 期

興趣是最好的老師,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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索