★DokuWiki介绍

Wiki是什么?是一种允许一群用户用简单的描述来创建和连接一组网页的社会计算系统,可以让人们在web的基础上对Wiki文本进行浏览、创建和更改,是一种人类的知识的网络系统,有助于在一个社群内共享某个领域的知识。

DokuWiki是什么?是一个符合标准、简单易用的Wiki,主要用于创建任何类型的文件。它适用于开发团体、工作小组和小型企业。它有简单而强大的语法,确保数据文件在Wiki外仍然可以阅读,并简化了结构化文本的创建。所有数据都保存在纯文本文件中--不需要数据库。

★DokuWiki相遇

事情是这个样子的:之前公司的主要产品是一款APP,首先我们需要定义接口文档,方便前后端同时开发。刚开始使用传统的方式--万能的Word+SVN,SVN主要用于文档的版本控制和协作。刚开始接口少,更新完文档之后,吼一嗓子,同事就会同步最新的文档,貌似还很顺利。随着接口越来越多,修改越来越频繁,这种靠吼的同步方式,就显得效率低下。同时也暴露了一些弊端,虽然有版本控制,会存储历史记录,但是SVN对这种非简单格式的文本不能记录文档的具体变化,也就不能对比历史记录修改了什么,当对接口历史追溯的时候,就显得捉襟见肘,这就造成沟通和维护成本比较高。这时就亟待一个接口文档的管理系统解决以上问题。

首先第一个要求必须是Web应用,这样客户端只需要浏览器,可以方便在线修改后及时同步更新。其次是可以部署到本地的,最好是开源,我们的接口文档属于内部人员查看,不能暴露给第三方,虽然某些系统可以提供在线服务,但是安全性得不到保证。还有比较重要的一点就是,上手容易,门槛较低,最好有统一的接口模板,不用每次重新写,开发人员写代码已属不易,何必跟自己过不去呢。于是在网上一番搜索,总结了现在市面上比较流行的接口管理或者文档管理系统,由于时间和水平有限,覆盖面可能只有一小部分,只针对某类比较典型的框架或系统进行分析,仅代表个人观点

1、Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger文档的编写可以采用两种方式,一是手动编写Swagger文档,大概看了一下swagger的语法,还挺复杂的,暂且不讨论。二是可以从代码注释中自动生成,这也是目前公司所采用的,这种方式语法简洁,使用方便,一键生成固定的文档格式,还可以在线调试接口,确实是开发利器。但是这种方式做为一种文档管理系统还是有一些局限性。例如不能查看接口的文档修改历史,只能通过代码中的注释和版本管理工具进行对比,还有就是没有搜索的功能,所以我们现在是使用swagger作为辅助文档和在线调试的工具。

2、ShowDoc一个适合IT团队的在线文档分享工具,使用Markdown编辑实时预览,也可以编辑模板一键插入,有历史版本可以追溯,使用简单,功能专注,还有word文档导出功能,确实作为一个接口文档管理系统功能已经够用了,个人来说比较喜欢。但是考虑到公司以后的发展,需要在线存储文件,更精细化的权限控制等功能,这些ShowDoc暂时无法实现,只能忍痛割爱了。同类型的产品还有MinDoc小幺鸡等,做的都还可以,可以试用对比一下。

3、RAP是一个阿里巴巴旗下的阿里妈妈前端团队出品的mock工具,这类工具主要通过接口定义,自动生成模拟数据,前端不再依赖于后端开发进度可以独立开发,并且可以生成复杂边界数据,实现自动化测试,多人在线编辑提高协作效率。同类工具还有YApiEasyMock,EasyMock是同事极力推荐的,可以结合swagger模拟生成数据,这点确实很方便,还有其他一些比较适用的功能,以后有机会可以试用一下。这类工具确实很方便,但是不太满足现阶段公司的文档需求,以后可以根据业务发展选用该类工具。

4、Confluence被认为是最好用的企业级Wiki和知识管理工具,大型企业用的比较多,功能很强大。在他们官网上体验了一把,由于国外速度比较慢,很多功能没有试用,不做评价。查了下相关资料,配置麻烦,而且还是收费的……虽说可以破解,但是也懒得折腾了。

5、DokuWiki是什么上面都已经介绍过了,为什么最终会选用它呢?首先是不需要数据库这点吸引我在服务器上部署一套试用,因为公司的服务器资源有限,上面跑的还有正式应用……不敢瞎折腾,所以要尽量少的影响正式环境。刚开始使用,第一感觉就是丑、功能少、配置麻烦,但是想想好不容易(装了个PHP环境~)部署到服务器上不能轻易放弃啊,就在网上搜各种教程。发现了复旦大学物理教学实验中心的网站,该网站就是使用DokuWiki搭建的,虽然页面复古了些,但是作为一个实验室内信息共享的平台已经很完善了,里面也有一些DokuWiki的入门文章,从而认识到Wiki这种分享信息的形式发展潜力,wiki是任何人都可以编辑的网页,然后以超链接的形式将信息联系起来,构建一个有灵魂的知识网络系统,坚定了自己使用DokuWiki的信心。从这之后就开始了DokuWiki的折腾之旅,中间也是遇到了各种问题,入门和使用起来也不是很方便,但是通过各种插件也可以满足大多数功能,下一篇就谈一下自己是怎样使用的。

