《HelloGitHub》第 43 期

興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript

簡介

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

這是一個面向編程新手熱愛編程對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目讓生活變得更美好的工具書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。前端

  • 會編程的能夠貢獻代碼
  • 不會編程的能夠反饋使用這些工具中的 Bug
  • 幫着宣傳你以爲優秀的項目
  • Star 項目⭐️

在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識提升編程技巧找到編程的樂趣java

🎉 最後 HelloGitHub 這個項目就誕生了 🎉node

內容

如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容python

C 項目

一、tmux:一個終端複用工具,可極大的提升工做效率。react

  • 提供了強勁的、易於使用的命令行界面
  • 可橫向和縱向分割窗口
  • 窗格能夠自由移動和調整大小,或直接利用四個預設佈局之一
  • 可在多個緩衝區進行復制和粘貼
  • 可經過交互式菜單來選擇窗口、會話及客戶端
  • 等等

C# 項目

二、BenchmarkDotNet:功能強大的用於基準測試 .NET 庫linux

C++ 項目

三、CppNet:一個封裝在 Tcp 協議上的 Proactor 模式 multi-thread 網絡庫。包含 OS 接口調用、回調處理、定時器、緩存管理等,這裏有從操做系統到應用層的全部網絡細節,便於初學者學習和實踐。c++

  • 簡單:只導出了最少許的接口,其聲明都相似系統 socket API。對客戶端而言,只新增了一個 buffer 類型
  • 快速:採用性能最優的 epoll 和 IOCP 作事件驅動,驚羣處理交由內核。每一個鏈接都獨享一個內存池,從內存池中申請的內存都由智能指針管理
  • 清晰:結構上分爲事件驅動,會話管理,接口三層,經過回調向上通知。模塊之間職責分工明確,最大的類不超過 500 行代碼

四、dbg-macro:打日誌是 C++ 開發中必不可少的一種 debug 方式,dbg-macrorust-lang 中 的 dbg 啓發,提供比 printf 和 std::cout 更好的宏函數。主要有以下特色:git

  • 美觀的彩色輸出(當輸出不是交互式終端時,顏色將自動禁用)
  • 兼容 C++11,而且是 header-only
  • 支持基礎類型和 STL 容器類型的輸出
  • 除了基本信息外,還輸出變量名和類型
  • 啓用 DBG_MACRO_DISABLE 生成 release 版
#include <vector>
#include <dbg.h>

// You can use "dbg(..)" in expressions:
int factorial(int n) {
  if (dbg(n <= 1)) {
    return dbg(1);
  } else {
    return dbg(n * factorial(n - 1));
  }
}

int main() {
  std::string message = "hello";
  dbg(message);  // [example.cpp:15 (main)] message = "hello" (std::string)
  const int a = 2;
  const int b = dbg(3 * a) + 1;  // [example.cpp:18 (main)] 3 * a = 6 (int)
  std::vector<int> numbers{b, 13, 42};
  dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
  dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed
  factorial(4);
  return 0;
}
複製代碼

五、CppCon2019:C++ 2019 大會的幻燈片和相關材料集合

Go 項目

六、RedisShake:阿里開源的用於 redis 數據同步的工具。原理圖以下:

七、bigcache:基於 Go 語言的高性能大緩存庫。在 Ubuntu 18.04 LTS,機器配置 i7-6700K CPU @ 4.00GHz with 32GB of RAM 上性能測試結果:

go version
go version go1.13 linux/amd64

cd caches_bench; go test -bench=. -benchmem -benchtime=4s ./... -timeout 30m
goos: linux
goarch: amd64
pkg: github.com/allegro/bigcache/v2/caches_bench
BenchmarkMapSet-8                     	12999889	       376 ns/op	     199 B/op	       3 allocs/op
BenchmarkConcurrentMapSet-8           	 4355726	      1275 ns/op	     337 B/op	       8 allocs/op
BenchmarkFreeCacheSet-8               	11068976	       703 ns/op	     328 B/op	       2 allocs/op
BenchmarkBigCacheSet-8                	10183717	       478 ns/op	     304 B/op	       2 allocs/op
BenchmarkMapGet-8                     	16536015	       324 ns/op	      23 B/op	       1 allocs/op
BenchmarkConcurrentMapGet-8           	13165708	       401 ns/op	      24 B/op	       2 allocs/op
BenchmarkFreeCacheGet-8               	10137682	       690 ns/op	     136 B/op	       2 allocs/op
BenchmarkBigCacheGet-8                	11423854	       450 ns/op	     152 B/op	       4 allocs/op
BenchmarkBigCacheSetParallel-8        	34233472	       148 ns/op	     317 B/op	       3 allocs/op
BenchmarkFreeCacheSetParallel-8       	34222654	       268 ns/op	     350 B/op	       3 allocs/op
BenchmarkConcurrentMapSetParallel-8   	19635688	       240 ns/op	     200 B/op	       6 allocs/op
BenchmarkBigCacheGetParallel-8        	60547064	        86.1 ns/op	     152 B/op	       4 allocs/op
BenchmarkFreeCacheGetParallel-8       	50701280	       147 ns/op	     136 B/op	       3 allocs/op
BenchmarkConcurrentMapGetParallel-8   	27353288	       175 ns/op	      24 B/op	       2 allocs/op
PASS
ok  	github.com/allegro/bigcache/v2/caches_bench	256.257s
複製代碼

