The company I used to work for, Elastic Path in Vancouver, invested heavily in making sure that their ecommerce engine was Search Engine Optimized. This was a complicated black art that involved shaping the URL and content of your web page so that Google and Yahoo could pick up the results. There are tons of books out there about this subject, and even people who specialize in this. The company I’m working for now, through it’s iProspect.com branch, also focuses heavily on Search Engine Optimizing websites and pages.
SEO becomes harder with dynamic Rich UI applications that don’t rely on Ajax. While Google is able to pick up Flash SWF files during it’s crawl, this does not guarantee that the content is parsed correctly or given the same weight as any other file formats or a pure HTML/AJAX page. Worse, if the application uses a web service, how can it be guaranteed that all the pages are crawled and returned correctly.
The project I am working on uses an Adobe Flex front-end and a Grails back-end. We needed a way to inject the flex SWF files into Grails and then deploy into an Apache Tomcat server. After much tampering and banging of head, I came up with a solution that uses GMaven, the Maven Plugin, and Cargo to compile and deploy our modified grails app. Continue reading
Something that I have come across in my experimentation with Grails is the need to have UI elements in the screen that map to more complex elements in the domain model or things that are not stored in the database. I really like the automagic generation of view elements in Grails GSP files, and have used transient properties to generate views that allow for uploading files. In this post, I will discuss how I used the transient property to enable image uploading in Grails.
The content negotiation feature in Grails is pretty cool. In a nutshell, it allows you to return different formats based on the request of your page.
A recent project I worked on used Grail’s ability to generate CRUD as GSP pages to provide a basic CMS service, and an Adobe Flex front-end that communicated with Grails via REST services. We needed a solution that will preserve the original GSP html output, as well as the ability to return the data as XML for the REST layer.
At work, we’ve used the Hudson continous integration engine to manage all our Maven project builds. I had to set up our Grails deployments so they rely on Hudson recently, and spent a few days playing with VMWare, Grails and Ubuntu. This guide will walk through all the steps needed to get a complete build server running Apache, Grails, Tomcat, Hudson on the VMWare server.