DokuWiki的发现之旅
★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工具,这类工具主要通过接口定义,自动生成模拟数据,前端不再依赖于后端开发进度可以独立开发,并且可以生成复杂边界数据,实现自动化测试,多人在线编辑提高协作效率。同类工具还有YApi和EasyMock,EasyMock是同事极力推荐的,可以结合swagger模拟生成数据,这点确实很方便,还有其他一些比较适用的功能,以后有机会可以试用一下。这类工具确实很方便,但是不太满足现阶段公司的文档需求,以后可以根据业务发展选用该类工具。
4、Confluence被认为是最好用的企业级Wiki和知识管理工具,大型企业用的比较多,功能很强大。在他们官网上体验了一把,由于国外速度比较慢,很多功能没有试用,不做评价。查了下相关资料,配置麻烦,而且还是收费的……虽说可以破解,但是也懒得折腾了。
5、DokuWiki是什么上面都已经介绍过了,为什么最终会选用它呢?首先是不需要数据库这点吸引我在服务器上部署一套试用,因为公司的服务器资源有限,上面跑的还有正式应用……不敢瞎折腾,所以要尽量少的影响正式环境。刚开始使用,第一感觉就是丑、功能少、配置麻烦,但是想想好不容易(装了个PHP环境~)部署到服务器上不能轻易放弃啊,就在网上搜各种教程。发现了复旦大学物理教学实验中心的网站,该网站就是使用DokuWiki搭建的,虽然页面复古了些,但是作为一个实验室内信息共享的平台已经很完善了,里面也有一些DokuWiki的入门文章,从而认识到Wiki这种分享信息的形式发展潜力,wiki是任何人都可以编辑的网页,然后以超链接的形式将信息联系起来,构建一个有灵魂的知识网络系统,坚定了自己使用DokuWiki的信心。从这之后就开始了DokuWiki的折腾之旅,中间也是遇到了各种问题,入门和使用起来也不是很方便,但是通过各种插件也可以满足大多数功能,下一篇就谈一下自己是怎样使用的。
DokuWiki的发现之旅的更多相关文章
- 数据绑定表达式(上):.NET发现之旅(一)
数据绑定表达式(上):.NET发现之旅(一) 2009-06-30 10:29:06 来源:网络转载 作者:佚名 共有评论(0)条 浏览次数:859 作为.NET平台软件开发者,我们频繁与各种各样的数 ...
- 微信小程序 发现之旅(一)—— 项目搭建与页面跳转
开发微信小程序需要注册一个小程序账号,具体流程可以参照官方教程: https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 开通账户之后,在 “开发设置 ...
- 微信小程序 发现之旅(三)—— 组件之间的参数传递
一.URL 传参 当使用 navigateTo() 方法跳转页面的时候,可以在 url 后面接 query 参数 然后在 Page 页面的生命周期函数 onLoad 中可以接收到这些参数 这种方式只能 ...
- 微信小程序 发现之旅(二)—— 自定义组件
组件化的项目开发中,组件应当划分为三个层次:组件.模块.页面 微信小程序已经为开发者封装好了基础组件,页面文件(pages)也有了详细的规定 而模块就需要自行开发,并且要和页面文件区分开,这就涉及到自 ...
- (60)zabbix网络发现介绍Network Discovery
网络发现简介 网络发现有什么用?网络发现怎么配置? 我们带着这两个问题开始我们的网络发现之旅. 比如小明有100台服务器,不想一台台主机去添加,能不能让zabbix自动添加主机呢,当然可以,网络发现便 ...
- 发现意外之美 - SwiftyJSON 源码学习 | 咖啡时间
SwiftyJSON 是一个很优秀 Swift 语言第三方库.我们在之前的文章中对它有过介绍.相信大家对它也有了一些了解.提升开发功力最好的方式就是学习优秀的源代码了,记得大神 TJ Holowayc ...
- Android 关于ijkplayer
基于ijkplayer封装支持简单界面UI定制的视频播放器 可以解析ts格式的so库 怎样编译出可以解析ts等格式的so库?就是编译的时候需要在哪一步修改配置? 一些电视台的m3u8 CCTV1综合, ...
- Winform GDI+ 相关资料
在Visual Studio 2010中定义GDI+自定义控件——自定义控件介绍 http://www.cnblogs.com/zhangdong/archive/2010/05/20/1740177 ...
- 关于“float”的一次探索--遇到了一个span元素可以设置宽高引发的思考
起初,这个问题和float还有设置宽高之间是没有任何关联的,一开始这是一个关于height和line-height的问题,目的是为了探究一下这两者之间的关系,但是在学习的过程中,我翻之前写的代码,发现 ...
随机推荐
- Myeclipse10破解版安装包
下载地址;http://pan.baidu.com/s/1pLka0un
- ehcache与redis的比较与应用场景分析(转)
ehcache直接在jvm虚拟机中缓存,速度快,效率高:但是缓存共享麻烦,集群分布式应用不方便.redis是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存 ...
- SSM-MyBatis-11:Mybatis中查询全部用resultmap
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类很普通,四个字段,编号,名字,作者名,价格 在接口中的方法声明如下 //查全部 public List& ...
- border-radius 详解及示例
border-radius [ˈbɔrdə(r)] - [ˈrediəs] 英文示意: border:边界,国界,边疆 radius:半径,范围 定义: 复合写法: border-radius ...
- Selenium webdriver定位iframe里面元素
在查找元素过程中,直接通过id或者xpath等找不到元素,查看页面源代码发现元素是属于iframe里,例如: <div class="wrap_login"> < ...
- lsb_release -a 查询Linux系统版本
LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息.如果使用该命令时不带参数,则默认加上-v参数.-v, --version显示版本信息 ...
- Java 学习笔记 (八) Java 变量
head first java page85 实例变量是声明在类内而不是方法中 class Horse{ private double height=15.2; private String bree ...
- HEOI2018 游记
day0早上没有跑操,收拾了点东西,带了点吃的,老妈打电话说要给送点厚衣服,好像确实有点冷.上午有考试,说自愿考,然后开到一半就没了,根本没人打啊,打了一道小园丁和老司机,一个一个部分分打,最后T了一 ...
- BZOJ_2151_种树_贪心+堆+链表
BZOJ_2151_种树_贪心+堆 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编 ...
- BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法
BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考 ...