2016年1月 更新:编程操练神器 Cyber-dojo 私有服务器搭建

学习 · wubin28 · Created at · Last by wubin28 Replied at · 1854 hits
43

Cyber-dojo(www.cyber-dojo.org)是由居住在英国的软件开发培训师和咨询师Jon Jagger于2010年前后开发的用浏览器来使用的免费在线编程道场,用来在软件开发者中推广刻意的编程操练(http://blog.cyber-dojo.org/p/learn-more.html )。在2015年底cyber-dojo进行了更新,界面更炫,编程语言更多(支持ES6 JavaScript和Bash等),编程招式更多(比如多了fizz buzz plus),每个招式支持同时在线人数高达64人。

Cyber-dojo支持20多种编程语言,每种编程语言有至少一种测试框架可供选择。Jon统计了15000个在线cyber-dojo编程操练发现,数量最多的前5个编程语言和测试框架为:
3125 Java JUnit
2881 C# NUnit
1087 Python unittest
1071 C++ assert
904 C assert

上面编程语言和测试框架的组合,都能用来操练多达41个编程招式。Jon在15000个操练中统计的最受欢迎的前5个招式为:
2091 Fizz Buzz
1830 100 doors
924 Verbal
787 Calc Stats
778 Leap Years

Cyber-dojo的使用场景主要有4个:
1)程序员使用熟悉的编程语言进行TDD编程操练;
2)程序员学习新编程语言;
3)编程道场的组织者为活动参与者提供开发环境,请参加结对编程的参加者,用各自的电脑中的浏览器,通过局域网来访问组织者电脑中的cyber-dojo私有服务器或cyber-dojo.org,来进行编程操练,其间能通过Cyber-dojo提供的统计页面来观察各对编程者测试运行的状态;
4)面试程序员,请程序员在cyber-dojo.org上做编程题目,考官可以使用cyber-dojo的code review工具来查看程序员每一次提交的代码变化。

由于Cyber-dojo在浏览器中不提供编程语言关键字高亮显示,不提供命令提示和自动补足,也不提供重构工具,使得一些重度依赖IDE的程序员会很不适应,但Jon说得好:

“不要试图走得太快,要开始尝试走得慢一些;
不要总想着完成,要始终想着改进;
要想着以团队的形式一起来操练。”

本文描述了在OS X 10.11.2的电脑上安装Cyber-dojo服务器的步骤。由于这些步骤主要是在TurnKey Linux虚拟机里完成,所以对于Host OS是Linux或Windows的读者来说,只要安装了诸如VirtualBox或VMWare这样的虚拟机工具,也能参照本文描述的步骤进行安装。

