lunes, 6 de abril de 2015

Agregar menu Css3 en Genexus

En este post, les quiero compartir mi experiencia agregando un menu css3 a mi aplicacion desde Genexus partiendo de un menu css prediseñado.

Dejo en claro primeramente que hay varias formas de hacer la integracion, yo use un poco de HTML desde genexus para hacer la carga de los items del menu y para referenciar al css que contenia el estilo del menu.
Otra forma podria haber sido crear un user control (mas practico en caso que trabajen en equipo o quieran cargar los items dinamicamente, usando sdts por ejemplo)

En la pagina http://cssmenumaker.com/ pueden encontrar varios menus prediseñados, en donde podran descargar tanto el css como un ejemplo de como cargar el menu desde su pagina HTML.

En este ejemplo vamos a usar el menu opera-drop-down-menu


Si siguen el link, van a encontrar en la pagina, la opcion Download Source.


Lo que descargarian en este ejemplo seria un .rar que contiene un css llamado style.css y un html de nombre index.html.

En archivo index.html tienen un ejemplo de como cargar el menu y como referenciar al style.css.

Pueden fijarse que desde el <head> tendriamos que hacer referencia al css, la linea que hace referencia en el ejemplo seria la siguiente:
<link rel="stylesheet" href="styles.css">
Y pueden fijarse que en el <body> del html se cargan justamente los items del menu junto con los enlaces de cada item.
Ejemplo:
<li><a href='#'><span>Home</span></a></li>
Los items del menu estan dentro de un div que hace referencia al id='cssmenu' definido en el css. No quiero entrar mucho en detalle en cuanto a la definicion del html ni del css ya que la idea principal mostrales una forma de integrar dicho menu dentro de un webpanel genexus o en la propia masterpage.

Referenciar el archivo css desde un webpanel

Lo primero que tienen que hacer, y es fundamental, es referenciar al css desde su webpanel, dijimos que eso lo hariamos dentro del <head> del html.
Como el editor html de genexus solamente permite trabajar sobre en body, entonces vamos a utilizar la propiedad del form  HeaderRawHTML en el evento start.
Entonces quedaria de la sgte manera:
Form.HeaderRawHTML = '<link rel="stylesheet" 
href="/KBJavaEnvironment/static/Resources/Spanish/styles.css">'
Fijense que el styles.css debe estar en el direcorio /static/Resources/Spanish/ de su kb, pueden cambiar la ruta, lo importante es referenciarlo bien y que el styles.css este alojado fisicamente en el directorio referenciado.
Luego cuando generen su aplicacion el mismo styles.css lo estaria llevando en su tomcat por ejemplo si estan protitipando con java.

Cargar los items del menu

Ahora tenemos que trabajar sobre el body de nuestro Web Panel.
La forma mas sencilla, copiar el contenido del body que se encuentra dentro del archivo de ejemplo descargado "index.html" y pegarlo en el editor HTML de Genexus del webPanel.


A partir de ahi podemos editar las opciones que se encuentran dentro de las etiquetas <span> </span> y las URLS colocarla dentro de <a href="">
Ejemplo:
 <li><a  href="/JavaEnvironment/servlet/com.ejemplo.principal"><span>Inicio</span></a>

Ejecutar la Aplicacion, ingresar al web Panel y podran visualizar el menu dentro de su webPanel.


Abajo se muestra el mismo menu agregado como component dentro de la masterPage de la app, con algunas modificaciones realizadas en el css para adaptar mejor al tema de la aplicacion.


lunes, 2 de febrero de 2015

Instalando Jboss 7 Final + Java JDK en CentOS

Comenzemos con los Requerimientos:

JBoss AS 7 requiere java JDK 1.6 o superior, yo estaria utilizando el JDK 1.7

El jdk lo pueden descargar desde http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

Especificamente la version 7 esta disponible desde el sgte enlace:
Java JDK 7

Para mi centos x64 estaria utilizando

Linux x64135.63 MB   jdk-7u71-linux-x64.tar.gz