八、pacgo:基於 Go 實現的終端吃豆人遊戲

九、go-admin:基於 Golang 語言的數據可視化與管理平臺。特性以下:

  • 🚀高生產效率:10 分鐘內作一個好看的管理後臺
  • 🎨主題:默認爲 adminlte,更多好看的主題正在製做中,歡迎給咱們留言
  • 🔢插件化:提供插件使用,真正實現一個插件解決不了問題,那就兩個
  • ✅認證:開箱即用的 rbac 認證系統
  • ⚙️框架支持:支持大部分框架接入,讓你更容易去上手和擴展

十、zerolog:一個速度快、專門用於輸出 JSON 格式日誌的庫。還在爲解析不規則的日誌而煩惱嗎?有了 zerolog 你能夠跳起來了!固然它還有低效但可在控制檯輸出漂亮日誌的模式,快去試試吧。示例代碼:

ackage main

import (
    "github.com/rs/zerolog"
    "github.com/rs/zerolog/log"
)

func main() {
    zerolog.TimeFieldFormat = zerolog.TimeFormatUnix

    log.Info().Msg("hello world")
}

// Output: {"time":1516134303,"level":"info","message":"hello world"}
複製代碼

Java 項目

十一、AutoUpdateProject:一個簡單易用、接入方便、UI 多樣的 Android 內實如今線更新的庫。示例代碼:

//更新庫配置
UpdateConfig updateConfig = new UpdateConfig()
        .setDebug(true)//是不是Debug模式
        .setBaseUrl("http://www.cretinzp.com/system/versioninfo")//當 dataSourceType 爲 DATA_SOURCE_TYPE_URL 時,配置此接口用於獲取更新信息
        .setMethodType(TypeConfig.METHOD_GET)//當 dataSourceType 爲 DATA_SOURCE_TYPE_URL 時,設置請求的方法
        .setDataSourceType(TypeConfig.DATA_SOURCE_TYPE_URL)//設置獲取更新信息的方式
        .setShowNotification(true)//配置更新的過程當中是否在通知欄顯示進度
        .setNotificationIconRes(R.mipmap.download_icon)//配置通知欄顯示的圖標
        .setUiThemeType(TypeConfig.UI_THEME_AUTO)//配置 UI 的樣式,一種有 12 種樣式可供選擇
        .setRequestHeaders(null)//當 dataSourceType 爲 DATA_SOURCE_TYPE_URL 時,設置請求的請求頭
        .setRequestParams(null)//當 dataSourceType 爲 DATA_SOURCE_TYPE_URL 時,設置請求的請求參數
        .setCustomActivityClass(CustomActivity.class)//若是你選擇的 UI 樣式爲 TypeConfig.UI_THEME_CUSTOM,那麼你須要自定義一個 Activity 繼承自 RootActivity 並參照 demo 實現功能,在此處填寫自定義 Activity 的 class
        .setModelClass(new UpdateModel());
AppUpdateUtils.init(this, updateConfig);
複製代碼

十二、spring-analysis:Spring 框架源碼講解。包括:spring-core、spring-aop、spring-context、spring-taskspring-mvc 等部分

1三、eladmin:基於 Spring Boot 2.1.0、Vue 的先後端分離的後臺管理系統,支持數據字典與數據權限管理、一鍵生成先後端代碼、前端菜單動態路由等。基於 Spring Boot2.1.0 框架,涉及的技術棧:非關係數據庫 redis、接口測試工具 swagger、druid 數據源驅動、郵件依賴(javax.mail)、三方支付和雲存儲 SDK、頁面模板引擎 freemarker。技術棧豐富,初學者能夠做爲實戰項目學習和使用

JavaScript 項目

1四、nzh:阿拉伯數字與中文數字相互轉化的 JS 庫。示例代碼以下:

