當(dāng)前位置:首頁 > > HelloGitHub

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

簡介

分享 GitHub 上有趣、入門級(jí)的開源項(xiàng)目。

這是一個(gè)面向編程新手熱愛編程、對(duì)開源社區(qū)感興趣 人群的月刊,月刊的內(nèi)容包括:各種編程語言的項(xiàng)目、讓生活變得更美好的工具、書籍、學(xué)習(xí)筆記、教程等,這些開源項(xiàng)目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動(dòng)手用起來,加入到開源社區(qū)中。

  • 會(huì)編程的可以貢獻(xiàn)代碼
  • 不會(huì)編程的可以反饋使用這些工具中的 Bug
  • 幫著宣傳你覺得優(yōu)秀的項(xiàng)目
  • Star 項(xiàng)目??

在瀏覽、參與這些項(xiàng)目的過程中,你將學(xué)習(xí)到更多編程知識(shí)、提高編程技巧、找到編程的樂趣。

???? 最后 HelloGitHub[1] 這個(gè)項(xiàng)目就誕生了 ????


以下為本期內(nèi)容|每個(gè)月 28 號(hào)發(fā)布最新一期|點(diǎn)擊查看往期內(nèi)容[2]

C 項(xiàng)目

1、tmux:一個(gè)終端復(fù)用工具,可極大的提高工作效率。

  • 提供了強(qiáng)勁的、易于使用的命令行界面
  • 可橫向和縱向分割窗口
  • 窗格可以自由移動(dòng)和調(diào)整大小,或直接利用四個(gè)預(yù)設(shè)布局之一
  • 可在多個(gè)緩沖區(qū)進(jìn)行復(fù)制和粘貼
  • 可通過交互式菜單來選擇窗口、會(huì)話及客戶端
  • 等等


長按識(shí)別二維碼,直達(dá)項(xiàng)目

C# 項(xiàng)目

2、BenchmarkDotNet:功能強(qiáng)大的用于基準(zhǔn)測試 .NET 庫

長按識(shí)別二維碼,直達(dá)項(xiàng)目

C++ 項(xiàng)目

3、CppNet:一個(gè)封裝在 Tcp 協(xié)議上的 Proactor 模式 multi-thread 網(wǎng)絡(luò)庫。包含 OS 接口調(diào)用、回調(diào)處理、定時(shí)器、緩存管理等,這里有從操作系統(tǒng)到應(yīng)用層的所有網(wǎng)絡(luò)細(xì)節(jié),便于初學(xué)者學(xué)習(xí)和實(shí)踐。

  • 簡單:只導(dǎo)出了最少量的接口,其聲明都類似系統(tǒng) socket API。對(duì)客戶端而言,只新增了一個(gè) buffer 類型
  • 快速:采用性能最優(yōu)的 epoll 和 IOCP 做事件驅(qū)動(dòng),驚群處理交由內(nèi)核。每個(gè)連接都獨(dú)享一個(gè)內(nèi)存池,從內(nèi)存池中申請的內(nèi)存都由智能指針管理
  • 清晰:結(jié)構(gòu)上分為事件驅(qū)動(dòng),會(huì)話管理,接口三層,通過回調(diào)向上通知。模塊之間職責(zé)分工明確,最大的類不超過 500 行代碼


長按識(shí)別二維碼,直達(dá)項(xiàng)目

4、dbg-macro:打日志是 C++ 開發(fā)中必不可少的一種 debug 方式,dbg-macrorust-lang中 的 dbg 啟發(fā),提供比 printf 和 std::cout 更好的宏函數(shù)。主要有如下特點(diǎn):

  • 美觀的彩色輸出(當(dāng)輸出不是交互式終端時(shí),顏色將自動(dòng)禁用)
  • 兼容 C++11,并且是 header-only
  • 支持基礎(chǔ)類型和 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;}

長按識(shí)別二維碼,直達(dá)項(xiàng)目


5、CppCon2019:C++ 2019 大會(huì)的幻燈片和相關(guān)材料集合

長按識(shí)別二維碼,直達(dá)項(xiàng)目

Go 項(xiàng)目