上述步骤基于Jon Jagger的博文:http://blog.cyber-dojo.org/2014/09/setting-up-your-own-cyber-dojo-server.html 。另外,程序员李小康也为笔者安装Cyber-dojo服务器提供了重要的帮助,在此表示感谢!另外Jon在5小时内解决了我安装新版cyber-dojo时遇到的bug,使得我能顺利安装,并产生了本文的更新,感激之余在cyber-dojo.org官网上捐款10英镑,给孩子们买树莓派迷你电脑学习新技术。

  • 下载并安装VirtualBox 5.0
    https://www.virtualbox.org/wiki/ 下载VirtualBox 5.0,并安装到OS X上。

  • 下载TurnKey Linux Rails 14.0虚拟机image文件
    http://www.turnkeylinux.org/rails 页面上,点击“VMDK”链接,下载turnkey-rails-14.0-jessie-amd64-vmdk.zip,并解压。

  • 创建虚拟机
    在VirtualBox中,按“Command + N”键创建虚拟机。在"Name and operating system"对话框中填写以下内容:
    Name: turn-key-linux-rails
    Type: Linux
    Version: Ubuntu (64 bit)
    Hard drive: Use an existing virtual hard drive file
    选择下载的VMDK文件
    按"Create"创建虚拟机

  • 启动上述虚拟机
    在启动上述虚拟机的过程中,填写以下内容:
    Please enter new password for the root account: <password>
    Confirm Password: <password>
    Please enter new password for the MySQL 'root' account: <password>
    Confirm Password: <password>
    initialize Hub services -> skip
    Security updates -> skip
    RAILS appliance services -> Advanced Menu
    Advanced Menu -> Networking
    Networking -> DHCP
    Select "Back" and select "Reboot"
    RAILS appliance services -> Advanced Menu
    Advanced Menu -> Quit

  • git克隆Cyber-dojo的在github repo上的源文件
    以root登录TurnKey Linux后,运行下面命令
    $ cd /var/www
    $ git clone https://JonJagger@github.com/JonJagger/cyber-dojo
    (注意是"cyber-dojo",中间有减号。旧版的cyber-dojo中间没有减号。)

  • 安装Cyber-dojo服务器、gems和docker
    运行下面命令安装服务器。
    $ cd /var/www/cyber-dojo/admin_scripts
    $ ./pull.sh
    $ ./setup_turnkey_server.sh

  • 安装预建的cyber-dojo docker-images
    以root身份运行命令:
    $ cd /var/www/cyber-dojo/languages
    $ ./docker_list_all_images.rb
    此时能看到cyber-dojo所支持的编程语言与测试框架:
    ...
    cyberdojofoundation/clangpp_googletest == C++ (clang++), GoogleTest
    cyberdojofoundation/coffeescript_jasmine == CoffeeScript, jasmine
    cyberdojofoundation/csharp_nunit == C#, NUnit
    cyberdojofoundation/csharp_specflow == C#, SpecFlow
    cyberdojofoundation/d_unittest == D, unittest
    cyberdojofoundation/erlang_eunit == Erlang, eunit
    cyberdojofoundation/fortran_funit == Fortran, FUnit
    cyberdojofoundation/fsharp_nunit == F#, NUnit
    cyberdojofoundation/gcc_assert == C (gcc), assert
    ...
    根据上表,运行下述命令安装你需要的编程语言与测试框架的image:
    $ docker pull <image>
    例如:
    $ docker pull cyberdojofoundation/clangpp_googletest
    (这里翻墙后速度更快。注意,一旦运行这个命令下载了新的编程语言与测试框架,你需要执行下面的更新缓存的命令来令其生效。)

  • 更新缓存
    以root身份运行下述命令:
    $ cd /var/www/cyber-dojo/caches
    $ ./refresh_all.sh

  • 重启web服务器
    以root身份运行:
    $ service apache2 restart

  • 设置eth0的IP地址并将TurnKey Linux虚拟机关机
    运行命令“shutdown -r now”重启TurnKey Linux。在随后出现的"RAILS appliance services"界面中进行以下操作:
    "Adanced Menu" -> Networking -> eth0 (确保它的旁边有一个星号*) -> DHCP -> Back to "Advanced Menu" -> Shutdown

  • 映射端口
    在OS X中运行以下命令来将Host OS(即OS X)的8000端口映射到Guest OS(即TurnKey Linux)的80端口,以便从Host OS及其所连接的其他机器上访问该Guest OS上运行的Cyber-dojo服务器。
    $ VBoxManage modifyvm "turn-key-linux-rails" --natpf1 "guestssh,tcp,,8000,,80"

  • 访问Cyber-dojo服务器
    启动TurnKey Linux虚拟机,在OS X中,用浏览器访问http://localhost:8000/ ,能够看到Cyber-dojo的首页。使用ifconfig命令,查看一下本机ip,然后试着用手机浏览器访问一下,看看是否能访问到。看到首页后,点击create a practice session,开始享受编程乐趣~


「软件匠艺社区」旨在传播匠艺精神,通过分享好的「工作方式」和「习惯」以帮助程序员更加快乐高效地编程。
共收到 2 条回复
96

您好,感谢您的分享,我在安装的时候遇到docker engine找不到的问题,截图如下:
请问我该如何解决?谢谢

43
wubin28 · #2 ·

我也不会。可以发邮件问问作者Jon:jon@jaggersoft.com 。

需要 Sign In 后回复方可回复, 如果你还没有账号你可以 Sign Up 一个帐号。