今天上海的天气真是不错,风和日丽。再次来到微软上海紫竹研发中心,心情很是愉快,喜欢这里的大草坪,喜欢这里的工程气氛,更喜欢今天来陪我的小伙伴们。

这次动手实验培训与以往最大的不同就是采用了开源文档的方式。其实,小编一直在寻找一种更好的技术文档编写方式。说到文档,我在过去的几年中也写了不下500份不同类型的文档。我估计,每个写过技术文档的同学都有类似这样的文件夹。

是不是很有一种蛋疼的感觉,没有办法啊,需求改来改去,客户的要求变来变去 … … 最后么,就没有最后了,你就自己苦逼去吧。

所以,自从开始筹划这次培训开始,我就希望能够有一种更好的方式来编写技术文档,直到我发现了

http://docs.asp.net

这是微软下一代 ASP.NET的技术文档,但吸引我的是它右上角的这个 Edit on Github 链接,点进去一看果然发现它的源代码是在GitHub上开源的。

顺藤摸瓜,我找到了这个神奇的网站 https://readthedocs.org/

研究一下,我发现使用GitHub + ReadTheDocs.org,终于可以满足我对技术文档的编写要求了:

– 你所编写的内容是与展现形式无关的:这里使用的格式是reStructuredText,这是一种类似Markdown的标记语言,比如:

文档源代码

生成的HTML效果

是不是很cool,特别是最下面的 练习列表 部分,只要直接引用相关的文件,就可以生成很漂亮的链接。

– 文档的源码仍然具备很好的可读性:相比HTML而言,reST格式的各种标记与内容融合在一起的,而不是环绕在你的源码周围的,比较一下表格的写法,你就知道我是什么意思了。

源码

生成的HTML效果

想象一下如果要编写这样的表格,用HTML代码如何写你就知道我的意思了。

– 文档可以以多种格式输出:reST可以被很容易的解析成HTML,PDF,ePub等多种发布格式,便于在不同的设备上进行访问,注意左侧的Downloads部分

– 可以很容易的比较和跟踪内容变更:类似word/html这种文档,是很难进行版本比较的,但reST让着一切变得无比容易,而且你可以使用很简单的纯文本编辑器,不在需要笨重的Word。

使用Visual Studio Code进行内容比较

– 可以借助git丰富的分布式协作来支持多人同时编辑,离线编辑,多分支,合并等复杂的协作场景。

这次的培训中所使用的文档编写流程:

– 在我的github中建立了文档的主版本
https://github.com/ups216/vsalm-hols
– 在同事的github中fork我的主版本
– 可以同时编辑文档,并通过pull request互相分享最新的文档源码
– 在ReadTheDocs上建立了项目,同时设置了webhook,在向github push代码后直接部署到以下地址
https://vsalm-hols.readthedocs.org/

这样,我们可以同时编写文档,就算同时修改了一个文件,也可以很容易的diff其中的区别,进行合并。同时,发布以后又可以很容易的分享给感兴趣的人。ReadTheDocs上面的文档是可以自动适应不同的设备的:

在PC浏览器中是

在手机浏览器中是这样的

在这次的培训中,学员也普遍反映这种文档非常好用,便于分享,还可以通过github的issue来反馈问题。

好吧,最后给出这次发布的VSALM-HOLs动手实验文档链接,感兴趣的同学可以通过以下链接访问,或者在github上fork我们的文档,如果遇到问题也欢迎通过github给我们提issue,甚至提交pull request,谢谢。

文档链接:
https://vsalm-hols.readthedocs.org

GitHub库地址:
https://github.com/ups216/vsalm-hols

拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布的更多相关文章

  1. 【DevOps敏捷开发动手实验】开源文档 v2015.2 stable 版发布

    Team Foundation Server 2015 Update 2版本终于在2周前的//Build 2016大会上正式发布了,借这个东风,小编也完成了[DevOps敏捷开发动手实验]开源文档的第 ...

  2. 秦俊:开放 DevOps 敏捷开发套件,助力开发者驰骋云端

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ DevOps可以让人工智能(AI).大数据(Bigdata).云计算(Cloud)更加高效地落地,越来越多的企业和团队在践行DevOps. ...

  3. IceScrum敏捷开发工具的安装文档-官方最新版

    Welcome to the iceScrum iceScrum install guide. If you don’t want to manage your own iceScrum instal ...

  4. 用户故事驱动的敏捷开发 – 2. 创建backlog

    本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...

  5. 传统开发模型vs敏捷开发模型——过程模型的变革

    一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...

  6. 敏捷开发方法-Scrum

    为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...

  7. 敏捷开发 与 Scrum

    敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...

  8. 敏捷开发与Scrum

    敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...

  9. 开源文档管理系统LogicalDOC测试报告---安装篇

    开源文档管理系统LogicalDOC测试报告---安装篇 分类: Linux2011-06-22 15:40 7436人阅读 评论(3) 收藏 举报 文档管理测试mysql数据库installerja ...

随机推荐

  1. Ubuntu杂记——Ubuntu自带拼音输入发杂乱不堪

    打开终端,用管理员权限输入ibus-daemon -drx,重启即可

  2. 如何搭建NTP服务

    最近,在搭建Oracle RAC过程中,需要用到DNS和NTP,其中,DNS用于域名.IP管理,NTP用于时间同步.其实,很久以前搭建过这两种服务,但技术,本质上,符合“用进废退”的客观规律.用得越频 ...

  3. 组件化h5活动模板的实现

    需求: 实现一套灵活的活动组件模板,编辑人员只需要打开后台,拖拽相应组件,填入相应内容,最终就生成一个活动页面. 因为涉及投票,评论,关注等功能(每个功能都当做一个组件),所以一个富文本编辑器是无法实 ...

  4. aud$定位错误用户密码登陆数据库的具体信息

    环境:Oracle 11.2.0.3 客户端使用错误的用户密码登陆数据库 查询最近1天由于密码错误登陆失败的信息 查询当前审计中有哪些returncode值 1. 客户端使用错误的用户密码登陆数据库 ...

  5. Linux中mongodb安装和导出为json

    采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以远程导出,只要有h ...

  6. Final Cut Pro X效果插件开发总结

    一.介绍 最近公司需要针对Final Cut Pro(FCP)开发一款效果插件,用于对公司自己开发的视频格式进行后期处理.Final Cut Pro是苹果公司推出的一款视频剪辑软件,因此需要在OSX平 ...

  7. Windows Server配置Jenkins,实现监测SVN提交自动构建.net4.5的项目

    1,持续集成 概念:http://baike.baidu.com/view/5253255.htm,对于大多数人而言,自动构建/自动测试/自动部署,已经很发挥它的价值了.选择上: 推荐jenkins, ...

  8. c#通用登录模块,简单好用,一贴见效

    // 举个例子:一个网站有用户系统.商家系统.网站后台3个系统 //可以分3个userType, user ,shop , system //网站后台一般都有角色,如admin,employee // ...

  9. Asp.net 面向接口可扩展框架之类型转化基础服务

    新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...

  10. 【Java每日一题】20161221

    package Dec2016; public class Ques1221 { } class Parent{ public void test(){ System.out.println(&quo ...