6、RedisShake:阿里開源的用于 redis 數(shù)據(jù)同步的工具。原理圖如下:

長按識(shí)別二維碼,直達(dá)項(xiàng)目

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

go versiongo version go1.13 linux/amd64
cd caches_bench; go test -bench=. -benchmem -benchtime=4s ./... -timeout 30mgoos: linuxgoarch: amd64pkg: github.com/allegro/bigcache/v2/caches_benchBenchmarkMapSet-8 12999889 376 ns/op 199 B/op 3 allocs/opBenchmarkConcurrentMapSet-8 4355726 1275 ns/op 337 B/op 8 allocs/opBenchmarkFreeCacheSet-8 11068976 703 ns/op 328 B/op 2 allocs/opBenchmarkBigCacheSet-8 10183717 478 ns/op 304 B/op 2 allocs/opBenchmarkMapGet-8 16536015 324 ns/op 23 B/op 1 allocs/opBenchmarkConcurrentMapGet-8 13165708 401 ns/op 24 B/op 2 allocs/opBenchmarkFreeCacheGet-8 10137682 690 ns/op 136 B/op 2 allocs/opBenchmarkBigCacheGet-8 11423854 450 ns/op 152 B/op 4 allocs/opBenchmarkBigCacheSetParallel-8 34233472 148 ns/op 317 B/op 3 allocs/opBenchmarkFreeCacheSetParallel-8 34222654 268 ns/op 350 B/op 3 allocs/opBenchmarkConcurrentMapSetParallel-8 19635688 240 ns/op 200 B/op 6 allocs/opBenchmarkBigCacheGetParallel-8 60547064 86.1 ns/op 152 B/op 4 allocs/opBenchmarkFreeCacheGetParallel-8 50701280 147 ns/op 136 B/op 3 allocs/opBenchmarkConcurrentMapGetParallel-8 27353288 175 ns/op 24 B/op 2 allocs/opPASSok    github.com/allegro/bigcache/v2/caches_bench  256.257s

長按識(shí)別二維碼,直達(dá)項(xiàng)目

8、pacgo:基于 Go 實(shí)現(xiàn)的終端吃豆人游戲

長按識(shí)別二維碼,直達(dá)項(xiàng)目

9、go-admin:基于 Golang 語言的數(shù)據(jù)可視化與管理平臺(tái)。特性如下:

  • ????高生產(chǎn)效率:10 分鐘內(nèi)做一個(gè)好看的管理后臺(tái)
  • ????主題:默認(rèn)為 adminlte,更多好看的主題正在制作中,歡迎給我們留言
  • ????插件化:提供插件使用,真正實(shí)現(xiàn)一個(gè)插件解決不了問題,那就兩個(gè)
  • ?認(rèn)證:開箱即用的 rbac 認(rèn)證系統(tǒng)
  • ??框架支持:支持大部分框架接入,讓你更容易去上手和擴(kuò)展


長按識(shí)別二維碼,直達(dá)項(xiàng)目

10、zerolog:一個(gè)速度快、專門用于輸出 JSON 格式日志的庫。還在為解析不規(guī)則的日志而煩惱嗎?有了 zerolog 你可以跳起來了!當(dāng)然它還有低效但可在控制臺(tái)輸出漂亮日志的模式,快去試試吧。示例代碼:

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"}

長按識(shí)別二維碼,直達(dá)項(xiàng)目

Java 項(xiàng)目

11、AutoUpdateProject:一個(gè)簡單易用、接入方便、UI 多樣的 Android 內(nèi)實(shí)現(xiàn)在線更新的庫。示例代碼:

