《HelloGitHub》第 43 期
掃描二維碼
隨時隨地手機看文章
興趣是最好的老師,HelloGitHub 就是幫你找到興趣!
簡介
分享 GitHub 上有趣、入門級的開源項目。
這是一個面向編程新手、熱愛編程、對開源社區(qū)感興趣 人群的月刊,月刊的內容包括:各種編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動手用起來,加入到開源社區(qū)中。
會編程的可以貢獻代碼 不會編程的可以反饋使用這些工具中的 Bug 幫著宣傳你覺得優(yōu)秀的項目 Star 項目??
在瀏覽、參與這些項目的過程中,你將學習到更多編程知識、提高編程技巧、找到編程的樂趣。
???? 最后 HelloGitHub[1] 這個項目就誕生了 ????
以下為本期內容|每個月 28 號發(fā)布最新一期|點擊查看往期內容[2]
C 項目
1、tmux:一個終端復用工具,可極大的提高工作效率。
提供了強勁的、易于使用的命令行界面 可橫向和縱向分割窗口 窗格可以自由移動和調整大小,或直接利用四個預設布局之一 可在多個緩沖區(qū)進行復制和粘貼 可通過交互式菜單來選擇窗口、會話及客戶端 等等

長按識別二維碼,直達項目
C# 項目
2、BenchmarkDotNet:功能強大的用于基準測試 .NET 庫
長按識別二維碼,直達項目
C++ 項目
3、CppNet:一個封裝在 Tcp 協(xié)議上的 Proactor 模式 multi-thread 網(wǎng)絡庫。包含 OS 接口調用、回調處理、定時器、緩存管理等,這里有從操作系統(tǒng)到應用層的所有網(wǎng)絡細節(jié),便于初學者學習和實踐。
簡單:只導出了最少量的接口,其聲明都類似系統(tǒng) socket API。對客戶端而言,只新增了一個 buffer 類型 快速:采用性能最優(yōu)的 epoll 和 IOCP 做事件驅動,驚群處理交由內核。每個連接都獨享一個內存池,從內存池中申請的內存都由智能指針管理 清晰:結構上分為事件驅動,會話管理,接口三層,通過回調向上通知。模塊之間職責分工明確,最大的類不超過 500 行代碼
長按識別二維碼,直達項目
4、dbg-macro:打日志是 C++ 開發(fā)中必不可少的一種 debug 方式,dbg-macro受 rust-lang中 的 dbg 啟發(fā),提供比 printf 和 std::cout 更好的宏函數(shù)。主要有如下特點:
美觀的彩色輸出(當輸出不是交互式終端時,顏色將自動禁用) 兼容 C++11,并且是 header-only 支持基礎類型和 STL 容器類型的輸出 除了基本信息外,還輸出變量名和類型 啟用 DBG_MACRO_DISABLE 生成 release 版
// 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;
}
長按識別二維碼,直達項目
5、CppCon2019:C++ 2019 大會的幻燈片和相關材料集合
長按識別二維碼,直達項目
Go 項目
6、RedisShake:阿里開源的用于 redis 數(shù)據(jù)同步的工具。原理圖如下:
長按識別二維碼,直達項目
7、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
12999889 376 ns/op 199 B/op 3 allocs/op
4355726 1275 ns/op 337 B/op 8 allocs/op
11068976 703 ns/op 328 B/op 2 allocs/op
10183717 478 ns/op 304 B/op 2 allocs/op
16536015 324 ns/op 23 B/op 1 allocs/op
13165708 401 ns/op 24 B/op 2 allocs/op
10137682 690 ns/op 136 B/op 2 allocs/op
11423854 450 ns/op 152 B/op 4 allocs/op
34233472 148 ns/op 317 B/op 3 allocs/op
34222654 268 ns/op 350 B/op 3 allocs/op
19635688 240 ns/op 200 B/op 6 allocs/op
60547064 86.1 ns/op 152 B/op 4 allocs/op
50701280 147 ns/op 136 B/op 3 allocs/op
27353288 175 ns/op 24 B/op 2 allocs/op
PASS
ok github.com/allegro/bigcache/v2/caches_bench 256.257s
長按識別二維碼,直達項目
8、pacgo:基于 Go 實現(xiàn)的終端吃豆人游戲
長按識別二維碼,直達項目
9、go-admin:基于 Golang 語言的數(shù)據(jù)可視化與管理平臺。特性如下:
????高生產效率:10 分鐘內做一個好看的管理后臺 ????主題:默認為 adminlte,更多好看的主題正在制作中,歡迎給我們留言 ????插件化:提供插件使用,真正實現(xiàn)一個插件解決不了問題,那就兩個 ?認證:開箱即用的 rbac 認證系統(tǒng) ??框架支持:支持大部分框架接入,讓你更容易去上手和擴展
長按識別二維碼,直達項目
10、zerolog:一個速度快、專門用于輸出 JSON 格式日志的庫。還在為解析不規(guī)則的日志而煩惱嗎?有了 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 項目
11、AutoUpdateProject:一個簡單易用、接入方便、UI 多樣的 Android 內實現(xiàn)在線更新的庫。示例代碼:
//更新庫配置
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 時,設置請求的請求參數(shù)
.setCustomActivityClass(CustomActivity.class)//如果你選擇的 UI 樣式為 TypeConfig.UI_THEME_CUSTOM,那么你需要自定義一個 Activity 繼承自 RootActivity 并參照 demo 實現(xiàn)功能,在此處填寫自定義 Activity 的 class
.setModelClass(new UpdateModel());
AppUpdateUtils.init(this, updateConfig);
長按識別二維碼,直達項目
12、spring-analysis:Spring 框架源碼講解。包括:spring-core、spring-aop、spring-context、spring-taskspring-mvc 等部分
長按識別二維碼,直達項目
13、eladmin:基于 Spring Boot 2.1.0、Vue 的前后端分離的后臺管理系統(tǒng),支持數(shù)據(jù)字典與數(shù)據(jù)權限管理、一鍵生成前后端代碼、前端菜單動態(tài)路由等?;?Spring Boot2.1.0 框架,涉及的技術棧:非關系數(shù)據(jù)庫 redis、接口測試工具 swagger、druid 數(shù)據(jù)源驅動、郵件依賴(javax.mail)、三方支付和云存儲 SDK、頁面模板引擎 freemarker。技術棧豐富,初學者可以作為實戰(zhàn)項目學習和使用
長按識別二維碼,直達項目
JavaScript 項目
14、nzh:阿拉伯數(shù)字與中文數(shù)字相互轉化的 JS 庫。示例代碼如下:
var nzhcn = Nzh.cn; // 使用簡體中文, 另外有 Nzh.hk -- 繁體中文
nzhcn.encodeS(100111); // 轉中文小寫 >> 十萬零一百一十一
nzhcn.encodeB(100111); // 轉中文大寫 >> 壹拾萬零壹佰壹拾壹
nzhcn.encodeS("1.23456789e+21"); // 科學記數(shù)法字符串 >> 十二萬三千四百五十六萬萬七千八百九十萬億
nzhcn.toMoney("100111.11"); // 轉中文金額 >> 人民幣壹拾萬零壹佰壹拾壹元壹角壹分
長按識別二維碼,直達項目
15、request:JavaScript 簡單、易用的 HTTP 請求客戶端。示例代碼:
const request = require('request');
request('https://hellogithub.com', function (error, response, body) {
console.error('error:', error); // 如果請求發(fā)生錯誤將被打印
console.log('statusCode:', response && response.statusCode); // 輸出返回的狀態(tài)碼
console.log('body:', body); // 輸出返回的 HTML
});
長按識別二維碼,直達項目
16、SandDance:微軟開源的數(shù)據(jù)可視化庫。使用單元可視化,將數(shù)據(jù)庫中的行一對一映射到屏幕中。在進行數(shù)據(jù)交互時,視圖可無縫平滑過渡,展示效果炫酷
長按識別二維碼,直達項目
17、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'));
長按識別二維碼,直達項目
18、fiora:一個功能豐富、支持多端的在線聊天室。它界面小清新,支持基本的聊天功能的同時還有好玩的消息朗讀功能。項目上基于 TypeScript + React 16.9 代碼邏輯清晰、注釋較為完善,適合用來學習 node.js、 TypeScript、React 等技術
長按識別二維碼,直達項目
Python 項目
19、TagUI-Python:一個 Python 自動化操作的庫。比如:自動打開網(wǎng)頁并截圖,示例代碼:
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 數(shù)據(jù)庫遷移工具
長按識別二維碼,直達項目
Swift 項目
21、Percent:讓 Swift 語言支持百分比類型,消除精度缺失的煩惱。示例代碼:
import Percent
10% + 5.5%
//=> 15.5%
-10% / 2
//=> -5%
長按識別二維碼,直達項目
其它
22、curlconverter:把 curl 命令轉化成各語言的代碼的工具,支持 Python、JavaScript、PHP、R、Go 等語言。
長按識別二維碼,直達項目
23、hub:通過命令行的方式來操作 GitHub,支持絕大多數(shù)的操作。比如:創(chuàng)建遠程倉庫、刪除遠程倉庫、提交 PR、管理 issue 等,常用操作:
創(chuàng)建遠程倉庫:hub create github-repository 刪除遠程倉庫:hub delete github-repository fork 項目:hub fork

