Estamos trabajando!

Hey, por fin actualizamos el tema de rockDeveloper, esperemos que ayude a que este lugar sea mas leible, al menos ya mejoro un poco la interface! Disfutenlo. Iaax Page

Un rato con grails, gorm, groovy y forza

El fin de semana estuve haciendo unas pruebas para ver que tecnología usare para un nuevo proyecto, sin alejarme mucho de lo que ya manejo habitualmente que es: spring, hibernate, forza.

Decidí probar un poco con gorm (Grails Object Relational Mapping) unos de los principales componentes de grails, groovy, el lenguaje que usa grails y spring mvc. Por que no hacer toda la aplicación en grails? pues la idea es aumentar la productividad poco a poco, teniendo el mayor control posible sobre la aplicación, a que me refiero?, bueno, ya usando hibernate a veces hay cosas que parecen magia, pero a veces la magia falla, entonces tienes que leer, analizar, debugear y entender un poco el como esta hecha esa magia, asi que empezamos poco a poco a entender la magia de grails.

Empece por ver la aplicación de ejemplo que viene cuando bajas grails, samples/petstore-mvc, y se ve muy sencillo, se simplifica mucho el acceso a datos, algo que no debería ser la gran ciencia. La aplicación viene por default configurada para hacer uso de una base de datos en memoria, entonces la configuro para que apunte a un servidor postgresql local, y para mi sorpresa deja de funcionar, raro, no ejecuta los inserts/updates pero si los selects, bueno para no hacerla larga, resulta ser que es el manejo de transacciones.

Que sigue?,  sustituyo gorm por el EntityManager de forza, el cual es un “Dao” genérico para simplificar el acceso a datos, junto con otras utilerias. Esto porque tengo ya varios años usando forza, y dado que vamos poco a poco con la nueva tecnologia, dejaremos a gorm para despues.

Groovy? me pareció muy productivo, bastante simple, puedes usar clases de java en groovy y viceversa, de esa manera puedes ir tomando poco a poco lo que te sirve mas de groovy.

Entonces la arquitectura de la aplicacion queda: Capa de acceso a datos con forza/hibernate con clases en groovy, capa de servicios en groovy, controllers en groovy con spring mvc, y jsp para las vistas.

En otro post esta semana voy a detallar la arquitectura de la aplicación y mostrar algunos ejemplos en codigo.

Espero sus comentarios y experiencias, saludos…

Convenciones de nomenclatura. Lease: Guia de nombres para variables, metodos, funciones, etc.

Cada vez que leo código como:

type _variable;
type variable(){
get { return _variable}
set{ _varibale = value}

Siento que me están haciendo una lobotomía frontal, que me insultan profundamente, es como obligarme a ver una telenovela o gray’s anatomy, que, aunque las mujeres lo nieguen, es una maldita telenovela, gringa, pero telenovela.
Rockdevelopers del mundo si ustedes están haciendo esto, detenganse de inmediato, aquí un post que les permitirá incrementar su “chi” -Se lee Ki-

Intenta ahora reescribir el codigo de esta manera:

type property {get; set;}

De 4 lineas de codigo a 1, Dios mio, si tan solo pudiesemos hacer refactoring como este todo el tiempo. Desarrollar software seria la gloria.
http://blogs.msdn.com/brada/articles/361363.aspx

Hay varias razones por las cuales este tipo de cosas pueda suceder.

  1. Estas usando un lenguaje primitivo
  2. No tienes la mas minima idea de lo que son las convenciones de Codigo o de por que es que estas son importantes.
  3. Desarrollas software en VB, lo cual nos regresa una vez mas al punto numro 1.

Si te encuentras en el primer caso, es hora de hacer algo por ti, de desarrollar tu talento hacia lugares que nunca antes has imaginado. O dicho de otra manera es hora de que te cambies JAVA.
Si por el contrario estas usando lenguajes modernos y te encuentras en el segundo punto, necesitas ayuda profesional, lo primero que debes hacer es leer el articulo que mencionamos arriba, Aunque se lo mucho que odias a MS por ser monopólica y representar toda la maldad del mundo, debes saber que dentro de la organización hay gente bastante capaz de desarrollar buen código, y que incluso gente como: Miguel de Icaza, pudo haber llegado a formar parte de las filas de la organización a la que tanto desprecias.
Código hermoso, que los seres humanos pueden leer, que hace uso de variables de rango limitado es lo que debes escribir si esperas que el dia de mañana que te promuevan a  gerente de proyecto, tus pupilos no sufran leyendo la funciones que desarrollaste ayer.

Aunque la referencia que use, para este articulo es de bastante mal gusto, creo que lo mas importante es que se entienda que el problema con escribir codigo es que internamente en nuestras organizaciones, carecemos de lineamientos des escritura de codigo, yo se que ustedes rockdevelopers, pueden hacer algo mejor que lo que les estamos mostrando, en especial el hecho de nunca, pero nunca llamar a una interface ISuperClase, ya que lo unico obvio que puede implementar ISuperClase es una calse llamada SuperClase, en el mundo JAVA, tienes una interface llama List, la cual es implmentada por clases como ArrayList, y otras mas.

Iaax Page

Lista de dias del mes con SQL Server

Autor: Rafal Skotak
http://www.sqlservercentral.com/scripts/61949/

Select dt_val from (
–Matriz cruzada de valores numericos
select
dateadd(dd, value, dateadd(month, 8 – 1, dateadd(year, 2008 – 1900, ‘1900.01.01 00:00:00.000’))) as dt_val
from(
select (v2 * 4 + v1) * 4 + v0 as value from
(select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join
(select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join
(select 0 as v2 union select 1 union select 2 union select 3) as rs2
) as rs
–fin de matriz
) as rs2

where month(dt_val) = 8
order by dt_val

Encontré este script el día de ayer, buscando alternativas para un problema que necesito solucionar en mi trabajo.
Aunque no es la solución que actualmente necesito, es bastante bueno para la agilidad mental de la solución de problemas de datos en SQL

En si lo que estamos viendo es una tabla derivada, la cual convierte valores numéricos en fechas, es decir, la tabla mas interna es en si una matriz cruzada de valores, la cual servirá para proveer valores a la tabla derivada, para que esta a su vez utilice dichos valores en las funciones de conversión de fechas

El script se puede correr en dos partes para obtener un entendimiento mas amplio.

-Nota importante: Este script debe ser considerado EVIL SQL, ya que hace uso de una tecnica Cross Join, lo cual puede comprometer el desempeño de un proceso.

Iaax Page