miércoles, 31 de julio de 2013

HTTPClient.HTTPConnection.setTcpNoDelay(Z)V) error con Gx Evo1 o Evo2

Como este error me ha pasado 2 o 3 veces y cada vez que me pasa tengo que buscar cual es la causa, lo trascribo asi ya se donde buscar.

Esto pasa tanto con Gx Evolution1 o Evolution2, y se resuelve tan facil como eliminar del lib del tomcat los jar GXWS*.jar.


viernes, 26 de julio de 2013

Delete de registro de tabla de subconsulta que incluye la tabla

El problema que tuenia era que tengo que eliminar un conjunto muy grande de registos que se obtienen de una subconsulta la cual incluye la tabla en cuestion y alguna otra.
Lo primero que probe es:

Delete from tabla1 where dato1 in (select dato1 from tabla1 t1, tabla2 t2 where t1.id =t2.id and ......);

esto no funciona ya que en la subconulta se utiliza la tabla que se va a eliminar, entonces busque una solucion por consulta sql, ya que por store procedure se puede hacer (o por algun programa en cualquier lenguaje).

Por consulta sql se puede hacer, esto lo probe en MySql pero asumo que en algun otro motor debe de funcionar.


DELETE FROM tabla1 WHERE dato1 IN (
    SELECT * FROM (
        select t1.dato1
        from tabla1 t1, tabla2 t2
        where t1.id .....
    ) as tab_aux
);

sábado, 20 de julio de 2013

Limpiar mi Android






Muchas veces en los celulares que tiene poca memoria interna esta se les llena o da el famoso mensaje de disco lleno, que no es que este a full sino que esta casi completo.

Lo que siempre hago es ir aplicación por aplicación para borrar el cache, ver si puedo desinstalar alguna aplicación, etc. Obviamente que todas las aplicaciones que se pueden se pasan de la memoria interna a la SD, esto es la primera de las reglas que hay que tener para liberar espacio.
Esto no es todo lo que se puede hacer pero es lo mas rápido y lo que un usuario normal puede hacer.

Entonces buscando un poco in el Market para ver que aplicaciones hay para automatizar eso encontré Clean Master.
La pantalla principal es muy agradable y muestra con graficas el espacio libre y usado de nuestras memorias, la interna y la SD, si tuviéramos particiones de la sd, supongo (en mi cel no tengo particionada la SD) se mostrarían cada una de ellas. Esto es muy practico porque fácilmente se ve donde estamos más comprometidos con el espacio.

Después lo primero que tenemos es para borrar el cache y archivos residuales, esto es lo que fácilmente podemos limpiar la mayor cantidad de espacio, el proceso es bastante rápido, primero el programa analiza todo el SO y ve que puede limpiar, nos sugiere en cuales de los cache de los programas borrar y en cuales no, pudiendo nosotros elegir todos, y con un simple click limpiar muchos MB.
Luego tiene una parte que llama privacidad, en la cual podremos borrar los datos privados de las aplicaciones, ejemplo las contraseñas y los archivos temporales de los navegadores, esto hay que tener en cuenta por ejemplo si siempre entramos a una pagina en la cual le cargamos el usuario y la contraseña y la tenemos guardada, que se borrara y la próxima vez que entremos tenemos que digitarla (si nos olvidamos de la pass no ejecutar esta limpieza.

Por ultimo tenemos lo que se llama Tareas, que es un killer de aplicaciones, y Gestor de aplicaciones que es para desinstalar las aplicaciones.

En resumen con el primer apartado llamado Archivos Basura, limpiamos mucho espacio utilizado innecesario y sobre todo este espacio es utilizado en la memoria interna.

Solo faltaría que lo prueben y dejen sus comentarios a ver como les va y si tienen algún otro que utilicen.

Universal Book Reader, para leer libros epub


En breve voy a recibir mi tablet y como varios de mis amigos la utilizan más que nada para leer, me ocurrió investigar un poco.
Yo no soy fanático de los libros, más que nada me centro en los blogs y artículos entre mediano y cortos en su extensión, pero los archivos epub son casi en su mayoría libros con sus centenares de páginas.
Busque varias alternativas de reader de epub y no me convencieron mucho, siempre buscando programas gratis y para Android, que los voy a probar primero en mi Xperia p con su pantalla de 4 pulgadas la cual consideraba que iba a ser muy chica y me daría más dolores de cabeza que buena lectura.
Encontrar el programa que más me gustó que es UN reader.
Primero, las 4 pulgadas no molestan para nada ya que el programa se ajusta muy bien, no te muestra siempre una hoja entera del libro, sino que te muestra las palabras que entren en tu pantalla, y además podes agrandar la letra bastante, obviamente letras más grande, menos palabras por hoja visualizado. En la lectura podes ir marcando hasta donde leíste (el clásico marcador) para la próxima vez ir directo. Si tienes varios libros quedan en la página principal como en un mueble en el cual ves la carátula del libro, esto le da un toque muy lindo.
Bueno solo falta encontrar algún libro que me atrape y ponerme a leer :-)
Después les comento como va en la tablet.

miércoles, 17 de julio de 2013

Cambiar collate de mysql

Una base de datos en la que se crearon varias tablas con scripts armados manualmente, estos se crearon con collate distintos, esto lleva problemas tanto para el trabajo de algunas aplicaciones como algunas consultas que igualan atributos que unos estan en un collate y otros en otro no llega a realizar la consulta el motor.

Entonces lo primero es detectar cuales son las tablas que estan en determinado collate:



SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='nombreBD' AND NOT CHARACTER_SET_NAME IS NULL AND COLLATION_NAME<>'latin1_general_cs';


lo que debemos de jugar es con nombreBD, y con latin1_general_cs, esto debemos de ver en que codificacion necesitamos que esten nuestras tablas.

Con la siguiente consulta podemos cambiar el collate de una tabla:

ALTER TABLE `tabla` CHARACTER SET latin1 COLLATE latin1_general_cs;

y con esta otra consulta cambiamos el collate de un atributo.

ALTER TABLE `tabla` MODIFY COLUMN `atributo` CHAR(1) CHARACTER SET latin1 COLLATE latin1_general_cs DEFAULT NULL;

En ambas consultas se debe de cambiar donde dice tabla y atributo, para los datos nuestro, y la codificación que nos interese (latin1_general_cs en el ejemplo)