Mi bitácora en donde plasmo algunas de las cosas en las que estoy trabajando y cosas de temas varios. Siganme encontrarán temas muy interesantes .-)
domingo, 18 de abril de 2010
jueves, 18 de febrero de 2010
Jade + Librerias IDK (Ingenias Development Kit) en Ubuntu
Continuando con los posts que va generando el desarrollo de mi proyecto de tesis. En estos momentos me toca implementar algunas partes del Sistema Multi-Agente que es de lo que se trata mi proyecto, que está siendo desarrollado siguiendo la Metodología INGENIAS. Esta metodología incorpora en el proceso de desarrollo una excelente herramienta denominada IDK (ingenias Development Kit) que guía en las fases de análisis, diseño e implementación incluyendo la generación de código fuente en Java. El código que genera esta herramienta está basado en el framework para el desarrollo de sistemas multi-agente JADE, incorporando sus propias librerías a las que trae consigo Jade. Y como está basado en sus librerías, los sistemas que se diseñan y codifican mediante IDK necesitan una plataforma Jade Corriendo en los servidores que corren este tipo de sistemas. Así que es aquí donde nace esta guía, que está basada en la estupenda guía desarrollada por eveliotc, entonces como se dice manos a la presa… en este caso al teclado…
2.- en un terminal nos desplazamos al escritorio tecleando
cd /home/juankasar/Escritorio3.- descomprimimos el archivo descargado con:
unzip /home/juankasar/Escritorio/JADE-all-3.7.zip4.- y luego descomprimimos los zips que se generan del paso anterior con:
unzip JADE-bin-3.5.zipSi a todo lo que pregunte
unzip JADE-examples-3.5.zip
unzip JADE-doc-3.5.zip
unzip JADE-src-3.5.zip
5.- Hay que crear directorios para Jade como root
sudo mkdir /usr/lib/jade6.- movemos las librerías de Jade a los directorios creados
sudo mkdir /usr/share/jade
sudo mv jade/lib/* /usr/lib/jade/5.- al definir estas variables de entorno nos evitarnos el problema de manejar classpath por cada agente, para lo cual editando nuestro .bashrc
sudo mv jade /usr/share/jade
gedit ~/.bashrc6 agregamos al final las variables y unos alias que son las siguientes lineas:
#jade7.se puede correr el monitor de Jade mediante
export JADE_LIB=/usr/lib/jade
export
JADE_CP=$JADE_LIB/http.jar:$JADE_LIB/iiop.jar:$JADE_LIB/jade.jar:$JADE_LIB/jadeTools.jar:$JADE_LIB/commons-codec/commons-codec-1.3.jar
alias runJade='java -cp $JADE_CP jade.Boot'
alias compJade='javac -cp $JADE_CP'
runJade -guiAhora viene la parte diferente el IDK genera nuevas librerías que incorporan cambios en las existentes en Jade par lo cual lo que yo desarrolle es copiar el conjunto de librerías que utiliza el IDK en vez de las incorporadas por Jade y ya pude correr mi monstruo… para ello hacemos:
sudo rm –fr /lib/jade/jade.jarprobamos denuevo con
sudo rm –fr /lib/jade/jadeTools.jar
sudo cp /home/juankasar/Escritorio/libsIngenias/* /lib/jade/
runJade –gui
y listo a seguir con el proy..
Manejo de Fechas en Java incluidos TimeStamp y Unix Timestamp
Mientras desarrollo el sistema que acompaña mi proyecto de tesis van surgiendo algunos puntos que deben irse tratando en el camino cuando desarrollaba un modulo en java que monitoriza los accesos de los estudiantes al EVA (Entorno Virtual de Aprendizaje) de mi Universidad, desarrollado bajo moodle, me encontre con que las fechas se manejaban mediante un sistema denominado unix timestamp que segun dice la literatura es usado en todos los sitemas unix y algunos motores de bases de datos... y Segun consite en que desde el primero de enero de 1970 se cuentan los segundos hasta la fecha que se desea obtener y con eso se tiene una fecha exacta hasta el nivel de segundos de algun acontesimiento. Y fue aqui cuando empeso mi calvario, busque mil y una formas de como pasar ese valor a una fecha mas tratable en java ya que necesitaba hacer comparaciones entre las mismas. No encontre practicamente nada asi que toco hacer un estudio intensivo de clases de fechas y como mismo podia interpretar los valores unix timestamp en java. El relajo empezo cuando descubri que los timestamps en java esta en nanosegundos asi que tocaba equiparalos... y bueno despues de tanta introduccion les dejo el codigo resultante para ver si a alguna persona le quito mas de un dolor de cabeza.
Codigo fuente import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; /** * * @author juankasar */ public class Tiempos { public static Date unixTimestampToDate(String fecha) { Date resultado=null; Date aux = stringToDate("1970-01-01 00:00:00"); Timestamp aux1 = dateToTimeStamp(aux); long val = (Long) Long.valueOf(fecha); val = val * 1000; val = val + aux1.getTime(); Timestamp aux2 = new Timestamp(val); resultado = timestampToDate(aux2); return resultado; } public static String dateToUnixTimestamp(Date fecha){ String res = ""; Date aux = stringToDate("1970-01-01 00:00:00"); Timestamp aux1 = dateToTimeStamp(aux); Timestamp aux2 = dateToTimeStamp(fecha); long diferenciaMils = aux2.getTime() - aux1.getTime(); long segundos = diferenciaMils / 1000; return res+segundos; } public static String dateToString(Date fecha){ String result = null; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); result = format.format(fecha); return result; } public static Date stringToDate(String fecha){ // Solo funciona con string en el formato yyyy-MM-dd HH:mm:ss SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date res = null; try{ res = format.parse(fecha); }catch(Exception e){} return res; } public static Timestamp dateToTimeStamp(Date fecha){ return new Timestamp(fecha.getTime()); } public static Date fechaHoraSistema(){ return new Date(System.currentTimeMillis()); } private static Date timestampToDate(Timestamp timestamp) { return new Date(timestamp.getTime()); } }
Saludos Espero que les sirva
Suscribirse a:
Entradas (Atom)