Como ya lo quiero descargar directamente en mi servidor, hare un wget dentro del directorio /opt
Si lo descargan desde algun browser, necesitaran aceptar los acuerdos de licencia del software, de igual manera si lo descargan con wget y para ello deben utilizar el parametro AuthParam.
Una manera de conseguir un valor valido del parametro es desde un navegador, aceptar los acuerdos de licencia, iniciar la descarga y cancelarla.
Una vez cancelada la descarga pueden obtener la url completa con el paramatro AuthParam haciendo clic derecho en el archivo cancelado y copiar direccion de enlace



Obtendrian una url similar a la que muestro a continuacion
http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz?AuthParam=1420222715_80b03f490b70cb11fbc0391297fc8b5c

Desde la terminal de Linux de nuestro servidor entonces hariamos
# cd /opt/
# wget http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz?AuthParam=1420222715_80b03f490b70cb11fbc0391297fc8b5c
Renombrar
# mv jdk-7u71-linux-x64.tar.gz?AuthParam=1420222715_80b03f490b70cb11fbc0391297fc8b5c jdk-7u71-linux-x64.tar.gz
Descomprimir
# tar xzf  jdk-7u71-linux-x64.tar.gz
Como segundo paso, instalar java utilizando alternatives.
# cd /opt/jdk1.7.0_72/ 
# alternatives --install /usr/bin/java java /opt/jdk1.7.0_72/bin/java 2 
Verificar la instalacion
# alternatives --config java
Si se instalo correctamente, tendran una salida similar a la sgte:
Hay 1 programa que proporciona 'java'.

Seleccion           Comando
*+1                     /opt/jdk1.7.0_71/
Ahora instalaremos javac y los comandos jar
# alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_72/bin/jar 2 
# alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_72/bin/javac 2 
# alternatives --set jar /opt/jdk1.7.0_72/bin/jar
 # alternatives --set javac /opt/jdk1.7.0_72/bin/javac
Ahora podemos verificar la version de java activa en el sistema
# java -version

Instalacion JBOSS.

Comenzar descargando Jboss Application Server 7.

Las distribuciones pueden ser obtenidas desde http://jbossas.jboss.org/downloads
wget 'http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz'
Extraer la distribucion descargada en un directorio del sistema de archivos.

Yo lo instalare en /opt/jboss
#cd /opt/jboss
# tar xzf  jboss-as-7.1.1.Final.tar.gz
Jboss tiene 2 modos de operacion: Standalone y Domain.
Documentacion https://docs.jboss.org/author/display/AS71/Documentation

Iniciando JBoss Application Server 7

Para iniciar AS 7 utilizando la configuracion del web profile por default "modo standalone", cambiarse al directorio $JBOSS_HOME/bin
./standalone.sh

A continuacion desde cualquier browser pueden ingresar a http://localhost:9990/

Si desean acceder a la consola desde otro equipo remotamente deben editar standalone.xml y modificar el valor 127.0.0.1 por el deseado.

El archivo lo pueden encontrar en /opt/jboss/standalone/configuration
<interfaces>
    <interface name="management">
        <inet-address value="127.0.0.1"/>
    </interface>
    <interface name="public">
       <any-ipv4-address/>
    </interface>
</interfaces>

Fuentes:
http://tecadmin.net/steps-to-install-java-on-centos-5-6-or-rhel-5-6/
https://docs.jboss.org/author/display/AS71/Documentation







miércoles, 14 de enero de 2015

Genexus Environment

Environments en Genexus.

Un environment es un lugar para almacenar los detalles de implementacion del sistema, por ejemplo, el lenguaje de programacion utilizado para generar la aplicacion y la informacion de la base de datos.

En genexus es posible definir varios Environments lo cual permitira tener diferentes implementaciones de una sola aplicacion.

