NuBuMu

Friday, November 28, 2008

Divagando

Curioso como uno, despues de conseguir algo, se pone a rascarse la cabeza y se lo vuelve a cuestionar todo.

Y si uso algo como Amazon EC2 o Google App Engine... Que conste que el motivo por el que he empezado a plantearme esta opcion es por el coste de tener un buen hosting y estas opciones parecen opciones de lo mas baratito ($75/mes Amazon). Y es que he pasado de mirarme Online Virtual Hostings (desde 9€/mes) hasta hostings decicados (40 €/mes)... como se acerca mi cumple he decidido regalrame un netbook para asi tener una idea de lo rapido que corre mi applicacion en un sistema "de recursos limitados"... y por que mola mazo, que caray!

Claro, ya puestos a cuestionarnos cosas, me pregunto si no deberia dejar el modelo Myfaces por algo mas sutil como rails (eeeeeeeek) o python :)

De momento, ayer consegui por fin meterle canya al user interface y ya tengo casi la home acabada :)

Thursday, November 27, 2008

Catching up - Celebracion



No recuerdo en que blog lei que tenias que tener 3 cosas muy claras:
  • Milestones
  • Asumptions
  • Tasks
Pues bien, hoy, y sin querer, he conseguido DOS de mis milestones... y es que la cosa, cuando empieza a rodar, caray lo que rueda!

Vale yo tenia dos Milestones como la copa de un pino: Poder hacer un login cualquiera :) y poder guardar una entrada en mi base de gatos.

Claro, dicho asi, parece muy gilipollas, pero cuando te has pasado los ratos perdidos de casi un mes pensando como hacer las cosas con 3 tecnologias, que la verdad, de saber, se bastante bien poco, pos eso, que le he dado mas vueltas que a una peonza.

Pero ya si que si: entro en mi paginilla, le meto mi usuario y mi contrasenya y registro lo que como :D por que, a ver, alguien se pensaba que yo iba a hacer algo que no estuviera relacionado con la comida? con lo que me gusta comer???

Pues bien, esa excel maldita que tanto tiempo use, ahora va a ser mi super application. Lo cachondo del tema es que ya puedo hacer casi de todo con los unit tests, pero me faltaba engancharlo con el user interface (arghhhhhhh myfaces de mis horrores!!!!).

En fin, que hoy, estamos de fiesta! Un condado de Haza para celebrarlo?

Wednesday, November 19, 2008

Auto-commit mode en iBatis con ScriptRunner

java.sql.SQLException: rollback() should not be called while in auto-commit mode.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.rollback(ConnectionJDBC2.java:2031)
at org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:328)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.rollback(PoolingDataSource.java:312)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

Si alguien se encuentra este problemilla del cual parece no haber mucha documentacion... La solucion es leerse bien los parametros del constructor :)










public void runScript(String file) throws FileNotFoundException, SQLException, IOException{


Connection conn = this.getSqlMapClientTemplate().getSqlMapClient().getDataSource().getConnection();
conn.setAutoCommit(false);
if(conn!=null){
ScriptRunner runner = new ScriptRunner (conn,false,true);
runner.runScript( new FileReader(file));
}else{
throw new SQLException("Connection is null");
}
}


Friday, November 14, 2008

Enumeraciones

Despues de estar pegandome con las enumeraciones voy y descubro que con los JSF las enumeracones no funcionan bien... No si es que...







public enum LengthUnits {
cm(100),
in(3.93598656E1),
ft(3.2799888),
Km(0.0001),
m(1),
mi(6.2121E-4),
mm(1000),
yd(1.0933296)
;
public final double value;

LengthUnits(double value){
this.value = value;
}

}

Wednesday, November 12, 2008

iBatis

Una rapida nota al respecto. iBatis realmente no es muy, erm, flexible a la hora de hacer frente refactorings de este tipo. Si, tengo todos los servicios linkados y no hay que tocarlos, pero tener que rehacer todas las queries me esta tocando mucho las narices: que pesadez!

Refactorizando!

Bueno, si alguien (que me extranyaria) se pregunta por el paron posteador en este blog es por un sencillo motivo: estoy refactorizando la aplicacion por completo.

por que? pues a ver, empece muy bien, estos objetitos por aqui, estos servicios por alli, me defino estos beans asi, le pongo este mapeo por alla, tengo los unit tests bien ordenaditos aqui... vaya, todo orgulloso de mi mismo hasta que me invadio una duda al respecto de las unidades de medida...

La aplicacion usa mogollon diversas y muy variadas unidades de medida: pies, metros, gramos, cucharadas, pizcas, en fin, tantas medidas y tan absurdas como os podais imaginar...

Pues bien, de como montar un sistema que funcione "de forma sencilla" con las malditas unidades y sus respectivas conversiones, me ha llevado a refactorizar casi toda la aplicacion. Por que? por que no puedo disenyar toda la aplicacion como si supiera que iba a hacer, sino que tengo que hacerlo a poco a poco... especialmente teniendo en cuenta que lo hago en mis ratos libres y con mi super memoria... pos ya ves :)

De hecho ya deberia haberlo hecho asi desde un buen principio, pero te vas animando te vas animando y luego... pues pasa lo que pasa :D

De todas formas, teniendo en cuenta los ciclos del desarrollo agil, ya tocaba un refactoring de los mios :D

Wednesday, November 05, 2008

Bug habemus

Microsoft Windows XP SP2

java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
Java HotSpot(TM) Client VM (build 1.5.0_16-b02, mixed mode)

jTDS-1.2.2

MS SQL Server 2000 SP4 (separate server running WIndows 2003 Server)

java.sql.SQLException: rollback() should not be called while in auto-commit mode.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.rollback(ConnectionJDBC2.java:2031)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.SimpleDataSource$SimplePooledConnection.invoke(SimpleDataSource.java:958)
at $Proxy0.rollback(Unknown Source)


Solution? not yet :(