当前位置: 首页 > 科技观察

手把手教你GitHub寻宝攻略

时间:2023-03-18 23:20:22 科技观察

前言作为资深顾问和程序员,GitHub是我用过的最好的工具,因为谷歌并不总是这么用的。GitHub是宝库,但是没有藏宝图,GitHub的11亿仓库跟你没关系。这么多年了,掌握了一定的技巧,写篇文章记录一下也就顺其自然了。一句话总结:GitHub去搜谷歌搜不到的东西。他们之所以能工作,是因为我们想做的事情,别人已经做了。如果您正在走一条新路,那么这篇文章对您来说可能意义不大。找个Demo来节省时间,在工作中使用新技术,这与我平时的做法相去甚远。工作的时候,我们偏向于目标编程,对速度和时间的要求比业余时间要高很多。一旦有这种压力,我会在GitHub上找对应的Demo,了解原理,稍微尝试一下,然后引入到项目中。这个时候会按照技术栈的关键词搜索,按照更新时间排序,看看有没有合适的demo。生命是有限的,如果每次尝试新技术,我们都必须自己写一个Demo。写多个demo需要半天八小时。这样一来,可以花在其他事情上的时间就更少了。直接使用官方Demo通常更容易。但是我们在写应用的时候,要结合当下的场合。这个时候集成不是一件容易的事,依赖冲突,引入第三方依赖等等。温馨提示:对于简单的项目,直接写Demo会比较方便。尝试项目是有成本的,如果需要尝试使用多个项目,可能会浪费时间。寻找脚手架:加快早期开发无论是后端微服务架构还是前端应用,应用架构都变得越来越复杂。后端微服务需要和框架一一结合。即使是SpringInitializr这样的工具,也只能帮助我们构建项目。我们还需要配合其他工具共同搭建一个基础系统。前端应用程序也是如此。如果是像Angular这样大而全的框架,花不了多少时间。对于像React这样需要组合的小而美的框架,使用官方的create-react-app很难做出我们想要的东西。寻找合适的脚手架是更好的选择。这个时候我们大概可以直接用technologystack+boilerplate或者starter之类的关键词来搜索,比如reactboilerplate。如果里面查到的组合技术栈不符合你的要求,那就加上相应技术栈的关键字,比如reactreduxboilerplate。有趣的是,Google在这一点上比GitHub更方便。温馨提示:我们需要衡量修改脚手架的成本是否比自己重写更快。寻找awesome-xxx:探索实践新框架的可能性,我总是习惯写一系列相关的DEMO项目,然后使用awesome-xxx来探索可能性。Awesome-xxx系列是GitHub上最容易获得star的类型。但是,任何领域、语言、框架等,只要有一定的知识,都有自己的awesome-xxx系列项目,比如awesome-python、awesome-iot、awesome-react等。在这样的项目中,以一定的知识体系进行梳理,便于索引和参考。如果你想进入一个新的领域,尝试新的东西,就搜索awesomexxx。温馨提示:awesome-xxx只是表示他们包含尽可能多的素材,并不意味着他们拥有所有相关的库。模仿轮子大学的轮子时,我正在练习写一个嵌入式操作系统,而uC/OS-II对我这个初学者来说太复杂了——无关代码太多。于是在网上搜索了相关的实现,也就是找了一些,在此基础上,对操作系统做了一点点的改进。学习一个成熟的框架,直接阅读已有的源码,成本太高,终究不划算。最好的方法是使用轮椅。从模仿轮子开始,再造轮子是最省力的方式。再加上《造轮子与从Github生成轮子》这篇文章,怕是可以写出一系列的框架了。建造一个类似的轮子的想法经常被很多人分享。尤其是一个成熟的框架,往往会有很多模仿。所以,当你想了解一个框架造个轮子的时候,不妨尝试搜索一下xxx-like或者xxx-likeframework,中文是仿react框架或者类react。如果我们在Google上搜索react-like,我们会找到inferno。不过按照GitHub的尿性,想要搜索到这样的框架并不容易。谷歌在这一点上往往优于GitHub搜索。因此,建议:上下班休息时搜索相关的轮子,回家就可以骑在轮子上了。学习资源GitHub有大量的学习资源,从各种文章到笔记,再到各种电子书。例如:就搜索:type+notes,比如操作系统笔记,找到一些操作系统相关的笔记。只需搜索:booktitle即可找到与本书相关的一些资源,例如重构以改进现有代码的设计。同时,GitHub也会搜索各种未经授权的英文书籍的翻译,或者各种电子书的PDF版本。作为多本书的翻译者,当然不鼓励在GitHub上找一些盗版书。而GitHub上有一些库可以提供相应的学习资源,比如free-programming-books-zh_CN,这是一个免费的编程中文书籍索引。建议:请尊重版权,哈哈哈。Keys/PasswordsGitHub上有很多这样的东西,虽然我没有时间找到合适的密钥。GitHub上存在许多与密钥和密码相关的数据泄露和数据库黑客攻击事件。不过幸运的是,GitHub已经在着手解决这个问题:自动删除相关提交、代码警告等。总有私有和商业的SDK或代码,一些商业代码或公司内部代码会提交到GitHub。如果你偶尔看到这样的代码,除了每次都告诉作者之外,你还可以偷偷克隆下面的代码——虽然这是错误的,但我还是想看看。比如ThoughtWorks的面试过程中,有一个代码编程的步骤,个人实现不能公开。当我接到作业时,我总是去GitHub上搜索是否已经提交了相应的代码。已提交,但我必须提醒相应的候选人。以前我用Phaser写应用的时候,对应的粒子系统都是收费的。由于我只是试用这个粒子系统,所以我没有购买的打算。心想GitHub上可能有,于是搜索了对应的particle-storm.js,结果中奖了。于是兴高采烈的写了我的Hello,World,最后发现太耗资源了,就放弃了。建议:一旦在GitHub上拿到别人的商业代码,请仅供学习使用,时刻保持低调。一不小心,就会被囚禁。数据和数据生产工具当我们需要数据的时候,我们会考虑写爬虫。于是GitHub上堆满了各种爬虫,有的同学把所有的爬虫数据都放上去了。有一次,我在玩ElasticSearch搜索引擎的时候,突然需要一些真实的数据来进行测试。所以我只好找爬虫,在GitHub上,我找了一些大众点评的爬虫。这个关键字是:scrapydianping.com,很容易搞定。另外,在AI相当流行的今天也是如此,也可以搜索其他同学训练的模型。结论试试你的GitHub搜索。