本文转载自公众号“读芯术”(ID:AI_Discovery)
GitHub是共享各种技术、框架、库和各种集合的第一大平台。但是,资源这么多,要如何找到最有用的呢。
瀚海寻珍,笔者整理出这十个超高评分的库,它们的相关性、流行性和实用性通通在线,对于所有的软件工程师都有极大的价值。
无论你是想学习新知识,还是想打造炫酷软件,它们都能帮到你。
1. Build Your Own X
GitHub星数:61,300
这个奇妙的库基本上是如何构建自己技术的教程集合,它包含了如何构建命令行工具、操作系统、搜索引擎、三维渲染器等的例子。
想要创建自己的编程语言吗?或者自己的Docker或Git?这个库非常适合。
2. Free Programming Books
GitHub星数:139,000
尽管库名是免费编程书籍,但是它能提供的远远不止于此。它有多种语言版本,包含免费在线课程、交互式编程资源、问题集和竞争性编程、播客和编程场地。
不过这里面大多数都是编程书籍,真的是一个很棒的合集。
3. System Design Primer
GitHub星数:86,200
这是一个极其适合软件工程师的库,它有助于学习如何设计大型系统。这将帮助你成为一个更好的工程师,它提供了一个有组织的资源合集。
在许多公司技术面试过程中,系统设计通常是个必要环节,因此,结合学习指南、面试方法建议、面试问题和解决方案、用于交互学习的学习卡集以及交互编码挑战,该库还有助于准备面试。
4. Oh My Zsh
GitHub星数:106,000
这是一个社区驱动的开源框架,应用于管理Zsh配置。Zsh既是一种交互式shell,也是许多开发人员使用的一种功能强大的脚本语言。
Oh My Zsh有着强大的插件和漂亮的主题,可以用于用户的Zsh定制。将其启动并且运行起来是一项比较困难的事情,但是在网上的教程和示例都不少,可以帮你找到适合的设置。
5. Coding Interview University
GitHub星数:104,000
这是一个月度学习计划,为想要成为亚马逊、谷歌或脸书等大型公司的软件工程师而准备。它是为了那些刚接触软件工程(需要计算机科学知识)的人设计的,同时也提供了如何学习才能成为可靠性工程师或者运营工程师的建议。
该库的作者建立此库的初衷是为了将其用作待办事项列表,来记录自己的学习过程。经过几个月每天8-12个小时的学习,他终于在亚马逊找到了作为软件开发工程师的理想工作。
如果你也在准备在谷歌,微软,Facebook等公司的技术面试,选择它没有错。
6. Gitignore: A Collection of .gitignore Templates
GitHub星数:97,000
正如其名,这一个有用的.gitignore模板集合。对于设置为GitHub库的每个新项目,都必须有一个.gitignore文件来过滤上传的内容。
文件的内容因项目和语言而异,它几乎包含所有语言和框架的模板,如Rails, Python, Perl, Laravel, Java等等。甚至还有Fortran的模板!
7. JavaScript Algorithms and Data Structures
GitHub星数:64,700
这个库包含了许多流行的JavaScript算法和数据结构的示例。每个示例都有着初学者或高级的标记,以示难度。有散列表(哈希表)、堆、队列、栈、数学、字符串、集合等的示例。
8. Public APIs
GitHub星数:73,100
Public APIs包含了一系列可用于项目和应用程序的优秀免费API。它涵盖各种主题,如商业、动漫、动物、新闻、金融、游戏等。
有一些小巧可爱的API,这些API的主题都较为有趣,且娱乐性质较高。但也有实用性强的,如Gmail API或谷歌分析API。
它真的包罗万象,请一定要亲自看看。
9. The Art of Command Line
GitHub星数:70,100
如何使用命令行这一问题,常常被开发人员忽略,但作为一名工程师,这真的有助于提高工作效率和灵活性。
这个库包含了在Linux上使用命令行的有用注释和提示,也有专门针对Windows或macOS的部分,概括性提示适用于其他基于UNIX的操作系统。
这不仅适合于初学者,也同样适合经验丰富的人。虽然这个库不再时常更新,但它仍然提供非常好的提示,有助于命令行的使用。用户也可以自掏腰包维护该库。
10. Developer Roadmap
GitHub星数:98,600
这个库包含一组图表,展示了在2020年想要成为前端、后端或开发运营工程师所需采用的不同道路和技术。
虽然一打眼看起来它可能多得惊人,但是对于这个快速变化的行业,该指南中说明了什么是可能的,什么是必须的。这个库每年更新,以反映行业系统的变化。
优秀的资源已经在这里啦,如何发挥它们的价值就看你的了。好好利用它们,成为一个更棒的软件工程师吧!