《HelloGitHub》第 43 期

兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!

《HelloGitHub》第 43 期_第1张图片

简介

分享 GitHub 上有趣、入门级的开源项目。

这是一个面向编程新手热爱编程对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目让生活变得更美好的工具书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。

  • 会编程的可以贡献代码
  • 不会编程的可以反馈使用这些工具中的 Bug
  • 帮着宣传你觉得优秀的项目
  • Star 项目⭐️

在浏览、参与这些项目的过程中,你将学习到更多编程知识提高编程技巧找到编程的乐趣

? 最后 HelloGitHub[1] 这个项目就诞生了 ?


以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容[2]

C 项目

1、tmux:一个终端复用工具,可极大的提高工作效率。

  • 提供了强劲的、易于使用的命令行界面
  • 可横向和纵向分割窗口
  • 窗格可以自由移动和调整大小,或直接利用四个预设布局之一
  • 可在多个缓冲区进行复制和粘贴
  • 可通过交互式菜单来选择窗口、会话及客户端
  • 等等

《HelloGitHub》第 43 期_第2张图片

《HelloGitHub》第 43 期_第3张图片

长按识别二维码,直达项目

C# 项目

2、BenchmarkDotNet:功能强大的用于基准测试 .NET 库

《HelloGitHub》第 43 期_第4张图片

《HelloGitHub》第 43 期_第5张图片长按识别二维码,直达项目

C++ 项目

3、CppNet:一个封装在 Tcp 协议上的 Proactor 模式 multi-thread 网络库。包含 OS 接口调用、回调处理、定时器、缓存管理等,这里有从操作系统到应用层的所有网络细节,便于初学者学习和实践。

  • 简单:只导出了最少量的接口,其声明都类似系统 socket API。对客户端而言,只新增了一个 buffer 类型
  • 快速:采用性能最优的 epoll 和 IOCP 做事件驱动,惊群处理交由内核。每个连接都独享一个内存池,从内存池中申请的内存都由智能指针管理
  • 清晰:结构上分为事件驱动,会话管理,接口三层,通过回调向上通知。模块之间职责分工明确,最大的类不超过 500 行代码

《HelloGitHub》第 43 期_第6张图片

长按识别二维码,直达项目

4、dbg-macro:打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macrorust-lang中 的 dbg 启发,提供比 printf 和 std::cout 更好的宏函数。主要有如下特点:

  • 美观的彩色输出(当输出不是交互式终端时,颜色将自动禁用)
  • 兼容 C++11,并且是 header-only
  • 支持基础类型和 STL 容器类型的输出
  • 除了基本信息外,还输出变量名和类型
  • 启用 DBG_MACRO_DISABLE 生成 release 版
#include #include 
// 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 numbers{b, 13, 42};  dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector)  dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed  factorial(4);  return 0;}	
#include 	
#include 	

	
// 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 numbers{b, 13, 42};	
  dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector)	
  dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed	
  factorial(4);	
  return 0;	
}

《HelloGitHub》第 43 期_第7张图片

《HelloGitHub》第 43 期_第8张图片

长按识别二维码,直达项目

5、CppCon2019:C++ 2019 大会的幻灯片和相关材料集合

《HelloGitHub》第 43 期_第9张图片

长按识别二维码,直达项目

Go 项目

6、RedisShake:阿里开源的用于 redis 数据同步的工具。原理图如下:

《HelloGitHub》第 43 期_第10张图片

《HelloGitHub》第 43 期_第11张图片

长按识别二维码,直达项目

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

《HelloGitHub》第 43 期_第12张图片

长按识别二维码,直达项目

8、pacgo:基于 Go 实现的终端吃豆人游戏

《HelloGitHub》第 43 期_第13张图片

《HelloGitHub》第 43 期_第14张图片

长按识别二维码,直达项目

9、go-admin:基于 Golang 语言的数据可视化与管理平台。特性如下:

  • ?高生产效率:10 分钟内做一个好看的管理后台
  • ?主题:默认为 adminlte,更多好看的主题正在制作中,欢迎给我们留言
  • ?插件化:提供插件使用,真正实现一个插件解决不了问题,那就两个
  • ✅认证:开箱即用的 rbac 认证系统
  • ⚙️框架支持:支持大部分框架接入,让你更容易去上手和扩展

《HelloGitHub》第 43 期_第15张图片

《HelloGitHub》第 43 期_第16张图片

长按识别二维码,直达项目

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

《HelloGitHub》第 43 期_第17张图片

《HelloGitHub》第 43 期_第18张图片

长按识别二维码,直达项目

Java 项目

11、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);

《HelloGitHub》第 43 期_第19张图片

《HelloGitHub》第 43 期_第20张图片

长按识别二维码,直达项目

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

《HelloGitHub》第 43 期_第21张图片

长按识别二维码,直达项目

13、eladmin:基于 Spring Boot 2.1.0、Vue 的前后端分离的后台管理系统,支持数据字典与数据权限管理、一键生成前后端代码、前端菜单动态路由等。基于 Spring Boot2.1.0 框架,涉及的技术栈:非关系数据库 redis、接口测试工具 swagger、druid 数据源驱动、邮件依赖(javax.mail)、三方支付和云存储 SDK、页面模板引擎 freemarker。技术栈丰富,初学者可以作为实战项目学习和使用

《HelloGitHub》第 43 期_第22张图片

《HelloGitHub》第 43 期_第23张图片

长按识别二维码,直达项目

JavaScript 项目

14、nzh:阿拉伯数字与中文数字相互转化的 JS 库。示例代码如下:

