興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript
分享 GitHub 上有趣、入門級的開源項目。html
這是一個面向編程新手、熱愛編程、對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。前端
在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識、提升編程技巧、找到編程的樂趣。java
🎉 最後 HelloGitHub 這個項目就誕生了 🎉node
如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容python
一、tmux:一個終端複用工具,可極大的提升工做效率。react
二、BenchmarkDotNet:功能強大的用於基準測試 .NET 庫linux
三、CppNet:一個封裝在 Tcp 協議上的 Proactor 模式 multi-thread 網絡庫。包含 OS 接口調用、回調處理、定時器、緩存管理等,這裏有從操做系統到應用層的全部網絡細節,便於初學者學習和實踐。c++
四、dbg-macro:打日誌是 C++ 開發中必不可少的一種 debug 方式,dbg-macro 受 rust-lang 中 的 dbg 啓發,提供比 printf 和 std::cout 更好的宏函數。主要有以下特色:git
#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 大會的幻燈片和相關材料集合
六、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 語言的數據可視化與管理平臺。特性以下:
十、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"}
複製代碼
十一、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。技術棧豐富,初學者能夠做爲實戰項目學習和使用
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 等技術
1九、TagUI-Python:一個 Python 自動化操做的庫。好比:自動打開網頁並截圖,示例代碼:
t.init()
t.url('https://www.google.com')
t.type('q', 'decentralization[enter]')
t.snap('page', 'results.png')
t.close()
複製代碼
20、shift:一個 Ruby 語言寫的在線 MySQL 數據庫遷移工具
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 等,經常使用操做:
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 告訴咱們。