sábado, abril 26, 2014

Mi 'chuleta' de Git

Llevo meses usando una especie de servilleta vieja donde apunto los comandos básicos de Git que siempre se me olvidan.

Hoy tenía que recoger la habitación y aunque no descarto que la hoja en cuestión acabe teniendo valor histórico creo que es momento de volcarlo a un mini-post que me sirva como 'cheatsheet' personal.

Hay 1000 recursos por ahi fuera mucho más estructurados y más completos, esto es simplemente mi versión ultrasimplificada

Los comandos hacen referencia a un hipotético escenario donde se trabaja sobre 3 entornos (desarrollo, staging, produccion), desplegando la aplicación sobre Heroku.

//////////////////////
//DEVELOPMENT
//////////////////////
//Checkout development branch and check
git checkout develop
git branch
//Code for a while
emacs....
//Commit changes
git commit -a -m "Life is wonderful"
//Push changes
git push origin develop
//////////////////////
//STAGING
//////////////////////
//Merge changes
git checkout staging
git merge develop
//Everything is ok, commit to staging
git push origin staging
//Deploy to Heroku staging
git push staging-heroku staging:master
//////////////////////
//PRODUCTION
//////////////////////
//Merge changes
git checkout master
git merge staging
git push production-heroku master:master
//////////////////////
//OTROS
//////////////////////
//Work with branches locally
git checkout --track origin/develop
//Update local repo (non existing branch) with remote branch
git branch -f --track develop origin/develop
view raw git-cheatsheet hosted with ❤ by GitHub

martes, abril 22, 2014

Convirtiendo Groovy objects en Maps

En groovy convertir las propiedades de un objecto en un Map es una labor practicamente inmediata:

//Couple of VO classes
class ParamsContainerA{
int num1
String text1
boolean bool1
}
class ParamsContainerB{
int num2
String text2
boolean bool2
}
//Couple of instances
ParamsContainerA anObjA=new ParamsContainerA(num1:12,text1:"holaA",bool1:true)
ParamsContainerB anObjB=new ParamsContainerB(num2:24,text2:"adiosB",bool2:false)
//Turned into Maps (filtering out the class property if desired)
Map mA=anObjA.properties.findAll{it.key!="class"}
Map mB=anObjB.properties.findAll{it.key!="class"}
Map result=mA+mB
println mA
println mB
println result
view raw groovy-into-map hosted with ❤ by GitHub

Nota: Si el objecto no es un objeto simple sino que esta compuesto de otros objetos complejos estos campos serán mapeados igualmente pero tal cual son, sin transformarse en Maps.