miércoles, 28 de abril de 2010

Agradar espacio que utiliza Informix

Si alguna vez ven que se quedan sin el espacio que utiliza Informix para sus datos, con el motor levantado de Informix, accedemos por ssh, nos logueamos con el informix, o el que hayamos definido para administrar la base de datos, luego creamos en la ruta que estén los datos, por ejemplo /opt/datos.informix un archivo de datos, por ejemplo datosdbs.002, para hacer esto ejecutamos lo siguiente

echo "" > /opt/datos.informix/datosdbs.002

Luego a este archivo le cambiamos el usuaro y grupo

chown informix.informix /opt/datos.informix/datosdbs.002

Luego le damos premisos

chmod 660 /opt/datos.informix/datosdbs.002

luego corremos el siguiente comando y se debería de agrandar el espacio que teníamos.

onspaces -a datosdbs -p /opt/datos.informix/datosdbs.002 -o 0 -s 2500000

todo esto con el motor de informix levantado

viernes, 23 de abril de 2010

Tranferir licencias GX

Tengo un equipo el cual voy a formatear, y necesito respaldar mis licencias Genexus.

Para esto vamos a utilizar el equipo que yo tengo, otro equipo con Genexus la versión que esté utilizando que tenga los upgrade igual a mi equipo.

Entonces en el otro equipo tengo que ejecutar el LicenceManajer, esto está en el menú de inicio de programas en el menú de Genexus, y tiene un icono de una llave.

Entonces ejecutamos el LM, luego que aparece la ventana arriba a la derecha tenemos un botón Transfer, seleccionamos la licencia que guardaremos (debemos hacer un archivo y el proceso por cada una de las licencias a guardar) hacemos click en el botón, y nos lleva a la ventana que mas vamos a utilizar.

En esta ventana tenemos varias cosas para hacer, la idea es generar un archivo .trf, desde el equipo al que le voy a agregar las licencias, luego desde mi equipo exportar las licencias a ese archivo, y por ultimo levantar estas licencias en el otro equipo, y ahí la licencia queda segura en el otro pc, luego que instale mi equipo, se hace lo mismo pero tomando como base la licencia que tiene el otro equipo, es decir al revés que como lo hicimos primeramente.

Entonces con el LM en la pantalla que nombre arriba, vamos a generar un .trf, entonces tenemos que marcar abajo a la izquierda “Register Transfer”, marcar la ruta donde queremos guardar el archivo y presionamos OK. Esto genera un archivo .trf, que tenemos que pasarlo en este caso a mi equipo.

Estando en mi equipo ejecuto nuevamente el LM y me paro en la pantalla que nombre arriba, y en la ruta marcamos donde este el .trf que pasamos a mi equipo, luego seleccionamos “Tranfer Out”, y la cantidad de licencias que pasaremos, normalmente 1, pero pueden ser mas (de un solo generador por ejemplo 1 licencia de Java), y presionamos ok, y se sobrescribe el .trf.

Por ultimo tenemos que volver el .trf al otro equipo, podemos sobrescribir el que ya habíamos generado, y vamos a ver que el tamaño es mayor. Luego ejecutamos el LM, y debemos seleccionar la ruta del archivo (por defecto se guarda la ultima utilizada), y debemos seleccionar “Tranfer In”.

Si seguimos los pasos que puse acá, debería de aparecer la licencia en la pantalla principal del LM. Para que todo esto funcione los 2 equipos deben de tener genexus al mismo upgrade de developer y del generador que estemos traspasando.

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.