//更新庫配置UpdateConfig updateConfig = new UpdateConfig()        .setDebug(true)//是否是Debug模式        .setBaseUrl("http://www.cretinzp.com/system/versioninfo")//當(dāng) dataSourceType 為 DATA_SOURCE_TYPE_URL 時(shí),配置此接口用于獲取更新信息        .setMethodType(TypeConfig.METHOD_GET)//當(dāng) dataSourceType 為 DATA_SOURCE_TYPE_URL 時(shí),設(shè)置請求的方法        .setDataSourceType(TypeConfig.DATA_SOURCE_TYPE_URL)//設(shè)置獲取更新信息的方式        .setShowNotification(true)//配置更新的過程中是否在通知欄顯示進(jìn)度        .setNotificationIconRes(R.mipmap.download_icon)//配置通知欄顯示的圖標(biāo)        .setUiThemeType(TypeConfig.UI_THEME_AUTO)//配置 UI 的樣式,一種有 12 種樣式可供選擇        .setRequestHeaders(null)//當(dāng) dataSourceType 為 DATA_SOURCE_TYPE_URL 時(shí),設(shè)置請求的請求頭        .setRequestParams(null)//當(dāng) dataSourceType 為 DATA_SOURCE_TYPE_URL 時(shí),設(shè)置請求的請求參數(shù)        .setCustomActivityClass(CustomActivity.class)//如果你選擇的 UI 樣式為 TypeConfig.UI_THEME_CUSTOM,那么你需要自定義一個(gè) Activity 繼承自 RootActivity 并參照 demo 實(shí)現(xiàn)功能,在此處填寫自定義 Activity 的 class        .setModelClass(new UpdateModel());AppUpdateUtils.init(this, updateConfig);

長按識(shí)別二維碼,直達(dá)項(xiàng)目


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

長按識(shí)別二維碼,直達(dá)項(xiàng)目


13、eladmin:基于 Spring Boot 2.1.0、Vue 的前后端分離的后臺(tái)管理系統(tǒng),支持?jǐn)?shù)據(jù)字典與數(shù)據(jù)權(quán)限管理、一鍵生成前后端代碼、前端菜單動(dòng)態(tài)路由等?;?Spring Boot2.1.0 框架,涉及的技術(shù)棧:非關(guān)系數(shù)據(jù)庫 redis、接口測試工具 swagger、druid 數(shù)據(jù)源驅(qū)動(dòng)、郵件依賴(javax.mail)、三方支付和云存儲(chǔ) SDK、頁面模板引擎 freemarker。技術(shù)棧豐富,初學(xué)者可以作為實(shí)戰(zhàn)項(xiàng)目學(xué)習(xí)和使用

長按識(shí)別二維碼,直達(dá)項(xiàng)目


JavaScript 項(xiàng)目

14、nzh:阿拉伯?dāng)?shù)字與中文數(shù)字相互轉(zhuǎn)化的 JS 庫。示例代碼如下:

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

長按識(shí)別二維碼,直達(dá)項(xiàng)目

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

