文档章节

快速熟悉开源项目

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

查阅文档

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

查阅文档与博客

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

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

带着问题去阅读

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

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

动手实践

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

搭建项目

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

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

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

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

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

深层次改动

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

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

阅读源码

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

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

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

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

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

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

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

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

© 著作权归作者所有

上一篇: influxd入门
粉丝 2
博文 21
码字总数 11156
作品 0
丰台
私信 提问
寻找xml高手 开源健康档案系统研发

1. 医疗信息研究团队目前开展一个简单快速的跨区域健康档案系统研究,并将此列入开源研发进程 2. 技术主研发 3. 精通xml相关技术,特别熟悉开源项目过程,熟悉java或者php 4. 待遇水平,可按...

lijeff
2010/07/16
378
1
【广州】求13年暑假java web(后台)开发的实习生岗位

技术: 1.熟悉java基础,面向对象思想 2.熟悉jsp、servlet、html、css、javascript、jquery等web编程语言 3.熟悉struts2、hibernate、spring思想及技术 4.熟悉Linux操作系统,了解在Linux上进...

罗智频
2013/05/13
442
0
杭州 项目运营公司组建团队招聘JAVA开发人员

职位描述 招聘人数2-3人 1、负责基于Web的网站以及管理系统的设计和开发,为现有的系统提供技术支持 2、负责相关产品的设计开发维护工作,实现高效稳定的应用; 3、负责与项目组人员保持良好沟...

LeeCharles
2012/05/23
577
3
指导使用activit工作流程引擎

若干年java编程经验。有数据库基础,希望快速学习activi工作流 看了一些activit的书,视频 ,开源项目。但是对整体还是不是很清楚,希望找一个熟悉activit工作流的大年,指导一下(时间灵活、...

messagesky
2017/03/01
26
0
Github好玩库推荐《女装大佬库》

“这么可爱,一定是男孩子!” 博主发现“女装大佬库”的过程 2019年3月8日,出地铁站时, 不经意间看到一个男士的装扮有点偏女性化, emm... 深圳真的是一个开放的城市 随后, 在v站看到一个 ...

木子昭
03/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
22分钟前
18
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
30分钟前
14
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
35分钟前
15
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
35分钟前
8
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
40分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部