Gradle 1-2-3

上一篇提到了Gradle,没想到这么快就用上了。Twitter的Scala教程1基本看完之后,就开始看《Scala in Action》2了,作者在书的第二章给出了一个例子:用Scala写一个Http客户端,实现命令模式的REST请求交互,在例子中作者使用了Jetty/Maven构建后台的Java Servlet。我想这是一个学习Gradle的好机会,于是就有了Gradle的1-2-3作为入门篇。

SBT真的简单吗?

正在学习Twitter的Scala教程,前面的基础部分就是复习,相对容易理解一些。一看到Advanced Types这一节,尤其是后面的部分就有点缺氧。终于熬着算是看完了这一节,心想:这下轻松了,看看SBT(Simple Build Tool),动手实验一下,没有那么多抽象概念了,多好!谁知道还是想错了,SBT并不简单。

Scala for the Impatient

关于这本书

花了两周左右的零散时间把这本书的免费部分(初级语法/A1 Level/共9章)读完了,同时也做完了比较有代表性的习题。感觉有些收获,起码对Scala语言有了基本的认识,并且通过上手操练,也积累了一些入门经验。不过,由于Scala的一些语法还是比较反直觉,并且语法规则、编程范式较多,因此距离真正掌握这门语言还差得远。本书中提到了Scala语言创建者Martin Odersky对于Scala开发技能的水平划分(见下图),我应该刚刚才达到A1水平。

Scala不容小视

春节这几天学习了一下Scala,因为每天时间都非常有限,也就平均1到2个小时的样子,所以只关注了两个资源,一个是Coursera上Scala语言发明者Martin Odersky的Functional Programming Principles in Scala课程,另一个是Typesafe上的电子书Scala for the impatient

Coursera上的课程还是不错的,很正宗、原汁原味,对于深入理解Scala的函数式编程范式非常有帮助,但是后面的一些内容对于应用开发者来说应该是有点难了(呵呵,我自己感受啊),更适用于中高级应用开发或者库开发者,所以在看完了前5周的课程之后,为了能重新巩固基础,我使用了第二个资源,即Scala for the impatient。作为后续的学习计划,当然还是要学完Coursera,然后把课程中推荐的书看一下。

Hexo写作环境从Ubuntu迁移到Windows

引言

之前一直在Ubuntu Linux上写博客,不是很方便。今天抽空把Windows的环境也搭一搭。我自己电脑用的是Windows 8,不过本文对于大多数版本的Windows环境都适用。

迁移过程

首先,移步到Hexo的官方博客,找到Windows下部署的博文,先把基础环境搭好。博主写得很详细,而且通俗易懂,就不用我多废话了。如果你是刚开始用Hexo写博客,就直接用这个当向导就可以了,如果你像我一样是从Linux下迁移过来的,那么需要把Node.js和Hexo环境安装好,然后按照下面的步骤继续进行。

GORM查询

GORM是Grails中的一项关键技术,也就是Grails的ORM层,对底层的Hibernate进行了包装,提供了特定的语法,并兼容原有的数据>库查询方式如HQL等。

根据官方推荐的教程GORM Recipes,我们可以逐步了解如何使用GORM的方式进行
数据库表的操作(教程的例子中使用了两个表,是一对多的关系),并举例说明了如何执行常见的SQL查询。由于原来的test-bed代
码是基于Grails 2.0.4的,如果直接下载使用会报错,所以我用grails create-app新建了一个项目,然后把相关代码导入到这个
新项目中就可以运行了。除了框架之外,实际上主要是BootStrap.groovy和domain中的Artist.groovyWork.groovy三个文>件作为支持代码。我把原来教程的脚本练习了一遍,并把联系的脚本源码放到scripts目录中,然后fork了一个repo,地址在:GORM Recipes for Grails 2.3.5,可供参考。

Grails初体验

Groovy脚本语言由于之前提到的诸多新特性,可以作为JVM平台上Java语言的有力补充,对于熟悉Java语言的开发者无疑是个好消息:能使用非常近似的语法而代码生产力数倍提升,何乐而不为?Groovy语言可以应用在不同的领域,当然因为互联网的缘故,网站应用是语言发展必须要考虑的重点,这也就是为什么松本行弘《代码的未来》中提到,由于Rails的流行才使得Ruby语言逐渐火热起来。Grails便是在这种背景下产生的基于Groovy语言的Web开发框架,顾名思义:Grails即为Groovy plus Rails,所以可以理解为JVM平台下的Rails框架。