Cuando se crea por primera vez una base de concimiento, en el dialogo de creacion, Genexus solicita al usuario seleccionar un environment por defecto (Ej. Java Environment, C# Environment, Ruby Environment etc.)


Una vez creada la base de conocimiento, pueden verificar y/o modificar la informacion del environment creado como tambien pueden agregar nuevos environments.
Para ello deben ir desde el Knowledge Base Navigator a la seccion de Preferences.


Alli visualizaran su environment por defecto ('Java Environment' El que seteamos cuando creamos la base de conocimiento) 
Si necesitan agregar nuevos Environments basta con hacer clic derecho sobre el environment activo y seleccionar la opcion New Environment.
Alli se les abrira un dialogo que pedira la informacion de su nuevo Environment, como por ejemplo el lenguaje y el Datasource (pueden ser totalmente distintos al seleccionado en el environment anterior)


A continuacion se muestra una imagen de ejemplo donde tenemos varios environments creados en una base de conocimiento:


Solo un Environment puede estar activo a la vez. En el ejemplo tenemos activo el Environment 'Java Environment' que me lo indica con un icono verde parecido al icono del Run. Significando que cada vez que genere y reorganize mi aplicacion, genexus va a tomar los valores seteados en ese environment. En este caso va a generar en Java y sobre el DataStore SQL server, en el datastore tendria que estar configurado tambien toda la informacion de la base de datos y del servidor sobre el cual quieren impactar su modelo.

Cuando quieran trabajar sobre otro environment deben posicionarse en dicho environment + clic derecho + Set As Current Environment. Con esto ahora cada vez que especifiquen, generen o impacten su modelo, lo estarian haciendo sobre el nuevo environment en el lenguaje y en el datastore seteado en dicho environment.

El environment se recomienda crear no solo cuando se quiere trabajar con otro lenguaje y/o datastore, tambien (y es altamente recomendable) crear un nuevo Environment si por ejemplo como desarrollador tenemos acceso al servidor de desarrollo como al servidor de produccion. En ese caso lo ideal seria entonces tener un Environment Produccion (donde el datastore por ejemplo ya estaria configurado sobre el servidor de produccion) y para desarrollo otro Environment (que este configurado apuntando al servidor de desarrollo).

Un error común con el que me suelo encontrar principalmente con desarrolladores que estan empezando a trabajar con Genexus, es el de tener seteado solamente 1 Environment, configurar el datastore apuntando a un servidor de desarrollo (por ejemplo su servidor de DBMS local) y luego cuando necesitan reorganizar el servidor de produccion simplemente cambian en el mismo enviroment la configuracion del servidor.
Esto esta MAL porque por defecto los environment guardan de forma independiente  el estado de la reorganizacion. Cada vez que impactamos la base de datos, genexus verifica si no hay reorganizacion pendiente, si la hay realiza la reorganizacion y si no no la hace. Luego si hacemos un nuevo cambio desde Genexus que implique reorganizar de nuevo la base de datos se pierde el ultimo script de reorganizacion (porque ya lo aplico) y genera el nuevo script correspondiente al nuevo cambio que necesita hacer.
Entonces si en algun momento en el mismo Environment cambiamos la base de datos o apuntamos a otro servidor, el environment solamente va a tratar de aplicar la ultima reorganizacion en caso que haya pendiente y si no, nisiquiera va a reorganizar.
Como resultado final podriamos tener distinta la estructura de mi base de datos desarrollo con la de produccion y podriamos tener inconsistencia en nuestra aplicacion.

Por eso se recomienda separar mis areas de desarrollo y produccion en Environemnts distintos.

Lo mismo se aplica si desarrollan una aplicacion para distintas empresas, primero porque se tendra configuraciones distintas, y segundo porque van a tener que separar los estados de reorganizacion. 
Entonces se recomienda configurar un environment distinto por empresa en donde en cada environment van a configurar los detalles de implementacion correspondientes.



Mas info: http://wiki.genexus.com/commwiki/servlet/hwiki?Category%3AEnvironments,

jueves, 6 de noviembre de 2014

Paso a paso, instalando DB2 en CentOS 6.5 alojado en Amazon EC2

En este post, voy a detallar paso a paso como instale DB2 Express -C 10.5 en una AMI (Amazon Machine Image) CentOs 6.5.

Antes de comenzar la instalacion, tener en cuenta los siguientes requerimientos de Hardware:
Requisitos de disco
En los sistemas operativos Linux y Unix, se recomienda disponer de 2GB de espacio libre en el directorio /tmp, y se necesitan al menos 512 MB de espacio libre en el directorio /var
(Pueden verificar si cumplen con dichos requisitos con el comando db2prereqchek pero lo veremos mas adelante)
Nota: En los S.O Linux y Unix, deben instalar el producto DB2 en un directorio vacio. Si el directorio que ha especificado como via de acceso de instalacion contiene subdirectorios o archivos, la instalacion de DB2 podria fallar.
Requisitos de memoria
Se recomienda 1GB de RAM para conseguir un buen rendimiento, con esto no se contempla la memoria adicional necesaria si en el sistema se ejecuta otro software. Ademas estos requisitos de memoria son para una base de cinco conexiones de clientes simultaneas. Por cada cinco conexiones de cliente adicionales, se necesitaran 16MB mas de RAM.
Es bueno asegurarse ademas que su software Linux este actualizado. Esto es importante para tener los ultimos updates de seguridad y bug fixes.
Pueden ejecutar la actualizacion del mismo con el siguiente comando:

[root@miservidor ~]# yum update -y

El siguiente paso seria descargar o transferir el instalador de db2 en su servidor para que puedan realizar la instalacion, y el nlpack si desean el db2 en un idioma distinto al ingles.
Yo lo realize con el comando wget para descargarlo desde una URL via linea de comandos. (Hay otro metodo para Transferir Archivos a instancias Linux/Unix pero me parecio mas complicado)
La AMI de CentOS que utilize correspondia a una instalacion minima del mismo, ya que contenia solo los paquetes necesarios para correr CentOS dentro de AWS y no disponia del comando wget.
Entonces para disponer de wget realizar lo siguiente

[root@miservidor ~]# yum whatprovides */wget
[root@miservidor ~]# yum install /usr/bin/wget

Por ultimo, crear un directorio donde se realizaria la descarga, posicionarse en el y ejecutar el wget sobre la url donde tienen alojado el instalador.
Ejemplo:

[root@miservidor ~]# mkdir descargas
[root@miservidor ~]# cd descargas
[root@miservidor descargas]# wget 'http://servidor/Directorio/v10.5fp1_linuxx64_expc.tar.gz'

Descomprimir el archivo con tar con la opcion z para descomprimir completamente el archivo o gunzip para descomprimir el archivo y luego el comando tar.Yo ulilice lo segundo mencionado.
Ej:

[root@miservidor descargas]# gzip -d v10.5fp1_linuxx64_expc.tar.gz
[root@miservidor descargas]# tar vfx v10.5fp1_linuxx64_expc.tar

Pasos previos a la instalacion de db2.
Ejecutar el comando db2prereqcheck.
Este comando comprueba requisitos previos como el nivel del sistema operativo, la distribucion de Linux, la libreria C y el parche de runtime, uDAPL, GPL o Requisitos de Purescale.

Pueden agregar el parametro -v para verificar si se cumplen los requerimientos de una version especifica de DB2.
Ejemplo:

[root@miservidor expc]# ./db2prereqcheck -v 10.5.0.1 

En CentOS 64 bit generalmente faltan las librerias:
  •  "libstdc++.so.6" de 32 bits.
  • "/lib/libpam.so*" 
Para instalar dichas librerias podrian utilizar el comando yum como lo muestro a continuacion.

[root@miservidor expc]# yum whatprovides */libstdc++.so.6
[root@miservidor expc]# yum install libstdc++-4.4.7-4.el6.i686

[root@miservidor expc]# yum whatprovides /lib/libpam.so*
[root@miservidor expc]# yum install pam-1.1.1-17.el6.i86

Al ejecutar de vuelta el comando db2prereqcheck veran que estas librerias instaladas ya seran validadas.

Sin embargo podrian tener problemas con el SELinux.
Si Security-Enhanced Linux (SELinux) esta habilitado y en modalidad imposicion, el instalador podria fallar debido a las restricciones SELinux.

Para determinar si SELinux esta instalado y en modalidad de imposicion, puede ejecutar el siguiente comando

[root@miservidor ~]# sestatus

Para inhabilitar SELinux, puede modificar con vi el archivo /etc/sysconfig/selinux cambiando el valor del parametro y deberia quedar de esta manera.
 SELINUX=disabled
 Luego, para que el SELinux tome el nuevo valor deberan rearrancar la maquina. Lo pueden hacer de la siguiente manera:

[root@miservidor ~]# /sbin/shutdown -r now

En cuanto a la libreria "openibd" no es necesaria si no se utilizara Purescale. Entonces por ello yo ignoro dicho requerimiento.

Instalando DB2
Ahora si ya estamos listos para realizar la instalacion.

DB2 dispone de varios   Metodos de instalacion
Como nuestro servidor no cuenta con entorno grafico el metodo de instalacion que utilice es el basado en archivos de respuesta.

Pueden utilizar el archivo de respuesta que trae como ejemplo el instalador y modificar los valores segun su conveniencia.
El Db2 e\Express -C 10.5 trae el sample en /usuario/descargas/expc/db2/linuxamd64/samples y llevan la extension .rsp

Yo lo que hago aqui es copiar el archivo db2expc.rsp para luego realizar algunas modificaciones
Ejemplo:

[root@miservidor samples]# cp db2expc.rsp miArchivoDeRespuesta.rsp


 Luego deberan otorgar permisos de escritura ya que por defecto es de solo lectura.
 Luego deberan modificar el archivo de respuesta y activar las caracteristicas que deseen.
 El sample contiene ya las intrucciones de como modificar el archivo para activar las caracteristicas.

 Finalmente, una vez que modifiquen el sample (o la copia del mismo como lo hicimos), posicionarse en la raiz del directorio de instalacion. Ej. /usuario/descargas/expc y ejecutar el comando ./db2setup con la opcion -r indicandole donde se encuentra su archivo de respuesta.
Ejemplo:

[root@miservidor expc]# ./db2setup -r 
/usuario/descargas/expc/db2/linuxamd64/samples/miArchivoDeRespuesta.rsp

Finalmente, como resultado, ya tendran instalado DB2 en CentOS


Verificacion de la instalacion

Pueden verificar el log de la instalacion que se crea en /tmp/db2setup.log

Tambien, pueden verificar la instalacion creando la base de datos sample.
Para ello
1- Iniciar sesión con el usuario dueño de la instancia o con autorización sysadm
2- Iniciar el gestor de base de datos db2start
3- Ejecutar el mandato db2sampl para crear la base de datos

Por ultimo pueden ejecutar el mandato db2val
Ejemplo:

[root@localhost bin]# ./db2val -a
DBI1379I  Se está ejecutando el mandato db2val. Esto puede tardar varios minutos.
DBI1335I  La validación de los archivos de instalación para la copia de DB2 instalada en /opt/ibm/db2/V10.5 se ha realizado correctamente.
DBI1339I  La validación de la instancia db2inst1 se ha realizado correctamente.
DBI1343I  El mandato db2val se ha completado correctamente. Para obtener más información, consulte el archivo de anotaciones /tmp/db2val-140625_113144.log.

lunes, 30 de julio de 2012

Centro de información de IBM DB2 Versión 10.1

Aqui encontraran la documentacion completa de DB2 10.1 en Español, en ella encontraran informaciones tales como la vision general de los productos, los fundamentos de DB2, la administracion de bases de datos hasta como configurar los diferentes features que nos ofrece db2
http://goo.gl/J0Cav