保姆级教程,如何发现 GitHub 上的优质项目?
先看再点赞,给自己一点思考的时间,微信搜索【沉默王二】关注这个靠才华苟且的程序员。
本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章。
前几天,看到一位朋友程序员小浩在文章里分享他的开源项目,上了 GitHub 的趋势日榜单,并且成功排名第一。我表示很酸,因为我也想有一个上千 star 的开源项目,到时候就可以肆无忌惮地吹牛逼了。
对于优秀的程序员来说,搜索引擎就该用 Google,找开源项目就该用 GitHub,找答案就该用 Stack Overflow,对吧?
如果能够拥有一个 star 数上万的 GitHub 仓库,那简直就是偶像级的开源作者。出去找工作的时候,在简历上就那么一晒,面试官就哑口无言了。
不过现实往往比较骨干,来看看我的 GitHub 仓库就能感受到了。

最多 star 的还是多年前写的一个二维码分享海报的仓库,仅仅 48 个,惨不忍睹啊,可怜得我一把鼻涕一把泪啊。可能有些读者看到这幅图后会觉得不舒服,“二哥,你可是我的偶像啊,怎么 GitHub 这么弱!”
但在我看来,挺正常的,一个人的精力是有限的,做到全方面优秀的都是屈指可数。况且,我看到了巨大的潜力,对,我的 GitHub 上升空间很大,只要我能拼一拼,超过 48 个 star 的仓库应该能实现吧?!
对于大多数普通的程序员来说,包括我,虽然不能成为优秀的开源作者,但利用 GitHub 找到一些优质的开源项目还是很有必要的。造轮子咱不行,“拿来主义”还不行?那怎么找到这些优质的开源项目呢?
01、GitHub 上直接搜项目
GitHub 主页上会有一个搜索框,直接在里面搜项目的关键字就行了,比如说微信支付这个关键字。

目前能搜到 2754 个仓库,比较多。

这种搜索的方式等同于在搜索框中加了一个 in:description 或者 in:about。


那这个 description 和 about 又是什么意思呢?指的是仓库的简介,见下图的红色框区域。

那 in 后的关键字还有没有别的呢?有,可以是 in:readme。

对于大部分中文的仓库来说,readme 部分是最详细的。区分一个仓库优质不优质,就看 readme 部分写得够不够认真。
我的个人博客用的 GitHub Pages, 地址如下:
https://github.com/itwanger/itwanger.github.io
我昨天刚把这个仓库的 readme 整了整,比之前看起来高大上多了。自我感觉良好,以后我要花点精力好好维护下,读者朋友们敬请期待啊,我敢肯定,在不久的将来,star 数肯定会超过 48,我敢赌 100 块!

那通过 in:readme 后的仓库数量有点多,达到了 16432 个,也太多了,怎么能精选一下呢?
一个仓库之所以优质,就在于它的 star 数是否足够多,因此可以在后面加上 stars>2000,这样过滤后的结果就少了很多。

02、GitHub 上直接搜作者
重要的参数有下面这 4 个,location 是所在的国家,language 是编程语言,followers 是关注人数,fullname 是作者名。

比如我搜 location:china followers:>4000,注意左侧选中「Users」,排名比较靠前的两位是阮一峰和尤雨溪大佬。

查看一下尤雨溪大佬的主页,头像真的非常清秀帅气,我第一印象知道想到了谁吗?徐志摩。前端框架 Vue.js 的作者, 真的非常牛逼了。

作者牛逼,那自然他的项目也就优质——基本上是个不可推翻的定理。
03、Google 直接搜
还拿之前“微信支付”这个关键字,百度搜到的结果如下所示:

换成 Google 呢?

对,第一个就是我想要的。

star 数高达 20k,可以说非常优质的项目了。我在做商城的时候就用的这个,微信开发的 Java SDK,支持包括微信支付、开放平台、公众号、企业微信/企业号、小程序等微信功能的后端开发。
04、GitHub Trend
对,就是文章开头提到的 GitHub 趋势榜,地址如下:
就如宣传语里说的,了解 GitHub 社区今天最激动人心的仓库或者作者。下图中第四位就是小浩的,牛逼牛逼。

可以选择编程语言,也可以选择日榜、周榜、月榜。
选择作者的话,可以看到一些优质的项目。

05、GitHub Topics
GitHub Topics 展示了最新和最流行的讨论主题,在这里不仅能够看到开源项目,还能看到更多非开发技术的讨论主题。地址如下:
不过,主题这块有个缺点,就是它的排序是按照首字母从 A 到 Z 的排列,这就导致如果我想看 Java 的话,就需要 load more 再 load more,再 load more,嗯,还是看不到。

希望 GitHub 在这方面改进一下,最起码可以选择一下。幸好幸好,load more 下面有一个 popular,里面有 Java 的标签。

点击标签就可以跳转到 Java 的主题了,排名第二的竟然是我的好朋友 guide 哥的仓库,star 已经 84k+ 了,牛逼牛逼。

06、GitHub Explore
Explore 就是探索的意思,它会根据你的喜欢智能化地推荐一些项目。地址如下所示:
我不知道这个探索算法是怎么算的,感觉给我推荐的项目还不够优秀,可能是我自己的 GitHub 还不够优秀吧。

