Mohd Farid


Day 3 at SpringOne2GX 2013

Day 3 of SpringOne2GX'13 was full of new experiences and learning. Knowledge is flowing everywhere and its an amazing feeling listening to the people whom we have been reading and following for so long. The energy and enthusiasm among both attendees and presenters are very high and really appreciable. It reminds me of our Code Camp days...



Redis: Heavyweight Tags – an awesome use-case for caching with Redis

Redis plugin provides a beautiful way to cache the html tags. Using this plugin we can make big savings on the time taken to render the gsp tags. [java] <redis:memoize key="someKey" expire="3600" > //Some heavy weight tags rendering // Lots of db / network operations. </redis:memoize> ...



Redis: Tag Cloud using Redis

I would like to share a simple and efficient way of creating tagclouds that I discovered very recently. A Tag Cloud is a pictorial representation of some tags/text. The size of the tag/text is drirectly proportional to the weightage of that tag/text. A sample tag cloud could be seen on our blogs site. How to do it? [java]A very...



Discovering grails goodness: Scoped Services

Recently, I got to learn about the scoped services in grails and I found it worth sharing. For instance: A Service marked as 'session' scoped would be instantiated once for a session and remains there throughout the lifetime of the session. This can be used to store user specific data in this service bean class. [java] class...



Grails productivity enhancer. The unsung hero ‘grails interactive mode’

Of late, I have been thinking about the popularity of grails interactive mode amongst developers. I found that though most of us are aware of this mode but we don't use it as often, as it should be. Where should I use grails --interactive mode while developing in grails? The answer may vary from person to person and the level of...



Grails bindData to collections

Recently, I was stuck with a scenario where I was trying to bind a list of objects in my controller. While trying the way as suggested in the grails docs I was getting some weird IndexOutOfBoundException. Luckily I found a good solution on the grails mailing list:...



Closure as an implementation to interface

Recently, I saw some code of grails Hibernate Plugin and noticed an interesting usage of 'as' operator. The 'as' operator of groovy is typically used to change the types of objects. For example: [groovy] int a = "20" as int assert a==20 [/groovy] The 'as' operator can be used to provide implementation to interface as...


Database, Grails

A use case of Bitwise AND

Recently, I used bitwise Anding in my grails project. I am sharing the approach that we followed by means of an example. Suppose we have a domain class Person which can have multiple attributes like Smart, Intelligent, Talkative etc. What sort of relationship comes to our mind when we see this? I believe the obvious answer would...



Implementing saveOrUpdate() for domain classes

Some times in our applications, while saving a domain object we may desire to have a save or update behavior on the basis of certain fieldSupp Suppose we have a domain class Personwith following definition: [java]class Person{ String name String source String description def static saveOrUpdateBy = ['name', 'source'] }...



Using TagLib to avoid changes due to change in URLMappings

Recently, I used Taglib to centralize the effect of URL mapping related changes of my grails application. [java] def userPageLink = {attrs, body -> def user = out << 'user', action: 'show', params: [name:]) {body()} } [/java] So wherever I need a link to user page, I...



Using Groovy MOP and Closure to prevent expression evaluation in logger.debug()

Generally in our code, we have lots of debug statements that prints the intricate details of the state of the program. Infact, the debug statements are meant for doing this. Sometimes, these debug statements may contain a call to some other method to evaluate what is to be logged. [java] //Logging statement calling some function to...