10
2011

使用Grails布局功能

Grails使用的是SiteMesh。这是最早在WebWork下使用的布局引擎。但是随着Struts的普及,Tiles的使用远远超过了SiteMesh。不过SiteMesh实现的布局很简介优雅,不需要编写很多劳什子的布局xml文件。

现在SiteMesh集成进Grails,使用起来也更简单了。下面的截图,就是使用SiteMesh的页面。

image

Continue Reading »

10
2011

Grails开发环境下如何生成模拟测试数据

开发环境下经常需要一些模拟测试数据。比如数据库中要有一些初始的实体。Grails提供了很好的办法。可在BootStrap.groovy中:

image

编写只针对开发环境的初始化代码:

import bookproto.Book

class BootStrap {

    def init = { servletContext ->
        environments{
            development{
                def book=new Book(name:"中国史学史")
                book.save()
                println """book id: ${book.id}"""
            }
        }
    }
    def destroy = {
    }
}

以上示例是在Grails的GORM中使用uuid基础上做的处理。

創建PDF格式    发送文章为PDF   
10
2011

招聘Android和iOS实习生

帮助公司发一个招聘广告。招聘Android和iOS实习生。

招聘内容如下:

要求:

  • 在读学生,院校在北京
  • 所学专业和软件开发相关
  • 本科(暑假后上大四)或者研究生(暑假后上研二)
  • 有充足的时间,除了学校临时有事,能基本正常上班
  • 掌握一门面向对象语言,比如Java或者C++,并编写过成型的应用
  • 有责任心,能认真完成交付的工作任务
  • 有较好的双向沟通能力

实习内容:

  • 在资深程序员的帮助下,掌握Android开发基础知识
  • 和资深程序员结对编程,实现项目应用
  • 在实习中能力较强者,在自愿的前提下,可转为iOS的开发

如有符合条件且有兴趣的朋友,可发简历到:hr@witmob.com

PDF格式創作    发送文章为PDF   
8
2011

Grails的GORM中使用uuid

开发中,有很多情况需要使用不连续的随机生成的唯一标识。好处是:

  • 可以隐藏商业细节,比如生成订单,自增列会暴露商业秘密
  • 另外,自增列往往依赖数据库生成,对集群和分布式部署应用有影响,还有就是导入数据时需要对数据库自增列做设置

因此,使用uuid做实体唯一标识的地方很常见。在Grails实现实体自身多对多的变通方案基础上,把默认的native生成主键的方式改为使用uuid:

class Book {

    static constraints = {
        bookRelation(nullable:true)
    }
   
    static mapping = {
        id generator:’uuid.hex’, params:[separator:'-']
   }
   
   String id
    String name
    BookRelation bookRelation
}

PDF    发送文章为PDF   
8
2011

Grails实现实体自身多对多的变通方案

Grails中的GORM,是自动的对象关系映射api。封装了Hibernate,功能应该是Hibernate的子集,不过借助强大的groovy语言使用起来更方便。

项目中需要实现实体自身多对多的关系。图书和相关图书。

image

一本书,有0到多个相关图书。一本书,还可能被0到多个图书相关。这里要注意啦,这两个集合不是重合的。即,a图书的相关图书有b,但b不一定相关图书有a。这也好比,你的朋友中,有人未必拿你当朋友,呵呵。

Continue Reading »

8
2011

Grails从1.4m1版本回退到1.3.7

回退的原因是,在mac环境下,1.4m1版本,修改controller后,系统不能自动的reload。用过grails的人应该知道,重启一次grails是个比较漫长的过程。讨论这个问题的帖子可见:

http://grails.1312388.n4.nabble.com/1-4-M1-Controller-reloading-seems-to-be-broken-td3556582.html

另外,bug链接:

http://jira.grails.org/browse/GRAILS-7594

虽然报告的是win7下的问题,但是应该是类似的。虽然已经fixed了,但是是尚未发布build版本的2.0-M1。

Continue Reading »

6
2011

JQuery编写简单的自定义事件触发

javascript开发中也会用到观察者模式。比如当数据模型改变后,会触发事件。订阅该事件的子视图都将会得到事件,并触发它们调用代码刷新自己的内容。

比如下面要实现的一个简单例子,一上来是这样的:

image

当修改文本框中的文字并点击保存后:

image

Continue Reading »

6
2011

列出当前设备的网卡以及Socket绑定特定网卡

这里是用Java写的示例。如何知道当前的设备有几个网卡:

Enumeration<NetworkInterface> enumeration= NetworkInterface.getNetworkInterfaces();
while(enumeration.hasMoreElements()){
     NetworkInterface networkInterface=enumeration.nextElement();
     System.out.println(networkInterface);
}

 

在我本机上显示:

name:en1 (en1) index: 5 addresses:
/192.168.0.172;
/fe80:0:0:0:7aca:39ff:feb5:a315%5;

name:lo0 (lo0) index: 1 addresses:
/127.0.0.1;
/fe80:0:0:0:0:0:0:1%1;
/0:0:0:0:0:0:0:1;

 

Continue Reading »

5
2011

Grails使用JQuery实现Ajax方式的自动完成

Grails使用JQuery UI实现最简单自动完成中实现了简单的自动完成。但是不具实战意义。因为一般自动完成都是通过ajax的方式在服务器端自动获取的。

这里实现一个简单的通过Ajax实现的示例。首先,在服务器端创建一个假的返回结果页面。url为:

http://your_server:port/your_app/b.txt

正式使用的时候,这个url可以是动态返回结果的,比如这样:

http://your_server:port/your_app/b.gsp?keyword=a

返回的结果格式为json,这里把Grails使用JQuery UI实现最简单自动完成中的数组直接拿过来即可:

Continue Reading »

5
2011

Grails使用JQuery UI实现最简单自动完成

Grails 1.4已经默认集成JQuery了。加入很方便,在gsp页面中:

<html>
   <head>
     <r:require module="jquery"/>
      <r:layoutResources/>
   </head>
   <body>
   </body>
</html>

通过浏览器查看该文件,可以确定使用的jquery的哪个版本:

<html>
   <head>
     
     <script src="/AjaxDemos/static/plugins/jquery-1.6.1.1/js/jquery/jquery-1.6.1.min.js" type="text/javascript" ></script>
 
   </head>
   <body>
   </body>
</html>

Continue Reading »

第6页,共88页« 前...234567891011...后 »