文档章节

快速熟悉开源项目

 白驹鸣鹿
发布于 2017/02/09 17:45
字数 1518
阅读 18
收藏 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
丰台
私信 提问
寻找xml高手 开源健康档案系统研发

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

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

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

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

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

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

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

messagesky
2017/03/01
1
0
金融业务流程中项目审批及查询功能限时紧急开发(40000)

1、需求说明: 金融信托业务流程管理中项目实施审批,固有业务审批及项目进度查询功能紧急快速开发。 2、验收时间:2015年8月31日; 3、人员要求:2人; 4、技术要求:精通Java,jbpm,easyU...

SOHO之家
2015/08/20
6
6

没有更多内容

加载失败,请刷新页面

加载更多

解析JQuery中each方法的使用

each() 方法规定为每个匹配元素规定运行的函数。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 概述: each() 方法规定为每个匹配...

前端攻城小牛
16分钟前
5
0
深入解析Vue开发动态刷新Echarts组件的教程

需求背景:dashboard作为目前企业中后台产品的“门面”,如何更加实时、高效、炫酷的对统计数据进行展示,是值得前端开发工程师和UI设计师共同思考的一个问题。今天就从0开始,封装一个动态渲...

peakedness丶
29分钟前
4
0
memcached

memcached 为了避免内存碎片化(传统的内存管理方式是,使用完通过malloc分配的内存后通过free来回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率),采用了 slab allocatio...

Cobbage
30分钟前
3
0
keepalived的介绍及配置高可用集群

12月19日任务 18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群 集群介绍 根据功能划分为2类:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外...

robertt15
30分钟前
5
0
WiFi攻击的三种方式

导读 WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象。那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单。 ...

问题终结者
44分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部