martes, 24 de noviembre de 2009

Cloud que mas se pude decir

Cloud = Nube


Es un termino que se esta poniendo de moda o que ya esta de moda, entonces vamos a dar un rápido pantallazo de que es, y como nos puede server, convenir, etc.


Para se mas exactos de lo que voy a hablar es de Cloud Computing (de aquí en delante Cloud)


Gmail, es una aplicación que trabaja en la modalidad Cloud, que ni mas ni menos es un servidor de correo, pero la diferencia es que los correos no están en mi maquina sino que están en algún lugar del mundo, en algún servidor que no se que sistema operativo tiene atrás, que no se nada de nada, solo que maneja mis correos y que yo lo utilizo porque es el mas fácil de usar, es el mas lindo, etc. y no no tengo que encargarme de nada, ni respaldo, ni limpieza, ni actualización ni nada.


Flickr es otro ejemplo.


Pero esto no es todo, Cloud se divide en 3 niveles, GMail, también el Office 2010 que tiene una modalidad que se puede usar desde un navegador, Flickr y muchos mas, están en el nivel superior, si se quiere el que menos técnicos debemos ser para consumir estos servicios.


Los 3 niveles de Cloud son:


- Aplicación, en este nivel encontramos a gmail, flickr, etc.


- Infraestructura, recientemente Microsoft lanzo Azure, que consta de un montón de servicios, ejemplo un sql, a grueso modo seria como tener un servidor windows con un sql, .net, etc. en la nube.


- Arquitectura, el primer representante de este nivel es amazon, con sus servicios, en este punto es como tener un servidor en la nube.


Que ventajas me da esto, bueno empecemos con unos pocos ejemplos para entender, supongamos que tenemos una pequeña empresa en la que necesitamos manejarnos con correo, entonces como ya vimos, utilizaríamos el correo de gmail. El segundo ejemplo seria tengo una aplicación .net, pero no tengo dinero (o simplemente ganas) para comprar un servidor, entonces contrato azures y cuelgo mi aplicación ahi. Ahora supongamos que soy mas técnico y que tengo una aplicación, la cual puede ser linux, windows o lo que sea, entonces elegimos el que mejor nos convenga, contratamos en amazon el servicio y hospedamos ahí nuestra aplicación.


Otras ventajas y nada despreciables, es que nuestra aplicaciones pueden ser escalables, por ejemplo hoy contratamos un servidor con poco ram, poco disco, pero si vemos que necesitamos mas solo hay que contratarlo, obviamente pagando un poco mas y listo. No tenemos que encargarnos de hacer respaldos, mantener los equipos, tener equipos de respaldo, etc.


Depende del contrato y de la empresa los minutos por mes que esta bajo el servicio, normalmente es muy poco pero ...


No solo hay cosas buenas, por ejemplo si hay algún desastre natural, o solamente se nos cae Internet, ahí no vamos a tener sistema.


Seguridad de los datos, es un tema muy discutido, pero nuestros datos estarán en servidores de otros, se supone que hay contratos de confidencialidad, pero al ser servidores en cualquier lugar del mundo las normas de los distintos lugares pueden hacer que las cosas que en un lugar son permitidas en otro no.


Bueno y así se puede seguir con cosas buenas y cosas malas, lo mejor es investigar y hacer pruebas con cosas no criticas para empezar a investigar y sacar conclusiones. La forma de pagar el servicio es muy variado puede ser por uso, por procesamiento contratado, etc. todo depende de la empresa, por ejemplo gmail es gratis.


Como todo es algo nuevo que vino para quedarse, entonces no se puede dejarlo pasar, hay que analizar que usar pero hay que conocer las limitaciones que esto tiene.



Volver al inicio

lunes, 9 de noviembre de 2009

Informix - LongVarChar - Genexus


Para que lo vayan teniendo en cuenta para los que en algún momento su aplicación tenga que correr con informix, y este hecha en Genexus, cuando el campo es LongVarChar (me paso con un lonvarchar muy grande, de 2000 o mas), si se hace un new o un update se tiene que hacer trim.



Ejemplo



&variable = longvarchar(2000)


Atributo = longvarchar(2000)




Si tenemos lo siguiente


For each


Where …


Atributo = &variable


Endfor




Esto al compilar da error, y el error no dice nada de Atributo sino de algún otro atributo.


Pero si hacemos lo siguiente, anda bien, es mas probé guardar en ese campo algo de más de 300 caracteres y lo guarda bien.



For each


Where …


Atributo = trim(&variable )


Endfor



Lo mismo ocurre en un new, deberia de ser algo asi


new


Atributo = trim(&variable )


...


endnew



Volver al inicio

sábado, 7 de noviembre de 2009

Configurar Informix para usar con Genexus

Se me presento el siguiente inconveniente, me dejaron un equipo Linux con Informix instalado y tengo que configurarlo para que funcione con una aplicación Genexus.

Recordando viejas épocas puede crear una base de datos con dbaccess, para esto tenes que entrar al equipo Linux y loguearte con el usuario informix, luego ejecutas dbaccess y te sale un administrador para ejecutar consultas, eliminar crear, tablas, bases, etc.

Entonces con esto llego a crear la base de datos, luego eligió el dbspace (alguno que este configurado), luego en la parte de logs le pongo none (aquí empieza el problema).

