maanantai 22. maaliskuuta 2010

Setting environment variables for Grails on OSX

The best place to store environment variables on OS X is /etc/launchd.conf. The contents of that file are accessible by console applications, and also (unlike ~/.bashrc and the like) by desktop applications.

Paths should be defined in /etc/paths.


In /etc/launchd.conf:

setenv JAVA_HOME /Library/Java/Home
setenv GRAILS_HOME /Developer/grails-1.2.1


In /etc/paths:

/Developer/grails-1.2.1/bin

perjantai 19. maaliskuuta 2010

Max-width / max-height in IE


IE does not play nice with max-width and max-height. Here's how to handle it...



/* real browsers */
max-width: 500px;
max-height: 500px;

/* IE */
width: expression(this.width > 499 ? "500px" : "auto");
height: expression(this.height > 499 ? "500px" : "auto");

torstai 18. maaliskuuta 2010

Java VM options for Grails usage

When developing large(ish) Grails applications, you probably will need to adjust your heap and permgen sizes. Here be the Options!


-Xmx512m -Xms512m -XX:MaxPermSize=128M

tiistai 9. maaliskuuta 2010

How to protect everything from XSS

Simply, add .encodeAsHTML() to everything that users have input on and are printed to views.

For example, if the malicious user changes his/her name to <script src="evilscript.js">giveMeAdminRights(); </script> , using user.name.encodeAsHTML() will prevent the script from being run when the admin views the user's profile.

Also the fieldValue tag will do the same, like this: <g:fieldValue bean="${user}" field="name"/ >

sunnuntai 7. maaliskuuta 2010

The IE 7 z-index problem

Ok, this one is not Grails, but still it took a painful while to get my head around: The IE 7 z-index problem.

lauantai 6. maaliskuuta 2010

ApplicationContext

Accessing application context


import org.springframework.context.ApplicationContextAware
import org.springframework.beans.BeansException
import org.springframework.context.ApplicationContext

class MyServiceOrController
implements ApplicationContextAware {

def applicationContext

def void setApplicationContext(
ApplicationContext appctx) throws BeansException {
applicationContext = appctx
}
}

keskiviikko 3. maaliskuuta 2010

Running Grails commands in specific environment

Every now and then there's a need to run Grails commands from command prompt, in a specific environment. For example, to create a WAR in demo environment:


grails -Dgrails.env=demo war

tiistai 2. maaliskuuta 2010

Importing stuff in GSP files

Sometimes (pretty often, actually) there's a need for importing classes inside GSP files. Here's how the syntax goes:


<%@ page import="fi.company.project.enums.ThingType" %>