文档章节

快速熟悉开源项目

 白驹鸣鹿
发布于 2017/02/09 17:45
字数 1518
阅读 17
收藏 2

查阅文档

查阅文档包括查阅文档与博客,最好是带着问题去阅读。

查阅文档与博客

一个好的开源项目未必会火,但是一个火的开源项目一定有其可取之处,而从众心理又会让跟多人去研究它。所以,要熟悉你想研究的开源项目,第一步就是在搜索引擎中查找该项目的博客和资料。通过快速阅读介绍开源项目架构,使用方法等这类文章,你就能大体了解该项目的意义,功能和基本使用方法。

通过搜索到的资料,如果你觉得该项目就是你想要的,那么便可以很耐心的阅读项目提供的官方文档,从中学习一些具体的下载,安装和使用方法,以便了解项目全貌。

带着问题去阅读

阅读文档过程中不能盲目,需要带着如下问题去阅读。

  • 这个项目解决了什麽问题?
  • 这个项目涉及了哪些成熟的技术
  • 这个项目是否符合我的要求(用户规模,使用场景,性能,安全性等)?
  • 当阅读完文档后,能否尝试画出大致的架构图?

动手实践

实践是最好的老师,在阅读文档过程中,按照文档的操作指南亲手实践,不但有助于加深理解,同时还会注意到很多细节,可以更清楚的感受到项目是否符合自己的需求。

搭建项目

实践过程一般都遵循项目的README文件,进行部署安装和尝试。如果有现成使用项目的事例代码,那么也可以按照示例代码进行尝试。此时若是运行顺利,则可以尝试着根据自己的理解对事例代码进行修改。若是出现问题也无需慌张,只需要将问题的异常信息当作关键词在搜索引擎中查找即可。如果实在找不到解决方案,那么就可以提交到开源项目的邮件列表中,开源社区的人们一般都比较热心,相信很快就可以解决问题。

基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。

基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。

下面推荐几个解觉疑惑的好网站

  • Google搜索引擎: google.com
  • Stackoverflow: stackoverflow.com
  • 项目相关的Google讨论组: groups.google.com
  • 对GitHub的项目提Issues: github.com

深层次改动

有趣的是,很多开源项目一般都会为了方便用户使用,提供release的版本。如果基本的部署和使用已经成功的话,强烈建议你从源码构建和部署该项目。这样你就能从开发,调试到发布整个一体化的全部过程,由此全方位的感受项目的优缺点。

基本尝试过后,我们可以使用项目的一些高级功能,如一些高级配置项,较为复杂的API等。相信一个运作良好的开源项目,为了方便社区的贡献者们可以快速加入,必然会提供一份较为详尽的指南,你只需挑选你感兴趣的部分阅读即可。

阅读源码

经过以上两步之后,你必然对项目的大致情况了然于胸,想更深入的了解自然非阅读源码莫属了。

一般阅读源码有两种习惯方式,一是根据命令行的代码调用过程阅读;二是根据架构分模块阅读。

  1. 跟着运行过程阅读 刚上手的过程可以使用的一种方式。通过实践过程中对对某个命令或参数的理解,从主干开始,一步一步理清这个命令在运行过程中代码调用的路径。通过debug工具观察变量和函数,修改源码打印日志,可以更好的帮你理解源码。 当理清这个过程后可以将这个过程用流程图的形式记录下来,从而加深印象,方便下次阅读的时候快速会议和对比。
  2. 分模块阅读 在理清了程序运行的基本流程后,可以根据架构上各个模块的作用,挑选你有兴趣的部分阅读,如网络,存储,通信,用户接口,界面等,选择一个模块深入到实现细节中。

此时也可以带着如下几个问题帮助自己理解。

  • 调用了什麽底层库?
  • 采用了什麽设计模式?
  • 这麽写有什麽好处?

如果在阅读源码的过程中出现瓶颈,你一时无法理解代码的用意,不妨去阅读一下相关的单元测试。一个好的单元测试通常都描述了要测试代码的主要功能和数据边界,通过运行和理解单元测试,可以有效的帮助理解源码。

相信经过以上三步,你必然已经对这个开源项目非常熟悉了。此时如果你感兴趣,也可以加入其中为开源社区做出一定贡献。

摘抄自《Docker 容器与容器云》

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 21
码字总数 11156
作品 0
丰台
欢迎jeecg技术爱好者加入开源团队

欢迎技术爱好者,加入JEECG开源团队!!! ================================================================= JEECG开源团队招募新成员 截止日期:2016-08-08 JEECG快速开发平台,是开源主...

Jeecg
2016/04/11
60
0
如何迎接新的 .NET 时代

看完.NET 基金会、 Roslyn 编译器 ,应该已经能慢慢了解,现在所谓的“.NET 开源”、“.NET Open Source”并不是完全把现有的 .NET Framework 整个打开(虽然这里有个子集的参考版【https:/...

2017/09/23
0
0
甲骨文最新推出的 Java 微服务框架 Helidon:轻量简单

据外媒报道,甲骨文在上周五宣布推出了 Helidon 的第一个版本,这是一个用于编写微服务的 Java 开源库,并且正式加入了 Eclipse MicroProfile。 Helidon 是一个开源的 Java 微服务框架,旨在...

局长
09/12
0
27
我要找一个开源项目,项目主要涉及分布式集群数据的存储和管理!

最近老板安排一个事情,就是要找一个开源项目,并深入研究之,但是给出的信息比较少,就说这个开源项目的logo貌似是个大章鱼(不确定),需要做分布式集群的大数据量的存储,我对这个不是太熟...

长江北
2009/07/01
832
5
Jack.arain/avplayer

一直以来, 在多媒体播放器这块, 即使目前有许多开源的播放器项目, 但要写一个播放器仍然是件非常困难的事, 如果在windows上你有可能需要熟悉DShow, 另外的话, 你需要学习一堆开源项目(比如F...

Jack.arain
2014/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用碎片化时间Get Linux系统

起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫。我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个选择,迷茫工作或者生...

Linux就该这么学
12分钟前
0
0
图像显示深入学习一:Activity启动过程

一个月左右写了图像显示深入学习之文章开篇文章表明了自己近期的计划,前半年重新学习了opengl es,c++以及Linux的一些知识,觉得是时候开始看图像这一块的源码了,边看边补缺补漏吧。 作为该...

JerryLin123
35分钟前
0
0
给MySQL授权远程访问

putty登录服务器; 登录MySQL: mysql -u root -p 新建远程用户: CREATE USER 'myusername' IDENTIFIED BY 'mypassword'; 授权: grant all on *.* to john@'101.102.103.104' identified by......

sweethome
今天
0
0
在t-io老巢造谣,不过有造谣的就会有反造谣的!

只发当事人的截图,不发表评论,以免有引导嫌疑 PS: 截图是由不同的人发过来的 本人已经不在此微信群 图3:有造谣的,就有反造谣的 图4是2018-09-23的t-io官方群的一个发言小统计,有助于让...

talent-tan
今天
99
0
heartbeat 资源

drbd+apache+heartbeat : http://blog.51cto.com/11838039/1827901 heartbeat双机热备的架设 : http://blog.51cto.com/11838039/1827560 对heaetbeat的深一步认识 : http://blog.51cto.co......

寰宇01
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部