兴趣是最好的老师, HelloGitHub 就是帮你找到兴趣!
分享 GitHub 上有趣、入门级的开源项目。javascript
这是一个面向编程新手、热爱编程、对开源社区感兴趣 人群的月刊,月刊的内容包括:各类编程语言的项目、让生活变得更美好的工具、书籍、学习笔记、教程等,这些开源项目大多都是很是容易上手,并且很是 Cool。主要是但愿你们能动手用起来,加入到开源社区中。html
在浏览、参与这些项目的过程当中,你将学习到更多编程知识、提升编程技巧、找到编程的乐趣。前端
🎉 最后 HelloGitHub 这个项目就诞生了 🎉vue
如下为本期内容|每月 28 号发布最新一期| 点击查看往期内容
一、csredis:Redis.io 官方推荐的 C# 语言 redis 客户端库,支持 redis 2.8-5.0 版本的全部命令,且包含哨兵、集群等功能。该项目从 2016 年开始持续迭代更新,实现了低门槛、高性能和分区等高级玩法。该项目做者:2881099,在 GitHub 上开源了不少有趣、实用的 C# 项目。欢迎你们关注他,同时参与到他的项目中,为开源社区贡献本身的一份力量。示例代码:java
var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123"); RedisHelper.Initialization(csredis); RedisHelper.Set("test1", "123123", 60); RedisHelper.Get("test1"); //...函数名与 redis-cli 的命令相同 //普通订阅 RedisHelper.Subscribe( ("chan1", msg => Console.WriteLine(msg.Body)), ("chan2", msg => Console.WriteLine(msg.Body))); //管道操做 RedisHelper.StartPipe().Set("a", "1").Get("a").EndPipe();
二、fmt:这是一个开源的 C++ 格式库。它能够做为 (s)printf 和 iostreams 的安全和快速替代品,也是 C++ 20 中 std::format 的一个实现。它的格式化字符串语法相似于 Python 中的 str.format
,支持用户本身定义的类型,还比 printf 和 iostreams 的常见标准库实现更快!并且 fmt 还很是安全,格式字符串中的错误能够在编译时报告,还能够防止缓冲区溢出错误。示例代码:python
fmt::print("Hello, {}!", "world"); // 类 Python 的语法风格 fmt::printf("Hello, %s!", "world");
三、awesome-modern-cpp:Wow Awesome!你想将 modern cpp 运用自如吗?那就来看 Awesome-modern-cpp 吧!这里列出了一些有关现代 C++ 的最佳实践、书籍、会议、谈话、播客、博客、网站、各类各样的库以及一些工具,让你不由 Wow Awesome,这就是你独享的 momentios
四、simple-computer:一个用 Go 语言模拟简单计算机 CPU 的项目。只有 Go 语言的函数,没有硬件的模块,从与非门直到一台能作加减运算和显示的迷你虚拟计算机。这些是计算机最底层、基础的东西,虽然是使用 Go 语言模拟,而不是用硬件打造而。可是计算机的基本结构,运行的基本原理都显示的很是清楚。对于新手,既能了解 CPU 原理,也会发现编程语言除了能写软件以外的其余有趣用处。安装命令:c++
make # 构建项目 make test # 测试 ./bin/simulator -bin _programs/brush.bin # 运行虚拟机
五、gridstudio:一个后端采用 Go 语言的电子表格 Web 应用程序,支持 Python 编程语言处理数据,结果运行便可见。它旨在提供一个集成的工做流程,用于加载、清理、操做和可视化数据。可在线使用,对于用 Python 等处理数据的数据工程师而言,就是一款神器。以前就很好奇石墨文档怎么作的,这下能够学习下了,电子表单是一个比较复杂的问题,该项目有不少能够学习的地方。安装:git
git clone https://github.com/ricklamers/gridstudio # clone 项目 cd gridstudio && ./run.sh # 直接运行 # 而后访问 http://127.0.0.1:8080 用户名:admin 密码:admin
六、go-github:谷歌出品的 GitHub API Go 语言版本。若是你须要作一个 GiHhub 相关的产品后端,这个能够省去不少功夫,并且还能够学习谷歌工程师写的 Go 项目、设计接口的思路。示例代码:github
import "github.com/google/go-github/v27/github" // 启用的 go module (GO111MODULE=on 或者不在 GOPATH 里) import "github.com/google/go-github/github" // 没启用 go module 时 client := github.NewClient(nil) // 获取用户 "willnorris" 所在的全部组织 orgs, _, err := client.Organizations.List(context.Background(), "willnorris", nil)
七、vhr:一个先后端分离的人力资源管理系统。该项目采用 SpringBoot + Vue 架构,这两个都是近些年很流行的框架。该项目涉及的场景不少,可做为全栈工程师的入门实践
八、SmartSwipe:一个侧滑处理框架,而不是具体某种侧滑效果的实现。其内部封装十几种侧滑效果,包括侧滑返回、侧滑删除、百叶窗、开门等效果,总有那么几款能让你眼前一亮。示例代码:
//为控件添加仿MIUI的弹性拉伸效果: // 当纵向不能滚动(或滚动到顶/底)时,若继续拖动,则 UI 呈现弹性拉伸效果,释放后平滑恢复 SmartSwipe.wrap(view) .addConsumer(new StretchConsumer()) .enableVertical(); SmartSwipe.wrap(view) .addConsumer(new StretchConsumer()) .enableVertical() //仿 MIUI 拉伸效果的方向为:上下 2 个方向 .addConsumer(new SpaceConsumer()) .enableHorizontal() //仿 iOS 弹性留白效果的方向为:左右 2 个方向 ; SmartSwipeBack.activityBezierBack(application, null); //仿小米 MIUI 系统的贝塞尔曲线返回效果 SmartSwipeBack.activityStayBack(application, null); //仿手机 QQ 的手势滑动返回 SmartSwipeBack.activitySlidingBack(application, null); //仿微信带联动效果的透明侧滑返回 SmartSwipeBack.activityDoorBack(application, null); //侧滑开门样式关闭 activity SmartSwipeBack.activityShuttersBack(application, null); //侧滑百叶窗样式关闭 activity //xxxMode 第二个参数为 false,表示工做方向为纵向:下拉刷新&上拉加载更多 //若是第二个参数设置为 true,则表示工做方向为横向:右拉刷新&左拉加载更多 SmartSwipeRefresh.drawerMode(view, false).setDataLoader(loader); SmartSwipeRefresh.behindMode(view, false).setDataLoader(loader); SmartSwipeRefresh.scaleMode(view, false).setDataLoader(loader); SmartSwipeRefresh.translateMode(view, false).setDataLoader(loader);
九、SoloPi:一个不须要链接电脑、非侵入式的 Android 自动化工具。公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。安卓版本多、终端型号多,一个成熟安卓应用的上线须要进行大量测试,而不少测试都是属于重复操做,经过此工具能够极大简化测试人员的工做量
十、XUI:一个简洁而优雅的 Android 原生 UI 框架。让原生 Android 开发人员也能像 web 开发者同样,拥有方便的 UI 库。该项目适用于有必定 Android 开发经验的开发者
十一、chart.xkcd:手绘风格的 JS 图表库。手绘风格的设计给人一种很可爱的感受,看了这些图表你会发现数据也能够以萌萌哒的形式展现
十二、fullPage.js:经过调用 fullPage 可轻易建立全屏滚动网站(也称为单页网站)。 fullPage 可建立全屏滚动网站,同时也可在网站中添加横向滚动条。适合快速搭建全屏滚动或者拥有视觉差的站点,使得网站看上去更加高端、大气、上档次,示例代码:
<div id="fullpage"> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> </div>
1三、PicGo:基于 electron-vue 实现的桌面图床工具。该工具能够帮助你高效、很是方便地上传图片到网络图床,包括了微博图床、七牛图床、腾讯云 COS、又拍云、GitHub、SM.MS、阿里云OSS、Imgur 等。只要使用快捷键或拖动就能够上传,并且上传成功的图片连接会自动复制到你的剪贴板里,支持 macOS、Windows、Linux 三大系统
1四、Valine:一款快速、简洁且高效的无后端的 JS 评论插件。该库使用 LeanCloud API 存储数据,且设计美观、体积小、支持 Markdown 和 Emoji。对于使用 Hexo、Hugo 等静态网页博客主来讲,它简直就是福音。经过简单的几步就能够快速的给本身的博客增长评论功能,你还不快来试试
1五、webtorrent:基于 JS 的流媒体种子客户端。不须要等待种子中的内容下载完毕,就能够立刻播放种子中的内容,且有 Windows、Mac 和 Linux 操做系统的桌面版客户端。还在为等待下载而苦恼吗?有了它便可复制种子连接观看对应的视频内容
1六、Jtyoui:帮助学习 Python 的代码集合包。包含 20 多个简单易用的经常使用方法和数学函数,大多数方法在 100 行左右,并且每个类的使用都有对应的测试用例。很是方便初学者学习,也能够帮助有经验的开发者快速实现一些功能。示例代码:
# 这是一个阳历转化农历的程序 from jtyoui.plunar import SC if __name__ == '__main__': lun = SC(year=2018, month=1, day=2) #阳历转农历 print(lun.y) # 农历的年,中文字符 二零一九 print(lun.year) # 农历的年,阿拉伯数字 2019 ... print(lun) # 二零一九年 七月 十四 星期四 无
1七、bullet:一个支持终端输入和菜单选择的 Python 库。可让使用者在终端上用方向键移动、单选、复选、密码输入等,并且支持定制化格式和颜色。看下面的效果图你就知道它是干什么
1八、DaPy:一个易用的数据分析 Python 库。经过提供合理的数据结构和丰富的机器学习模型,它能帮你快速地实现数据分析思路。简单来讲,DaPy 能帮助你完成数据挖掘任务中的每一步,导入导出数据、预处理数据、特征工程、模型训练和模型评估等
1九、rest-client:一个 Ruby 的 HTTP 客户端库。已经有累计 10 万人在使用,该库使用方便、API 设计优雅、支持经常使用的 HTTP 方法、文件下载、设置代理等。每一个方法基本都有示例代码:
require 'rest_client' RestClient.get 'http://example.com/resource' RestClient.get 'http://example.com/resource', {:params => {:id => 50, 'foo' => 'bar'}} RestClient.get 'https://user:password@example.com/private/resource', {:accept => :json} RestClient.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' } RestClient.post "http://example.com/resource", { 'x' => 1 }.to_json, :content_type => :json, :accept => :json RestClient.delete 'http://example.com/resource' response = RestClient.get 'http://example.com/resource' response.code ➔ 200 response.cookies ➔ {"Foo"=>"BAR", "QUUX"=>"QUUUUX"} response.headers ➔ {:content_type=>"text/html; charset=utf-8", :cache_control=>"private" ... response.to_str ➔ \n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n \"http://www.w3.org/TR/html4/strict.dtd\">\n\n<html .... RestClient.post( url, { :transfer => { :path => '/foo/bar', :owner => 'that_guy', :group => 'those_guys' }, :upload => { :file => File.new(path, 'rb') } })
20、overcommit:一款可配置的 git hook 管理工具。git hook 是 git 的强大功能,当触发某一个 git 的事件,例如:add、commit、push 等操做时,会触发执行对应事件的附加操做(hook)。能够用来检测代码质量、commit 描述风格、控制代码质量等。overcommit 就是能让你不写一行代码(配置不算代码),来自定义 hook 要执行的操做。它使用简单、文档详尽、例子众多、社区活跃,值得一试
2一、AppearancesSwitcher:能够在 macOS 通知中心上快速切换“亮/暗”主题的小工具
2二、awesome-adb:ADB 用法集合(Android Debug Bridge)
2三、git-tips:Git 经常使用命令集合
2四、OnJava8:《On Java 8》中文版又名《Java 编程思想》
2五、numpy-cn:这是 NumPy 中文翻译文档。适合任何想了解学习 NumPy 的人,还能够看成手册查阅。若是你是新手朋友,推荐阅读基础文章中的:理解 Numpy、NumPy 简单入门教程、建立 Numpy 数组的不一样方式,参考文章里会不按期更新国内外优秀的 Numpy 相关的内容。若是你想徒手实现神经网络能够参看 NumPy 与 神经网络、 NumPy 实现 DNC、RNN 和 LSTM 神经网络算法
2六、Awesome_Multimodal_Research:该项目是收录多模态相关研究的一个精选列表,正在持续更新中。现实世界中的信息一般以不一样的模态出现。例如,图像一般与标签和文本解释联系在一块儿;文本包含图像以便更清楚地表达文章的主要思想。不一样的模态由迥异的统计特性刻画。例如,图像一般表示为特征提取器的像素强度或输出,而文本则表示为离散的词向量。因为不一样信息资源的统计特性不一样,发现不一样模态之间的关系是很是重要的
2七、rasa:一个专门为了多轮人机对话而生的框架。主要包含 Rasa Core、Rasa NLU 两大模块,提供了对话场景、意图理解、实体抽取等功能。用户只需按照平台的语料格式构建本身的语料,即可以方便的进行意图理解和实体抽取的训练。目前使用 Rasa 平台的用户也逐渐多了起来,除了官方文档网上也容易的找到相关的项目,便于学习和上手
2八、Non-local_pytorch:今天推荐的这个项目是 Nonlocal Net 的第三方实现,实现框架为 PyTorch。项目简明易懂,可是尚未在大型公开数据集上测试过性能。可是附带了一个 MNIST 的样例,能够供读者参考。Nonlocal Net 是大神 Kaiming He 研究组在图像领域引入 Attention 机制的一篇论文。Nonlocal Net 的提出,引领了一波在图像领域运用注意力机制的浪潮,最近两年该方向论文层出不穷。Facebook 也开源了一个 Nonlocal Net 在视频分类中的项目,可是框架基于他们维护的 caffe2,读者能够根据自身实际状况进行浏览阅读
“看完了,还不够?<往期内容> | 还不过瘾,那就看看天天更新的前端日报吧 <今日前端>”
若是你发现了好玩、有意义的开源项目 点击这里 分享你以为有趣的项目。
最近开了公众号,后续公众号会针对月刊推荐过的内容精选、梳理,作成系列的文章发布。月刊也会同时发布在公众号,便于第一时间阅读。
欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容。
欢迎转载,请注明出处和做者,同时保留声明。