`
biomedinfo
  • 浏览: 25112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
今天经过一整天的尝试,终于成功地在EC2上部署了node.js应用,具体步骤如下:先申请 Amazon Web Services(AWS) 账号,链接是:
Domain class: class Data { byte[] pdfFile static mapping = { pdfFile sqlType:'longblob' //use mysql } static constraints = { pdfFile nullable:true } }   gsp view to submit the url to controller: <g:form action="savePdf" > ...
在系统负载达到较大规模的情况下,加硬件的办法是在算法优化的基础上才有效的。   打个不太恰当的比方,算法就像一个武林高手的内功,硬件是兵器,开发工具则是招式。内功不行,就算会很多招式,拿着倚天剑屠龙刀,可以吓唬吓唬武功一般的人,但是碰到打硬仗就会死得很惨。 再说远一点。现在有很多开发者热衷于最新潮的技术,今天玩玩noSQL,明天搞搞Html 5,但是却从来没有真正做出一个能发挥出这些技术最大优势的产品来,最终也不能理解这些技术的精髓。这就是内功不行而心态又很浮躁。   我所在的开发组拿MongoDB做后端数据库的时候, 一开始 就没有真正理解这个技术, ...
1. Service层:在企业应用中,应该提供一个抽象层,封装业务逻辑,降低MVC各 层之间的耦合度。Service层就提供了一种把应用逻辑集中化到一套 API供 controller和其它service使用的机制。封装业务逻辑到Service层的主要需求是: * 集中化业务逻辑到一套Service API; * 应用在多个Domain类上运行,复杂的业务模型难以在controller的逻辑中实现; * 用户案例和业务流程更适合封装在Domain对象之外的API里。 当然,Service会有很多的dependencies,例如持久层数据源 (JDBC,ORM),Session Fa ...
  1. GORM的基础知识回顾: object get(id), List getAll(List idList), 和 object read(id)的差别是,get(包括getAll)方法从持久层返回的对象是可修改状态,而read方法返回的对象是只读的。 list()方法有一种动态形式是listOrderBy*,例如listOrder ...
1. 截止到目前,我们讨论的都是无状态的客户端-服务器交互,grails认为应用程 序中的action都是简单的单步处理,不需要知道用户当前操作的状态和前后步骤。 但是在某些情况下,应用程序的处理是和前后步骤相关的,比如典型的购物车,用 户必须确认购买的物品和价格、输入送货地址、验证信用卡支付才能确认订单并显 示收据,用户直接跳到确认订单的步骤是不合法的。 在无状态的应用框架下,程序员需要自己保存当前状态(比如利用session或者是 cookie),然后在controller里通过大量编码来确保步骤的顺序进行,并且自己提 供各种边界条件的判断和处理逻辑。在度过大量不眠之夜终于完成 ...
1. Ajax的起源和发展:花开两朵,各表一枝。话说当年微软为了让自己的web版Outlook看起来和桌面应用差不多,就把Ajax作成了IE浏览器的一个ActivX插件,然后通过JavaScript调用它进行异步的浏览器request。大家一看觉得不错,于是把它进一步标准化,产生了一个叫XMLHttpRequest的本地JavaScript对象,用来支持其他的浏览器,从而激发了Web 2.0的革命!微软在IE 7.0开始支持XMLHttpRequest作为本地对象,但是6.0里还是ActivX插件,所以在编码时还得先检测浏览器,再确定其加载方式。例如: var req=null; if(wi ...
1. 先补充一些第五章有关标签的: GSP 模板:利用GSP template进行GSP的复用,并简化比较繁杂的页面处理。 g:render:在GSP中使用这个标签来引用GSP模板,相当于把GSP模板中的代码粘贴 到g:render标签的地方,对应的controller 需要提供GSP中使用的model数据。 测试定制的标签:扩展grails.test.TagLibUnitTestCase类,grails内置的tagLib 属性包含了所有的定制标签(如 tagLib.repeat() ) ,tagLib.out.toString()可 以得到模拟的页面输出。 2. 缺省 ...
1. JSP: 为了支持页面的动态输出,在传统的静态HTML上混合了Java代码(scriptlets:<%.......%>),这也是JSP最被牛人们所诟病的特性,因为 这会导致JSP被滥用,把原本属于Controller的操作混入View层,破坏了 MVC的清晰结构,如果任其发展下去,最终整个系统的代码将无法维护。为了解 决这一问题,JSP支持定制的标签(tag)来提供对页面进行逻辑抽象,于是就有 了JSTL和EL。   2. GSP:真是既生瑜何生亮,grails在JSP的基础上又搞了一套GSP。既然JSP已经完善了自己,那为啥grails还要多此一举呢?这不是违背 ...
1. Controller类:Controller类为每个request产生一个实例,这样开发人员就不需要维护线程安全的代码。   2. 每个Controller里都被注入了一个log属性用于日志的处理,这个log属性是org.apache.commons.logging.Log类的一个实例,可以在Controller的每个action或method里直接使用,例如在catch到异常的时候,可以用 log.error('message', e)进行记录(Groovy把所有的异常都转换为运行时间异常,因此Groovy代码可以不catch它们,这是和Java开发所不同的)。   3. 慎重使 ...
1. 在grails平台下,测试驱动开发的特别必要性:由于Groovy的动态本质,在编译时间并不能提供充分的检查,一些错误只有在运行时间才能被发现,包括方法的解析,因此在我们create-controller的时候,grails会一同生成test case。在grail ...
Global site tag (gtag.js) - Google Analytics