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

(2014-07-07) Scala热情workshop: 结对实践课马上要开始了,你来吗?

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

西安办公室的«Scala热情workshop»已经开始三周了,经历了感性介绍、基础概念串讲、在线习题讲解之后,将于本周正式进入结对实践。有些同学可能对scala也感兴趣,但由于种种原因没有参加完前面的课,现在想参加的话还来得及吗?

答案是没问题!

因为前几节实践课,要实现的功能都是极简单的。我们把功能分解成了一个个极小的任务,并且会结对编程,还有现场指导,都可以帮助你尽快上手。当然,如果真的有兴趣,还是希望能先看一下Scala方面的书籍,比如《快学Scala》,《Scala编程》等书。

前三课节的回顾

Scala热情workshop已经开了三周,每周一节课。我们先回顾一下这几节课做了什么,让没有完全参加的同学知道自己错过了什么。

第一节课是“感性认识”。任小君同学以简单的代码,展示了scala中一些与众不同、独具魅力的特性;张锦文同学以生动的图片展示了一下scala类型系统中的协变、逆变;李鹏同学讲述了Scala初学者对它的一些认识上的误区。

第二节课是“基础概念”的串讲。Scala相对于Java等语言,更加偏学术一些,里面有很多基础的概念,如果没有理解清楚(或者不知道它们的存在),在后面的学习中很容易卡住。所以李鹏同学在一开始,就把这些概念(如class, type, subtype)等串讲了一遍,让大家先对它们有一些印象,然后在以后的实践中有获得更深刻的认识。

第三节课是“习题讲解”课。在前两节课的课余,我们实现了一个简陋的scala在线做题网站(shuzu.org),里面布置了几道题目,绝大部分同学在这节课前都完成了。这节课里,我们对大家的答案进行了讲解,找出其中的优缺点。最后,我们讨论了如何开始真正的实践课。

实践课的内容、计划

实践课的内容

以shuzu.org的功能为蓝本,通过“分story”,“结对开发”,“代码Review”,“CI构建部署”,这些与我们日常工作相似的方式,让大家在尽量真实的环境中学习和使用scala,从中找到一些好的scala实践,可以直接应用到未来的项目开发中。

模块划分

我们把整体功能划分为五个单独的模块,其中有四个以micro service的方式提供服务,另一个通过对它们的调用组装成最终的网站。

五个模块的描述如下:

  1. 题库管理: 对题库进行管理,可添加、修改、删除、查看题目。该模块独立部署,以restful api的方式向外提供接口。
  2. 用户管理: 可对用户进行增删改查,可登录、退出,权限管理(普通用户、管理员)。该模块独立部署,以restful api的方式向外提供接口。
  3. Scala代码在线验证:可执行一段scala代码,并通过相应的输入、输出数据,检查该代码的正确性。该模块独立部署,以restful api的方式向外提供接口。
  4. 做题管理:可记录用户每次做题时的答案和最终结果。该模块独立部署,以restful api的方式向外提供接口。
  5. 最终网站:通过调用前四个模块的功能组装成一个真正可用的网站。用户可通过网站界面进行注册、登录、做题、查看结果等功能。该模块独立部署,以网站界面的方式供用户使用。

技术选型及环境

  1. Scala
  2. Playframework: 所有模块均采用playframework,原因是它提供了最好的文档和产品化支持
  3. CI: 自建Jenkins, 地址:http://jenkins.shuzu.org
  4. 发布:5个模块都将发布到heroku上

时间计划

这将会是一个较长期(三个月左右)的workshop,主要是因为scala本身的特性很多,需要较长时间的练习才能掌握。我希望能在这个workshop结束后,参与的同学都能达到独立开发Scala项目的要求。

如果你中途出差或者很忙,也可自己领卡做,但一定要找人帮你review一下。

代码Review和重构

我们做卡的最主要的目的是为了让大家能更好的学习和思考Scala,所以代码Review是重要的一环。我们将在每次workshop中Review大家的代码,每张卡做完后,都必须找人review才能进入Done。鼓励大家对代码进行重构,追求更好的代码。

一张卡的完整流程

找Pair -> 拿卡(或自建卡) -> 讨论清楚需求 -> 开发(TDD) -> 找人Review(改进) -> Git Push -> CI过 -> Heroku可正常访问 -> Ready for Check -> Done

项目地址

https://github.com/tw-scala-workshop

每个项目的README中都写了CI和Demo的地址,可自行查看。Jenkins帐号找我要。

comments powered by Disqus