長按識別二維碼,直達項目
24、cascadia-code:微軟開源的一套等寬字體,有趣的是可以組合字符創(chuàng)建新的字形。組合效果如下:
長按識別二維碼,直達項目
25、Administrative-divisions-of-China:中國行政區(qū)劃(五級):省級、地級、縣級、鄉(xiāng)級和村級的數(shù)據(jù)集和爬蟲程序
長按識別二維碼,直達項目
26、vim-airline:一個讓每個 Vim 窗口的底部,都有一個漂亮狀態(tài)行的插件。展示信息和效果如下圖:
長按識別二維碼,直達項目
開源書籍
27、python_ebook:Python 編程相關的電子書資源集合項目
長按識別二維碼,直達項目
28、book:(英文)《Cosmic Python》講述如何管理復雜性的 Pythonic 應用程序結構的書籍
長按識別二維碼,直達項目
教程
29、BigData-Notes:大數(shù)據(jù)入門教程,該教程介紹了大數(shù)據(jù)常用技術棧的基礎和核心知識。內容涵蓋:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等
長按識別二維碼,直達項目
機器學習
30、Ultra-Light-Fast-Generic-Face-Detector-1MB:1MB 大小的輕量級人臉檢測模型。該模型是針對邊緣計算設備,基于 libfacedetection 替換壓縮網(wǎng)絡設計實現(xiàn)
長按識別二維碼,直達項目
31、dimensionality_reduction_alo_codes:該項目使用 Python 實現(xiàn)了 11 種經典的數(shù)據(jù)抽?。〝?shù)據(jù)降維)算法。同時附有相關資料、展示效果,適用于機器學習初學者和剛剛入坑數(shù)據(jù)挖掘的小伙伴
長按識別二維碼,直達項目
參考資料
[1]
HelloGitHub: https://hellogithub.com
[2]
點擊查看往期內容: https://github.com/521xueweihan/HelloGitHub#內容
關注公眾號加入交流群,一起討論有趣的技術話題
如果你發(fā)現(xiàn)了 GitHub 上有趣的項目,歡迎在 HelloGitHub 項目提 issues 告訴我們。
“閱讀原文”獲取更多信息、“在看”讓本文被更多人看到、“贊賞”支持我們。