DokuWiki的发现之旅的更多相关文章

  1. 数据绑定表达式(上):.NET发现之旅(一)

    数据绑定表达式(上):.NET发现之旅(一) 2009-06-30 10:29:06 来源:网络转载 作者:佚名 共有评论(0)条 浏览次数:859 作为.NET平台软件开发者,我们频繁与各种各样的数 ...

  2. 微信小程序 发现之旅(一)—— 项目搭建与页面跳转

    开发微信小程序需要注册一个小程序账号,具体流程可以参照官方教程: https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 开通账户之后,在 “开发设置 ...

  3. 微信小程序 发现之旅(三)—— 组件之间的参数传递

    一.URL 传参 当使用 navigateTo() 方法跳转页面的时候,可以在 url 后面接 query 参数 然后在 Page 页面的生命周期函数 onLoad 中可以接收到这些参数 这种方式只能 ...

  4. 微信小程序 发现之旅(二)—— 自定义组件

    组件化的项目开发中,组件应当划分为三个层次:组件.模块.页面 微信小程序已经为开发者封装好了基础组件,页面文件(pages)也有了详细的规定 而模块就需要自行开发,并且要和页面文件区分开,这就涉及到自 ...

  5. (60)zabbix网络发现介绍Network Discovery

    网络发现简介 网络发现有什么用?网络发现怎么配置? 我们带着这两个问题开始我们的网络发现之旅. 比如小明有100台服务器,不想一台台主机去添加,能不能让zabbix自动添加主机呢,当然可以,网络发现便 ...

  6. 发现意外之美 - SwiftyJSON 源码学习 | 咖啡时间

    SwiftyJSON 是一个很优秀 Swift 语言第三方库.我们在之前的文章中对它有过介绍.相信大家对它也有了一些了解.提升开发功力最好的方式就是学习优秀的源代码了,记得大神 TJ Holowayc ...

  7. Android 关于ijkplayer

    基于ijkplayer封装支持简单界面UI定制的视频播放器 可以解析ts格式的so库 怎样编译出可以解析ts等格式的so库?就是编译的时候需要在哪一步修改配置? 一些电视台的m3u8 CCTV1综合, ...

  8. Winform GDI+ 相关资料

    在Visual Studio 2010中定义GDI+自定义控件——自定义控件介绍 http://www.cnblogs.com/zhangdong/archive/2010/05/20/1740177 ...

  9. 关于“float”的一次探索--遇到了一个span元素可以设置宽高引发的思考

    起初,这个问题和float还有设置宽高之间是没有任何关联的,一开始这是一个关于height和line-height的问题,目的是为了探究一下这两者之间的关系,但是在学习的过程中,我翻之前写的代码,发现 ...

随机推荐

  1. 开机出现 grub rescue> 终端模式修复方法

    1.  先使用ls命令,找到Ubuntu的安装在哪个分区:     grub rescue>ls     会罗列所有的磁盘分区信息,比方说:     (hd0),(hd0,msdos3),(hd ...

  2. Oracle中的优化问题

    1. 在查询时, 尽量使用列名; 2. 在子查询和多表查询都可以达到目的时, 尽量使用多表查询; 3. 在集合运算中, 如果集合中含有null, 那么不能用not in, 但可以用in(可以理解为nu ...

  3. spring配置文件中context:property-placeholder导入多个独立的配置文件

    spring中 context:property-placeholder 导入多个独立的 .properties配置文件? Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个 o ...

  4. Render

    render 渲染元素 元素是React应用程序的最小构建块 "根"DOM节点,它内部的所有内容都将由React DOM进行管理 仅使用React构建的App程序通常具有单个Dom ...

  5. SpringCloud实战-Feign声明式服务调用

    在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率 ...

  6. CS224n笔记0

    我准备跟随码农场hankcs大神的脚步,学习一下斯坦福的CS224n课程. 关于该课程的简介,hankcs大神已经写得很清楚了.

  7. jQuery.on() 函数详解 【转载】

    注意事项 1:on()为指定元素的一个或多个事件绑定事件处理函数.(可传递参数) 2:从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind(). d ...

  8. Extjs--12种布局方式

    按照Extjs的4.1的文档来看,extjs的布局方式大致有12种,下面一一介绍,有些代码就是文档中的. 1.Border 边界布局 border布局,最多可以将页面分割为"东南西北中&qu ...

  9. Android 5.x Theme 与 ToolBar 实战

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45303349: 本文出自:[张鸿洋的博客] 1.概述 随着Material D ...

  10. linux下设置phantomjs环境变量

    1)vim /etc/profile2)在文件的最后一行,添加安装路径path语句:(注意路径是phantomjs的安装路径)export PATH=${PATH}:/usr/local/src/ph ...