Entonces para que genexus pueda utilizar la base de datos esta debe de ser transaccional, entonces cuando creas la base debes elegir log o buggered log, pero como no lo hice ahora con unos comanditos vamos a solucionar el problema.

Ejecutamos lo siguiente


ondblog buf <nombreBase> (si vas a configurar buffered log)


ondblog unbuf <nombreBase> (si vas a configurar unbuffered log)

cualquiera de los dos comandos tienen que ejecutarse sin aplicaciones conectadas a la base. Si todo funciona bien, debería devolver 0.


Luego hay que ejecutar un respaldo para que se activen los cambios.

Podes simular un respaldo ejecutando:



onbar -b -F


Con esto la base de datos esta bien configurada, pero ahora debemos definir el modelo genexus, obviamente elegimos como dbms informix, como trabajo con java web, lo que se debe de definir es una conexión jdbc, luego en las propiedades del dbms

en JDBC Driver ponemos custom,

en Custom JDBC Driver ponemos com.informix.jdbc.IfxDriver,

en Custom JDBC URL ponemos el string de conexión jdbc:informix-sqli://servidor:puerto/base:INFORMIXSERVER=ol_.......

Obviamente modificamos el servidor el puerto, etc, y debemos de verificar que el jdbc que tengamos que tenga las carpetas com, informix, jdbc, ifxdriver, sino debemos de modificar esto.

Con estos puntos ya podríamos trabajar con genexus con informix.


Volver al inicio

jueves, 5 de noviembre de 2009

Instalación de bin y rpm

En un equipo suse que no tenia conexión a internet tenia que instalar java, lo busque en internet y lo mas fácil era un .bin, pero como se instala un bin?


Es fácil solo hay que ejecutarlo, por ejemplo:


./java.bin


y listo.


Para recordar un poco algo que hace mucho que no utilizo, porque actualmente me gusta mucho mas Ubuntu, instalar un rpm, es también fácil


rpm -i java.rpm



Volver al inicio

ChkConfig en suse

Muchas veces he tenido que crear los script para que al iniciar un Linux este levante las aplicaciones, por ejemplo tomcat, mysql, etc.


Bueno los script de inicio se ponen en /etc/init.d/ y normalmente me copio alguno ya existente y lo modifico a mi elección para que al hacer stop me baje la aplicación y start me la levante.


Con esto estoy seguro que al arrancar el equipo este servicio se va a levantar, pero me esta faltando un punto importante, lo tengo que agregar a la carpeta RC (esto depende del sistema operativo se ubica en un lugar u otro), y crear los links S y K, para que en el arranque en determinado modo (multiusuario, grafico, etc) levante este servicio.


Bueno en suse es mas fácil que en el resto, ya que tenemos un comando que lo hace todo mas fácil, el comando es chkconfig.


Por ejemplo para apagar el arranque en los modos 345 ponemos lo siguiente



chkconfig -level 345 mysql off


esto hace que al arrancar en modo 3 no se levante mysql


ahora para que si levante en vez de off lo ponemos on.



Volver al inicio

Ejecutar Reorg en linux y windows

Lo que nos pasa normalmente es que queremos ejecutar la reorg de genexus directamente desde gx, ya que al configurar el DBMS bien, entonces gx hará todo por nosotros, pero a veces cuando la reorg es muy grande, o se tiene que hacer por internet, esto puede durar mucho.


Entonces lo mejor es respaldar la reorg y luego directamente ejecutarla.


Si el equipo es un Linux como es mi caso se debería de ejecutar el siguiente script



export DISPLAY=:0



java -cp GxUtils.jar:.:GXClassR.jar:Reorg.jar:mysql.jar Reorganization -force


si es Windows se debe de ejecutar este script



"ruta de java"\java -cp GxUtils.jar;.;GXClassR.jar;Reorg.jar;mysql.jar Reorganization -force -nogui


Para que esto funcione se deben de tener los jars GxUtils y GXClassR de genexus, el archivo que se genera al guardar la Reorg (daremos una pequeña explicación después), y el jdbc de conexión, que en este caso es mysql pero puede ser cualquiera, sql por ejemplo, todos en una sola carpeta.


El archivo de la reorg se puede exportar directamente de genexus, para esto en el modelo, luego de correr la reorg en el equipo local, se ejecuta el programa WinDeveloper, esto lo que hace es llamar a un programa (que tiene muchas cosas para hacer por ejemplo hacer un war de la aplicación) win, java en mi caso, que te deja exportar el programa de reorganización, entonces buscamos en el menu y ejecutamos la exportación de la reorg, luego podemos incluir en el archivo Reorg.jar los sesteos de conexión de la base de datos (usuario, contraseña, servidor) o podemos no incluirlos (cosa que aconsejo), si elegimos esta ultima opción, entonces en la misma carpeta donde están los jars debemos de poner el reorg.cfg que tenga los datos del servidor, que es idéntico a el client.cfg.


Entonces con todos estos archivos en una carpeta, nos paramos en la carpeta y ejecutamos el script que menciones (se puede crear un bat o sh dependiendo del sistema).


Al correr el script si todo esta perfecto, se debería de impactar la base de datos, si el sistema es windows se mostrara la clásica ventana de reorg de genexus.


Lo mas importante es tener los parámetros de conexión bien, ya sea en el Reorg.cfg como en el modelo de gx si se elije que el Reorg.jar tenga estos parámetros.


Luego como (en mi caso) la aplicación es java, en el servidor tengo que tener instalado java.



Volver al inicio