07、牛人推荐
很多大学生读者问我,“二哥,听说现在公司招聘的时候非常看重项目经验,可我在大学的时候没有项目经验啊!怎么办?”
看 GitHub 上那些大牛们的开源项目,就是增加项目经验的一个很好的办法。把开源项目 down 到本地,然后看源码自己研究,顺带在原有的基础上补充一些功能,是不是就有项目经验了?
本身这些开源项目都是非常优质的,但功能并不会非常全面,毕竟作者的精力和时间有限。
虽然我不是 GitHub 上牛逼的作者,但摸着良心讲,开发经验还是非常充足的,所以我推荐的项目还是非常值得去学习的。
第一个,微人事(vhr),我的好朋友江南一点雨的。

推荐很多次了,我觉得有必要找他要一个贡献者的角色,以后我也可以出去吹牛逼了。
第二个,电商系统(mall),我的好朋友 macrozheng 的。

我们公司的商城系统升级的时候,就用了他这个作为地基,真的是非常给力的一个开源项目。
08、最后
发现了优质项目,不只是要去 star 它,最好 fork 到自己名下,去研究研究源码。
如果可以的话,可以尝试去解决几个 issue,提几个 pull Request,如果能混到一个贡献者的名额,就开心了哈,毕竟自己头像出现在 readme 里也是非常骄傲的一件事。
最后,希望读者朋友们都能够玩的开心,毕竟 GitHub 是全球最大的同性交友社区(狗头)。
我是沉默王二,一枚有颜值却靠才华苟且的程序员。关注即可提升学习效率,别忘了三连啊,点赞、收藏、留言,我不挑,奥利给。
最近,有很多读者问我,有没有大厂的面经?那问二哥就对了,微信搜索「沉默王二」,回复「面试」就有三份我精心为你准备的刷题宝藏,本文 GitHub github.com/itwanger 已收录,欢迎 star。
保姆级教程,如何发现 GitHub 上的优质项目?的更多相关文章
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- RocketMQ保姆级教程
大家好,我是三友~~ 上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作 ...
- 自建本地服务器,自建Web服务器——保姆级教程!
搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...
- 强大博客搭建全过程(1)-hexo博客搭建保姆级教程
1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...
- Eclipse for C/C++ 开发环境部署保姆级教程
Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...
- 新手小白在github上部署一个项目
新手小白在github上部署一个项目 一. 注册github账号 github地址:https://www.github.com/ 二.下载安装Git 地址:https://git-scm.com/d ...
- 从Github上下载了项目,导入Android Studio,gradle 报错,应该怎么修改
一.从Github上获取源代码 我这里是直接下载ZIP文件 二.在本机的Android Studio上新建一个空白项目,目的主要是与刚从Github上下载的项目文件结构做对比 三.替换gradle文件 ...
- Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
Pull Request的正确打开方式(如何在GitHub上贡献开源项目) GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/f ...
- github上传本地项目
github上传本地项目,分为两个部分: 1.如果建立了ssh key的,直接看第二部分的上传部分就行了 2.如果没有建立ssh key的,就从头开始看吧 ——————————————————我是快乐 ...
随机推荐
- 日期类&&包装类&&System类&&Math类&&Arrays数组类&&大数据类
day 07 日期类 Date 构造函数 Date():返还当前日期. Date(long date):返还指定日期 date:时间戳--->距离1970年1月1日 零时的毫秒数 常用方法 日期 ...
- 设置CMD窗口为UTF-8编码
Windows下的CMD窗口默认是采用非UTF-8编码的,有时候运行一些UTF-8编写的批处理文件在控制台中的输出就是乱码, CHCP是MD DOS中的命令,用来显示或设置活动代码页编号的.用法是: ...
- RSA遇上中国剩余定理
1.Introduction 最近读论文刚好用到了这个,之前只是有耳闻,没有仔细研究过,这里就好好捋一下,会逐步完善 不过貌似CRT(中国剩余定理)的实现更容易被攻击 2. RSA: Overview ...
- MySQL实验 子查询优化双参数limit
MySQL实验 子查询优化双参数limit 没想到双参数limit还有优化的余地,为了亲眼见到,今天来亲自实验一下. 实验准备 使用MySQL官方的大数据库employees进行实验,导入该示例库 ...
- Netflix OSS套件一站式学习驿站
Netflix OSS是由Netflix公司主导开发的一套代码框架/库,目的是用于解决大规模集群的分布式系统的一连串问题,如:服务发现.负载均衡.熔断降级.限流.网关等.对于当代的Java开发者来说, ...
- SSTI(模板注入)
SSTI 一. 什么是SSTI 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. ...
- scala 数据结构(二):数组
1 数组-定长数组(声明泛型) 第一种方式定义数组 这里的数组等同于Java中的数组,中括号的类型就是数组的类型 val arr1 = new Array[Int](10) //赋值,集合元素采用小括 ...
- 数据可视化之powerBI技巧(二十)采悟:创建度量值,轻松进行分组统计
上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解.不过这样都修改了原始数据的结构,如果我们不在源表上进行修改,直接通过度量值的方式来进行分组,是否可以实现呢? 答案当然是肯定的. 采 ...
- 数据可视化之DAX篇(十)在PowerBI中累计求和的两种方式
https://zhuanlan.zhihu.com/p/64418286 假设有一组数据, 已知每一个产品贡献的利润,如果要计算前几名产品的贡献利润总和,或者每一个产品和利润更高产品的累计贡献占总体 ...
- VTK根据三维坐标点集生成点云
一个简单的利用VTK根据三维坐标点集生成点云的例子,仅供参考. 一.环境:vtk-8.1 & vs2013(需自行配置vtk的环境) 二.我所读取的三维坐标点集为txt格式文件,每个点的x,y ...