简介
分享 GitHub 上有趣、入门级的开源项目。
这是一个面向编程新手、热爱编程、对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程措辞的项目、让生活变得更美好的工具、书本、学习条记、教程等,这些开源项目大多都是非常随意马虎上手,而且非常 Cool。紧张是希望大家能动手用起来,加入到开源社区中。

在浏览、参与这些项目的过程中,你将学习到更多编程知识、提高编程技巧、找到编程的乐趣。
末了 HelloGitHub[1] 这个项目就出身了
以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容[2]
C 项目
1、tmux:一个终端复用工具,可极大的提高事情效率。
供应了强劲的、易于利用的命令行界面可横向和纵向分割窗口窗格可以自由移动和调度大小,或直策应用四个预设布局之一可在多个缓冲区进行复制和粘贴可通过交互式菜单来选择窗口、会话及客户端等等C# 项目
2、BenchmarkDotNet:功能强大的用于基准测试 .NET 库
C++ 项目
3、CppNet:一个封装在 Tcp 协议上的 Proactor 模式 multi-thread 网络库。包含 OS 接口调用、回调处理、定时器、缓存管理等,这里有从操作系统到运用层的所有网络细节,便于初学者学习和实践。
大略:只导出了最少量的接口,其声明都类似系统 socket API。对客户端而言,只新增了一个 buffer 类型快速:采取性能最优的 epoll 和 IOCP 干变乱驱动,惊群处理交由内核。每个连接都独享一个内存池,从内存池中申请的内存都由智能指针管理清晰:构造上分为事宜驱动,会话管理,接口三层,通过回调向上关照。模块之间职责分工明确,最大的类不超过 500 行代码4、dbg-macro:打日志是 C++ 开拓中必不可少的一种 debug 办法,dbg-macro受 rust-lang中 的 dbg 启示,供应比 printf 和 std::cout 更好的宏函数。紧张有如下特点:
都雅的彩色输出(当输出不是交互式终端时,颜色将自动禁用)兼容 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;}
5、CppCon2019:C++ 2019 大会的幻灯片和干系材料凑集
Go 项目
6、RedisShake:阿里开源的用于 redis 数据同步的工具。事理图如下:
7、bigcache:基于 Go 措辞的高性能大缓存库。在 Ubuntu 18.04 LTS,机器配置 i7-6700K CPU @ 4.00GHz with 32GB of RAM 上性能测试结果:
go versiongo version go1.13 linux/amd64cd 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
8、pacgo:基于 Go 实现的终端吃豆人游戏
9、go-admin:基于 Golang 措辞的数据可视化与管理平台。特性如下:
高生产效率:10 分钟内做一个好看的管理后台主题:默认为 adminlte,更多好看的主题正在制作中,欢迎给我们留言插件化:供应插件利用,真正实现一个插件办理不了问题,那就两个✅认证:开箱即用的 rbac 认证系统⚙️框架支持:支持大部分框架接入,让你更随意马虎去上手和扩展10、zerolog:一个速率快、专门用于输出 JSON 格式日志的库。还在为解析不规则的日志而烦恼吗?有了 zerolog 你可以跳起来了!
当然它还有低效但可在掌握台输出俊秀日志的模式,快去试试吧。示例代码:
ackage mainimport ( \公众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 内实现在线更新的库。示例代码:
//更新库配置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);
12、spring-analysis:Spring 框架源码讲解。包括:spring-core、spring-aop、spring-context、spring-taskspring-mvc 等部分
13、eladmin:基于 Spring Boot 2.1.0、Vue 的前后端分离的后台管理系统,支持数据字典与数据权限管理、一键天生前后端代码、前端菜单动态路由等。基于 Spring Boot2.1.0 框架,涉及的技能栈:非关系数据库 redis、接口测试工具 swagger、druid 数据源驱动、邮件依赖(javax.mail)、三方支付和云存储 SDK、页面模板引擎 freemarker。技能栈丰富,初学者可以作为实战项目学习和利用
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\公众); // 转中文金额 >> 公民币壹拾万零壹佰壹拾壹元壹角壹分
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 });
16、SandDance:微软开源的数据可视化库。利用单元可视化,将数据库中的行一对一映射到屏幕中。在进行数据交互时,视图可无缝平滑过渡,展示效果炫酷
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 自动化操作的库。比如:自动打开网页并截图,示例代码:
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 项目
21、Percent:让 Swift 措辞支持百分比类型,肃清精度缺失落的烦恼。示例代码:
import Percent10% + 5.5%//=> 15.5%-10% / 2//=> -5%
其它
22、curlconverter:把 curl 命令转化成各措辞的代码的工具,支持 Python、JavaScript、PHP、R、Go 等措辞。
23、hub:通过命令行的办法来操作 GitHub,支持绝大多数的操作。比如:创建远程仓库、删除远程仓库、提交 PR、管理 issue 等,常用操作:
创建远程仓库:hub create github-repository删除远程仓库:hub delete github-repositoryfork 项目:hub fork24、cascadia-code:微软开源的一套等宽字体,有趣的是可以组合字符创建新的字形。组合效果如下:
25、Administrative-divisions-of-China:中国行政区划(五级):省级、地级、县级、乡级和村落级的数据集和爬虫程序
26、vim-airline:一个让每个 Vim 窗口的底部,都有一个俊秀状态行的插件。展示信息和效果如下图:
开源书本
27、python_ebook:Python 编程干系的电子书资源凑集项目
28、book:(英文)《Cosmic Python》讲述如何管理繁芜性的 Pythonic 运用程序构造的书本
教程
29、BigData-Notes:大数据入门教程,该教程先容了大数据常用技能栈的根本和核心知识。内容涵盖:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等
机器学习
30、Ultra-Light-Fast-Generic-Face-Detector-1MB:1MB 大小的轻量级人脸检测模型。该模型是针对边缘打算设备,基于 libfacedetection 更换压缩网络设计实现
31、dimensionality_reduction_alo_codes:该项目利用 Python 实现了 11 种经典的数据抽取(数据降维)算法。同时附有干系资料、展示效果,适用于机器学习初学者和刚刚入坑数据挖掘的小伙伴
参考资料
[1]HelloGitHub: https://hellogithub.com
[2]点击查看往期内容: https://github.com/521xueweihan/HelloGitHub#内容
如果你创造了 GitHub 上有趣的项目,欢迎在 HelloGitHub 项目提 issues 见告我们。