const request = require('request');request('https://hellogithub.com', function (error, response, body) {  console.error('error:', error); // 如果請求發(fā)生錯(cuò)誤將被打印  console.log('statusCode:', response && response.statusCode); // 輸出返回的狀態(tài)碼  console.log('body:', body); // 輸出返回的 HTML });

長按識(shí)別二維碼,直達(dá)項(xiàng)目

16、SandDance:微軟開源的數(shù)據(jù)可視化庫。使用單元可視化,將數(shù)據(jù)庫中的行一對(duì)一映射到屏幕中。在進(jìn)行數(shù)據(jù)交互時(shí),視圖可無縫平滑過渡,展示效果炫酷

長按識(shí)別二維碼,直達(dá)項(xiàng)目

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

import ReactDOM from 'react-dom';import BarChart from 'chart-race-react';
ReactDOM.render(<BarChart ></BarChart>document.getElementById('root'));

長按識(shí)別二維碼,直達(dá)項(xiàng)目

18、fiora:一個(gè)功能豐富、支持多端的在線聊天室。它界面小清新,支持基本的聊天功能的同時(shí)還有好玩的消息朗讀功能。項(xiàng)目上基于 TypeScript + React 16.9 代碼邏輯清晰、注釋較為完善,適合用來學(xué)習(xí) node.js、 TypeScript、React 等技術(shù)

長按識(shí)別二維碼,直達(dá)項(xiàng)目


Python 項(xiàng)目

19、TagUI-Python:一個(gè) Python 自動(dòng)化操作的庫。比如:自動(dòng)打開網(wǎng)頁并截圖,示例代碼:

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

長按識(shí)別二維碼,直達(dá)項(xiàng)目


Ruby 項(xiàng)目

20、shift:一個(gè) Ruby 語言寫的在線 MySQL 數(shù)據(jù)庫遷移工具


長按識(shí)別二維碼,直達(dá)項(xiàng)目


Swift 項(xiàng)目

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

import Percent
10% + 5.5%//=> 15.5%-10% / 2//=> -5%

長按識(shí)別二維碼,直達(dá)項(xiàng)目

其它

22、curlconverter:把 curl 命令轉(zhuǎn)化成各語言的代碼的工具,支持 Python、JavaScript、PHP、R、Go 等語言。

長按識(shí)別二維碼,直達(dá)項(xiàng)目


23、hub:通過命令行的方式來操作 GitHub,支持絕大多數(shù)的操作。比如:創(chuàng)建遠(yuǎn)程倉庫、刪除遠(yuǎn)程倉庫、提交 PR、管理 issue 等,常用操作:

  • 創(chuàng)建遠(yuǎn)程倉庫:hub create github-repository
  • 刪除遠(yuǎn)程倉庫:hub delete github-repository
  • fork 項(xiàng)目:hub fork

長按識(shí)別二維碼,直達(dá)項(xiàng)目

24、cascadia-code:微軟開源的一套等寬字體,有趣的是可以組合字符創(chuàng)建新的字形。組合效果如下:

長按識(shí)別二維碼,直達(dá)項(xiàng)目

25、Administrative-divisions-of-China:中國行政區(qū)劃(五級(jí)):省級(jí)、地級(jí)、縣級(jí)、鄉(xiāng)級(jí)和村級(jí)的數(shù)據(jù)集和爬蟲程序

長按識(shí)別二維碼,直達(dá)項(xiàng)目

26、vim-airline:一個(gè)讓每個(gè) Vim 窗口的底部,都有一個(gè)漂亮狀態(tài)行的插件。展示信息和效果如下圖:

長按識(shí)別二維碼,直達(dá)項(xiàng)目


源書籍

27、python_ebook:Python 編程相關(guān)的電子書資源集合項(xiàng)目

長按識(shí)別二維碼,直達(dá)項(xiàng)目

28、book:(英文)《Cosmic Python》講述如何管理復(fù)雜性的 Pythonic 應(yīng)用程序結(jié)構(gòu)的書籍

長按識(shí)別二維碼,直達(dá)項(xiàng)目

教程

29、BigData-Notes:大數(shù)據(jù)入門教程,該教程介紹了大數(shù)據(jù)常用技術(shù)棧的基礎(chǔ)和核心知識(shí)。內(nèi)容涵蓋:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等

長按識(shí)別二維碼,直達(dá)項(xiàng)目

機(jī)器學(xué)習(xí)

30、Ultra-Light-Fast-Generic-Face-Detector-1MB:1MB 大小的輕量級(jí)人臉檢測模型。該模型是針對(duì)邊緣計(jì)算設(shè)備,基于 libfacedetection 替換壓縮網(wǎng)絡(luò)設(shè)計(jì)實(shí)現(xiàn)

長按識(shí)別二維碼,直達(dá)項(xiàng)目

31、dimensionality_reduction_alo_codes:該項(xiàng)目使用 Python 實(shí)現(xiàn)了 11 種經(jīng)典的數(shù)據(jù)抽?。〝?shù)據(jù)降維)算法。同時(shí)附有相關(guān)資料、展示效果,適用于機(jī)器學(xué)習(xí)初學(xué)者和剛剛?cè)肟訑?shù)據(jù)挖掘的小伙伴

長按識(shí)別二維碼,直達(dá)項(xiàng)目

參考資料

[1]HelloGitHub: https://hellogithub.com
[2]點(diǎn)擊查看往期內(nèi)容: https://github.com/521xueweihan/HelloGitHub#內(nèi)容


關(guān)注公眾號(hào)加入交流群,一起討論有趣的技術(shù)話題


如果你發(fā)現(xiàn)了 GitHub 上有趣的項(xiàng)目,歡迎在 HelloGitHub 項(xiàng)目提 issues 告訴我們。


“閱讀原文”獲取更多信息、“在看”讓本文被更多人看到、“贊賞”支持我們。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