miércoles, 21 de abril de 2010

Comprimir tar en windows

Mi entorno de trabajo tiene que ser Windows porque trabajo mayormente con Genexus, que este no anda en Linux, y la mayoría de las aplicaciones que desarrollo son para Linux, entonces tengo que pasar los objetos que genero, en mi caso las clases y js a un ambiente Linux.

Si es dentro de la LAN, lo puedo pasar directamente a las clases y js por medio de WinSCP, pero el tema es cuando se suben a un servidor que no está en la LAN, o por ejemplo en los hosting que te ofrecen una determinada cantidad de MB por mes, entonces tenemos que compactar lo más posible para pasar los objetos.

Como en el 99% de los casos los servidores Linux por defecto saben descomprimir los archivos .gz (o tar.gz), esta es la compresión que a mí me gusta.

Entonces el programa que utilizo para comprimir en Windows a tar.gz se llaman 7zip, es un programa bastante viejo que ha mejorado mucho en los últimos tiempo.

Además es gratis, y muy intuitivo de usar (para hacer un tar.gz se necesitan 2 pasos igual que en Linux, primero un tar, y luego lo comprimimos).

domingo, 18 de abril de 2010

DataSelector en genexus 10

Muchas veces tenemos aplicaciones que repetimos una y otra vez las mismas consultas, un ejemplo de esto es el clásico usuarios habilitados, cuando el usuario se va a loguear al sistema al validarlo si el usuario esta activo, cuando vamos a hacer algo con los usuarios mostramos los que están activos. Entonces el código sería algo así:

For each

Where UsuarioEstado = “A”

……

Y esto se repite por todo el sistema, pero que pasa si ahora hacemos la aplicación que sea paga, entonces tenemos algo asi

For each

Where UsuarioEstado = “A”

Where UsuarioPago = “S”

…..

Y esto debemos de cambiarlo en todos lados.

Entonces Genexus 10 (X, evolutio1, etc., como quieran nombrarla) tiene un nuevo objeto que se llama DataSelector, y sirve para ayudarnos en estos casos. El data selector lo que hace es decir cuales son las condiciones que debe de cumplir una consulta, también puede recibir parámetros, decirle el orden, y por ultimo un defined by para recorrer la tabla correcta.

Lo que debemos hacer es primero definir el data selector, que seria asi

Parametros: no recibr

Condition: UsuarioEstado = “A”

Order: aca pude ser el nombre por ejemplo

Defined by: supongo que con los 2 campos recorre bien la tabla entonces no le indico nada

Al desarrollar la aplicación ponernos en todo los for each que tengan que ver con los usuarios activos

For each USING nombre del datastore

……

Entonces como dije si ahora tenemos que tener solo los usuarios actives y que pagaron, debemos de cambiar el DataStore agregándole una condition, y no tocar nada mas de la aplicación.

domingo, 11 de abril de 2010

Importar mysql con blob de imagen

Muchas veces tenemos tablas con campos blob que guardamos imágenes, entonces si hacemos el clásico

mysqldump –u usuario –p contra base > base.sql

Esto nos importa la base pero depende del sistema operativo el campo blob, no siempre queda bien, entonces nuestra apliacion que utiliza esta imagen, no la llega a poder mostrar bien.

Buscando en internet y en la documentación de mysql, encontré que lo mejor es codificar HEXA los blob.

Entonces lo que tenemos que hacer es lo siguiente

mysqldump –u usuario –p contra –hex-blob base > base.sql

Luego importar de la forma clásica

mysql –u usuario – p contra base < base.sql

Con esto se soluciona este problema.

lunes, 5 de abril de 2010

Consultas en Informix sin commitear

Por mas que la palabra commitear no exista creo que todos sabemos que quiere decir, para el que no sepa aca va una rápida definición:

Commitear: realizar un commit en la base.

Bueno la idea es que tengo algunos procesos que hacen miles de inserte antes de realizar un commit, entonces lo que necesito es saber si estos insert se están realizando y si lo que hace es algo coherente, antes de que termine el proceso, para cortarlo, o dejarlo seguir funcionando o lo que sea.

Entonces para esto entramos con dbaccess, y creamos una nueva consulta, pero al inicio seteamos que queremos los registros aunque no se hayan commiteado.

En resumen la consulta:

Select * from tabla;

Pasaría a ser

set isolation to dirty read;

Select * from tabla;

Espacio en Informix

Tengo un servidor con informix, y estaba teniendo problemas porque no me dejaba ingresar más datos, entonces quería saber cuánto espacio le quedaba a este para trabajar. Corriendo el siguiente comando

onstat –d

y viendo en dbspace de datos (normalmente datosdbs) ahí en la columna free nos informa cuanto tenemos libre.

jueves, 1 de abril de 2010

Vi el mejor editor

Bueno este post es muy cortito pero muy bueno.

Más de una vez tengo archivos muy grandes, de varios GB de tamaño, y en Windows no lo puedo ver (normalmente son archivos de texto plano) porque para abrirlo me come toda la memora ram, entonces lo abro con vi en Linux, y no sabía cómo hacer para borrar muchas líneas de una sola vez (para achicar el archivo). Entonces buscando en internet en mucho de los manuales de vi que hay en la vuelta, encontré que poniendo un numero y la letra d, te borra desde donde estas parado la cantidad de líneas que pusiste.

Ejemplo: 50d , con esto eliminamos 50 líneas, incluida la que estas parado.

Penca Mundial 2010

En esta oportunidad no es información técnica lo que voy a compartir, solamente voy a promocionar una penca para el Mundial Sudáfrica 2010 de fútbol.
La misma la he realizado enteramente yo y es solo (por ahora) por diversión, así que espero los comentarios, las quejas, las preguntas, etc.

Datos técnicos de la aplicación:
Realizada con Genexus Evolution, generando para java y base de datos mysql.

http://pencamundial2010.servegame.com:8080/mundial/servlet/inicio

Bueno ahora mejore un poco el acceso a la penca, ya que cambie el servidor que esta esta aplicación, les paso el nuevo link. Ademas si entraron las primeras veces van a ver muchos cambios.

http://pencamundial2010.servegame.com/mundial/servlet/login

Estimados, ahora ya tenemos dominio propio y podemos acceder por la siguiente dirección
http://www.juegauruguay.net
Ademas anexamos una penca paga, con los cual cada usuario puede jugar pagando solo 150$, y se llevara el premio, que es la suma de lo que todos apuesten. si la cantidad de usuarios es bastante, entonces se podrá poner no solo premio para el primero sino también para los siguientes puestos.

Espero que el tiempo que haya estado bajo la aplicación (ya que se tuvo que migrar a este nuevo sitio), que fue de un par de horas, no les haya causado muchos problemas. Gracias por entender.


Amigos de JuegaUruguay.net, ya estamos a unos pocos dias de iniciar la copa del Mundo Sudáfrica 2010. Si ya están registrados (recuerden que es gratis) en la penca, quizás recibieron las noticias que cada cierto tiempo estoy enviando y sabrán que ya superamos los 200 jugadores.
Si todavía no se registraron, registrense, y empiecen a jugar.