Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2015-01-26) Pair神器 - Remote Pair Tool

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

Pair神器 - Remote Pair Tool


什么是结对编程

“结对编程”是我司每天都会进行的一项实践,通常由两个人坐在一起,在同一台电脑上,一起开发某个功能或者解决某个问题。

在结对的过程中,两个人会进行强烈的交互。比如一个人写测试,另一个人写实现让这个测试通过。

在每一个时刻,只会有一个人在敲键盘。


结对时可能会遇到的一些困难

由于两个人要坐在一起,且共用一台电脑,难免会有一些不方便的地方。

比如:


快捷键和配色

  1. 我想用Idea默认快捷键,而我的同伴想用Vim快捷键(通过Idea Vim插件)
  2. 我有一些常用的快捷键,但同伴的电脑没有设置(并且也不想设置)
  3. 我想用黑色背景,而同伴习惯白色背景

两人共用一台电脑,就意味着一个人或者两个人的妥协,而顺手的快捷键设置和配色对开发效率大有帮助。


隐私与个人事务

  1. 我不想看同伴电脑上的隐私
  2. 我们在同伴的电脑上工作,但我需要随时关注我自己的邮件或者IM上的信息

距离

  1. 我需要与客户一起解决一个问题,但是我在中国,客户在澳洲
  2. 我们团队的人员分散在不同办公室,我在西安,同事在北京

只能通过视频交流问题,而编码工作将会交给某一个人或者同一个地方的人完成。


我们需要远程Pair工具

我们需要一个远程Pair工具,它拥有以下特性:

  1. 每个人可以使用他自己电脑上的编辑器(自己的快捷键、配色、设置等,不需要妥协)
  2. 每个人输入的内容可以实时更新到对方的编辑器中(保证内容一致)
  3. 两个人可以同时输入,互不影响(更加自由)
  4. 不同国家的人一起使用时,同步速度足够快

可能带给我们的变化

提高工作效率

异地团队


在家办公

与客户结对做卡


当前市场上已有产品及问题

  1. floobits
    • 优势:1. 可使用多种不同的编辑器(Vim, Emacs, Idea, Sublime)合作 2. 成熟,商业性
    • 遗憾:1. 私有项目需要收费 2. 代码需要保存在floobits服务器上(外泄风险)
  2. etherpad
    • 优势:1. 开源免费 2. 支持线上及桌面编辑器(跨平台)
    • 遗憾:只能使用它提供的编辑器,而不是使用你习惯的编辑器

  1. vim/emacs + tmux
    • 优势:简单,方便,很多人使用
    • 遗憾:只能使用Vim/Emacs
  2. 其它很多
    • 遗憾:多数都只能使用基于浏览器的编辑器,或者一个特制的编辑器

我们的特色

  1. 免费开源
  2. 服务器可位于内网(或者自己的电脑上),代码不外泄
  3. 支持不同的编辑器(Idea/Sublime/Eclipse等),你可以使用自己顺手的编辑器
  4. 支持两人或更多人协作(可结对,可code-review,可培训)
  5. 多种模式(光标跟随,或者并行编辑)
  6. 支持发送消息

哪些是我们不做的

  1. 语音
  2. 视频
  3. 屏幕共享

请与相关专业工具配合使用


目前已经完成的部分

  1. 服务器(独立运行,或者内嵌于Idea插件中)
  2. 基于Idea的插件(支持Idea、RubyMine、Webstorm等全系列)
  3. 多人协作,内容同步
  4. 多种模式(光标跟随,或者并行编辑)

更多功能还在开发中


技术栈

  1. Scala
  2. Netty (NIO)
  3. Idea Plugin API

架构:单服务器 + 多客户端(编辑器)

0


使用流程




下面将以图片方式演示各功能


在一个插件中启动服务器

1


启动成功,默认绑定8888端口

2


连接到服务器

3


4


创建一个项目,并指定一个名字

5


选择应该忽略的文件(如配置文件,.git目录等)

6


打开另一个编辑器,并打开另一个项目目录

7


连接到相同服务器

8


加入之前创建的项目

9


同步文件

10


11


在一个编辑器中修改内容后,会实时更新到另一个编辑器

12


13


一个编辑器中的光标,在另一个编辑器中会以红色竖线显示

14


在一个编辑器选中的内容,会在另一个编辑器中显示为绿色背景

15


将模式改为“并行编辑”

16


两个编辑器可打开不同的文件进行编辑

17


实物演示!


Q & A

comments powered by Disqus