var nzhcn = Nzh.cn;                 // 使用简体中文,  另外有 Nzh.hk -- 繁体中文	
nzhcn.encodeS(100111);              // 转中文小写 >> 十万零一百一十一	
nzhcn.encodeB(100111);              // 转中文大写 >> 壹拾万零壹佰壹拾壹	
nzhcn.encodeS("1.23456789e+21");    // 科学记数法字符串 >> 十二万三千四百五十六万万七千八百九十万亿	
nzhcn.toMoney("100111.11");         // 转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分

《HelloGitHub》第 43 期_第24张图片

长按识别二维码,直达项目

15、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 	
});

《HelloGitHub》第 43 期_第25张图片

长按识别二维码,直达项目

16、SandDance:微软开源的数据可视化库。使用单元可视化,将数据库中的行一对一映射到屏幕中。在进行数据交互时,视图可无缝平滑过渡,展示效果炫酷

《HelloGitHub》第 43 期_第26张图片

长按识别二维码,直达项目

17、chart-race-react:一个简单易用的 Bar Chart Race(长条图赛跑动画) React 组件。示例代码:

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

	
ReactDOM.render(, document.getElementById('root'));

《HelloGitHub》第 43 期_第27张图片

长按识别二维码,直达项目

18、fiora:一个功能丰富、支持多端的在线聊天室。它界面小清新,支持基本的聊天功能的同时还有好玩的消息朗读功能。项目上基于 TypeScript + React 16.9 代码逻辑清晰、注释较为完善,适合用来学习 node.js、 TypeScript、React 等技术

《HelloGitHub》第 43 期_第28张图片

《HelloGitHub》第 43 期_第29张图片

长按识别二维码,直达项目

Python 项目

19、TagUI-Python:一个 Python 自动化操作的库。比如:自动打开网页并截图,示例代码:

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

《HelloGitHub》第 43 期_第30张图片

长按识别二维码,直达项目

Ruby 项目

20、shift:一个 Ruby 语言写的在线 MySQL 数据库迁移工具

《HelloGitHub》第 43 期_第31张图片

《HelloGitHub》第 43 期_第32张图片

长按识别二维码,直达项目

Swift 项目

21、Percent:让 Swift 语言支持百分比类型,消除精度缺失的烦恼。示例代码:

import Percent	

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

《HelloGitHub》第 43 期_第33张图片

长按识别二维码,直达项目

其它

22、curlconverter:把 curl 命令转化成各语言的代码的工具,支持 Python、JavaScript、PHP、R、Go 等语言。

《HelloGitHub》第 43 期_第34张图片

长按识别二维码,直达项目

23、hub:通过命令行的方式来操作 GitHub,支持绝大多数的操作。比如:创建远程仓库、删除远程仓库、提交 PR、管理 issue 等,常用操作:

  • 创建远程仓库:hub create github-repository
  • 删除远程仓库:hub delete github-repository
  • fork 项目:hub fork
640?wx_fmt=png

《HelloGitHub》第 43 期_第35张图片

长按识别二维码,直达项目

24、cascadia-code:微软开源的一套等宽字体,有趣的是可以组合字符创建新的字形。组合效果如下:

640?wx_fmt=gif

《HelloGitHub》第 43 期_第36张图片

长按识别二维码,直达项目

25、Administrative-divisions-of-China:中国行政区划(五级):省级、地级、县级、乡级和村级的数据集和爬虫程序

《HelloGitHub》第 43 期_第37张图片

长按识别二维码,直达项目

26、vim-airline:一个让每个 Vim 窗口的底部,都有一个漂亮状态行的插件。展示信息和效果如下图:

《HelloGitHub》第 43 期_第38张图片

长按识别二维码,直达项目

源书籍

27、python_ebook:Python 编程相关的电子书资源集合项目

《HelloGitHub》第 43 期_第39张图片

长按识别二维码,直达项目

28、book:(英文)《Cosmic Python》讲述如何管理复杂性的 Pythonic 应用程序结构的书籍

《HelloGitHub》第 43 期_第40张图片

长按识别二维码,直达项目

教程

29、BigData-Notes:大数据入门教程,该教程介绍了大数据常用技术栈的基础和核心知识。内容涵盖:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等

《HelloGitHub》第 43 期_第41张图片

长按识别二维码,直达项目

机器学习

30、Ultra-Light-Fast-Generic-Face-Detector-1MB:1MB 大小的轻量级人脸检测模型。该模型是针对边缘计算设备,基于 libfacedetection 替换压缩网络设计实现

《HelloGitHub》第 43 期_第42张图片

《HelloGitHub》第 43 期_第43张图片

长按识别二维码,直达项目

31、dimensionality_reduction_alo_codes:该项目使用 Python 实现了 11 种经典的数据抽取(数据降维)算法。同时附有相关资料、展示效果,适用于机器学习初学者和刚刚入坑数据挖掘的小伙伴

《HelloGitHub》第 43 期_第44张图片

《HelloGitHub》第 43 期_第45张图片

长按识别二维码,直达项目

参考资料

[1]HelloGitHub: https://hellogithub.com
[2]点击查看往期内容: https://github.com/521xueweihan/HelloGitHub#内容

640?wx_fmt=png

关注公众号加入交流群,一起讨论有趣的技术话题

如果你发现了 GitHub 上有趣的项目,欢迎在 HelloGitHub 项目提 issues 告诉我们。

“阅读原文”获取更多信息、“在看”让本文被更多人看到、“赞赏”支持我们。

你可能感兴趣的:(《HelloGitHub》第 43 期)