var nzhcn = Nzh.cn;                 // 使用簡體中文, 另外有 Nzh.hk -- 繁體中文
nzhcn.encodeS(100111);              // 轉中文小寫 >> 十萬零一百一十一
nzhcn.encodeB(100111);              // 轉中文大寫 >> 壹拾萬零壹佰壹拾壹
nzhcn.encodeS("1.23456789e+21");    // 科學記數法字符串 >> 十二萬三千四百五十六萬萬七千八百九十萬億
nzhcn.toMoney("100111.11");         // 轉中文金額 >> 人民幣壹拾萬零壹佰壹拾壹元壹角壹分
複製代碼

1五、request: JavaScript 簡單、易用的 HTTP 請求客戶端。示例代碼:

const request = require('request');
request('https://hellogithub.com', function (error, response, body) {
  console.error('error:', error); // 若是請求發生錯誤將被打印
  console.log('statusCode:', response && response.statusCode); // 輸出返回的狀態碼
  console.log('body:', body); // 輸出返回的 HTML 
});
複製代碼

1六、SandDance:微軟開源的數據可視化庫。使用單元可視化,將數據庫中的行一對一映射到屏幕中。在進行數據交互時,視圖可無縫平滑過渡,展現效果炫酷

1七、chart-race-react:一個簡單易用的 Bar Chart Race(長條圖賽跑動畫) React 組件。示例代碼:

import ReactDOM from 'react-dom';
import BarChart from 'chart-race-react';

ReactDOM.render(<BarChart ></BarChart>, document.getElementById('root'));
複製代碼

1八、fiora:一個功能豐富、支持多端的在線聊天室。它界面小清新,支持基本的聊天功能的同時還有好玩的消息朗讀功能。項目上基於 TypeScript + React 16.9 代碼邏輯清晰、註釋較爲完善,適合用來學習 node.js、 TypeScript、React 等技術

Python 項目

1九、TagUI-Python:一個 Python 自動化操做的庫。好比:自動打開網頁並截圖,示例代碼:

t.init()
t.url('https://www.google.com')
t.type('q', 'decentralization[enter]')
t.snap('page', 'results.png')
t.close()
複製代碼

Ruby 項目

20、shift:一個 Ruby 語言寫的在線 MySQL 數據庫遷移工具

Swift 項目

2一、Percent:讓 Swift 語言支持百分比類型,消除精度缺失的煩惱。示例代碼:

import Percent

10% + 5.5%
//=> 15.5%
-10% / 2
//=> -5%
複製代碼

其它

2二、curlconverter:把 curl 命令轉化成各語言的代碼的工具,支持 Python、JavaScript、PHP、R、Go 等語言。在線體驗

2三、hub:經過命令行的方式來操做 GitHub,支持絕大多數的操做。好比:建立遠程倉庫、刪除遠程倉庫、提交 PR、管理 issue 等,經常使用操做:

  • 建立遠程倉庫:hub create github-repository
  • 刪除遠程倉庫:hub delete github-repository
  • fork 項目:hub fork

2四、cascadia-code:微軟開源的一套等寬字體,有趣的是能夠組合字符建立新的字形。組合效果以下:

2五、Administrative-divisions-of-China:中國行政區劃(五級):省級、地級、縣級、鄉級和村級的數據集和爬蟲程序

2六、vim-airline:一個讓每一個 Vim 窗口的底部,都有一個漂亮狀態行的插件。展現信息和效果以下圖:

開源書籍

2七、python_ebook:Python 編程相關的電子書資源集合項目

2八、book:(英文)《Cosmic Python》講述如何管理複雜性的 Pythonic 應用程序結構的書籍

教程

2九、BigData-Notes:大數據入門教程,該教程介紹了大數據經常使用技術棧的基礎和核心知識。內容涵蓋:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等

機器學習

30、Ultra-Light-Fast-Generic-Face-Detector-1MB:1MB 大小的輕量級人臉檢測模型。該模型是針對邊緣計算設備,基於 libfacedetection 替換壓縮網絡設計實現

3一、dimensionality_reduction_alo_codes:該項目使用 Python 實現了 11 種經典的數據抽取(數據降維)算法。同時附有相關資料、展現效果,適用於機器學習初學者和剛剛入坑數據挖掘的小夥伴


「看完了,還不夠?<往期內容> | 還不過癮,那就看看天天更新的前端日報吧 <今日前端>

若是你發現了好玩、有意義的開源項目 點擊這裏 分享你以爲有趣的項目。

最後

若是你發現了 GitHub 上有趣的項目,歡迎在 HelloGitHub 項目提 issues 告訴咱們。

相關文章
相關標籤/搜索