martes, 7 de abril de 2009

Levantar Glassfish por consola en UBUNTU

Vamos ha ver como se hace para levantar un proyecto web, en el servidor de aplicaciones Glassfish desde la consola, regularmente como desarrolladores nos hemos encontrado con paquetes *.war, los cuales son el empaquetado de toda la aplicación web lista para funcionar, cuando instalamos netbeans también se instala glassfish pero a veces es demasiado pesado arrancar primero el IDE y después levantar el servidor de aplicaciones, para se cuenta con uno practico comando para solo levantar el servidor.

Debemos ir primero a la carpeta donde tenemos instalado glassfish y a bin, algunos lo podemos tener instalado por defecto en esta ruta:

$ cd glassfish-v2ur2/bin/

o

$ cd /usr/local/glassfish/bin/

Allí ponemos:

$ ./asadmin start-domain domain1

y esperamos un momento y ya está:

Ahora solo nos toca abrir un navegador y poner:

http://localhost:4848/

para entrar a la interfaz de administración de glassfish recuerda que cuando se instaló netbeans nos pidió un user y un password allí van, por defecto son "user: admin" y "password: adminadmin", desde allí ya podremos gestionar todos los proyectos *.war que tengamos.

Para detener Glassfish pondremos los mismo solo que con la palabra stop:

$ ./asadmin stop-domain domain1

Eso es todo, por cierto este mismo comando lo podemos usar en Window$ solo debemos ponerlo en la consola dentro de la carpeta bin de glassfish de archivos de programa, espero que les sirva tanto como a mi.

Saludos...

christmo

lunes, 5 de enero de 2009

Montar archivos ISO, BIN, CUE, MDF, NRG, IMG y DAA en Linux

E copiado este post a mi blog, porque lo necesito y como tengo muy mala memoria preferí tenerlo a la mano... saludos!!!!

Linux tiene la posibilidad de montar las imágenes de cd/dvd sin tener que grabarlas. Asumiremos que usas una distribución que usa “apt” para instalar y actualizar paquetes, este es el caso de debian, ubuntu, suse,etc. Asumiremos también que sabes como crear directorios y que sabes qué es “montar” un sistema de ficheros. Vamos al grano.

Con unos cuantos comandos de consola podremos montar distintos tipos de imágenes de CD/DVD fácilmente:

Lo más básico, montar una imagen ISO:
sudo mount -t iso9660 -o loop archivo.iso /directorio/de/montaje

Montando imágenes BIN y CUE:

Para poder montar estos archivos necesitas convertirlos antes a imagen ISO, esto lo puedes hacer con el programa bchunk.

(Si no tienes instalado bchunk)
sudo apt-get install bchunk

(nota: si así no puedes instalarlo puede encontrar el programa aquí: bchunk)

y cuando se haya instalado procederemos a convertir la imagen bin con su archivo cue correspondiente a un solo archivo iso:
bchunk archivo.bin archivo.cue nuevonombre.iso

Ahora ya tendrás un nuevo archivo iso que podrás montar como se explica más arriba.

Montar imágenes NRG (imágenes de Nero Burning Rom):

Las imagenes NRG pueden ser montadas directamente sin necesidad de convertirlas:
mount -t iso9660 -o loop,offset=307200 imagen.nrg /directorio/de/montaje

(gracias Tux)

Si tienes algún problema con ese método o deseas convertir la imagen NRG a ISO deberás usar el programa nrg2iso, para instalarlo haremos:
sudo apt-get install nrg2iso

(nota: si así no puedes instalarlo puede encontrar el programa aquí: Nrg2Iso)
y cuando ya esté instalado, para convertir la imagen:
nrg2iso archivo.nrg nuevoarchivo.iso

y para montar la imagen ISO simplemente debes seguir las instrucciones detalladas más arriba.

Montar imágenes MDF y MDS


De nuevo utilizaremos un programa para convertir antes la imagen mdf a iso. El programa tiene el original nombre de mdf2iso. Para instalarlo:
sudo apt-get install mdf2iso

(nota: si así no puedes instalarlo puede encontrar el programa aquí: Mdf2Iso)
y una vez instalado convertiremos el archivo MDF a ISO:
mdf2iso archivo.mdf nuevaimagen.iso

Montar imágenes IMG

Usaremos el programa CCD2ISO. Este programa no lo he podido descargar desde los repositorios oficiales de Ubuntu pero de todos modos no estaría de más que intentases instalarlo por apt-get así:
sudo apt-get install ccd2iso

Si de este modo no puedes instalarlo puedes seguir las instrucciones de esta página para bajar el paquete deb de ccd2iso e instalarlo facilmente.

Si por cualquier motivo no pudieses conseguir el programa por esos dos métodos siempre puedes descargarlo desde su página: Ccd2Iso (ojo, tendrás que compilarlo)

Para instalarlo de este último modo descargamos el archivo que sera algo así como “ccd2iso-0.2.tar.gz” (puede variar la versión) y primero lo descomprimimos así:
tar -xzvf ccd2iso-0.2.tar.gz

Ahora que tendremos una carpeta llamada “ccd2iso”, hacemos lo siguiente:
cd ccd2iso

./configure

make
make install

Con esto ya tendremos instalado el programa ccd2iso. Finalmente para convertir la imagen ccd a iso hacemos:
ccd2iso imagen.img imagen.iso

Y montaremos la imagen iso recien creada como se explica más arriba en esta misma guía.

Montar imágenes DAA

El formato DAA es un formato que utiliza el programa Poweriso. Durante algún tiempo este formato resultaba muy dificil de utilizar en Linux (no había versión de Poweriso para linux y la emulación con wine no funcionaba). Finalmente los creadores del programa sacaron una versión gratuita de su programa para Linux que además nos sirve para convertir otros formatos.

Pero vamos al grano, para convertir una imagen DAA a ISO primero necesitaremos la versión linux de poweriso que podemos bajar desde esta página (parte de abajo) o bien de esta forma :
wget http://poweriso.com/poweriso.tar.gz

Descomprimimos:
tar -zxvf poweriso.tar.gz

Y convertimos a ISO:
./poweriso convert imagen.daa -o nuevaimagen.iso

(Instrucciones para montar la imagen iso, al principio de esta guía)

viernes, 15 de agosto de 2008

Leer un archivo properties desde un proyecto web + JSF

Hola en este post voy a mostrar como se debe hacer para leer un archivo *.properties de java, puesto dentro de un proyecto web JSF, es interesante mencionar que la forma de llamar a estos archivos difiere un poco de como se lo hace comúnmente en un proyecto swing de escritorio común y corriente,  ya que en este solo se pone el path relativo desde el pack del proyecto y ya, pero en un proyecto web no funciona así, por eso he decidido mostrarlo a continuación, esta es la forma que descubrí para hacerlo y me funcionó, pero si existe una forma mejor o más optima de realizarlo res ruego comentarlo para así aprender todos algo más.


Dentro de nuestro proyecto web se nos crean comunmente las páginas jsp, y su contraparte en código java dentro de un paquete en la carpeta Source Packages, dentro de ese paquete vamos a colocar el archivo .properties, teniendo en cuenta que este se va a llamar igual que la clase que lo va a leer, (por ejemplo: En mi paquete tengo una clase llamada Reportes.java, dentro del mismo paquete pondré un archivo de propiedades llamado reportes.properties), el código para ller este archivo quedaria así:



[sourcecode language='java']
String nombrePROP = Reportes.class.getSimpleName().toLowerCase() + ".properties";
Properties props = new Properties();
props.load(Reportes.class.getResourceAsStream(nombrePROP));
String strPathOrigen = props.getProperty("pathORI");
String strPathXLS = props.getProperty("pathXLS");
[/sourcecode]


Con esto ya podriamos leer las propiesades que se tenga dentro de nuestro archivo properties.


Ahora para poder poner las propiedades sacadas del archivos en variables globales, tendremos que hacer lo siguiente, fuera de cualquier método y dentro de la clase vamos a poner esto, como un método más.



[sourcecode language='java']
private static String strPathOrigen;
private static String strPathXLS;

static {
try {
String nombrePROP = Reportes.class.getSimpleName().toLowerCase() + ".properties";
Properties props = new Properties();
props.load(Reportes.class.getResourceAsStream(nombrePROP));
strPathOrigen = props.getProperty("pathORI");
strPathXLS = props.getProperty("pathXLS");
} catch (IOException ex) {
Logger.getLogger(Reportes.class.getName()).log(Level.SEVERE, null, ex);
}
}
[/sourcecode]

Así todo lo que se saque del archivo properties se almacenará globalmente y se podrá usar dentro de toda la clase si es necesario.


Espero que les haya servido...


Saludos christmo...

Descargar un archivo .XLS o .PDF con JSF

Hola había tenido problemas al tratar de descargar un archivo desde el servidor, para que sea visualizado en los computadores clientes del sistema usando JSF, pero buscando un poco por allí pude encontrar como hacerlo, este método sirve para descargar archivos *.XLS y *.PDF con los que he probado, pero me imagino que debe funcionar para cualquier tipo de archivo, lo importante es reconocer que MIME Type tiene este archivo eso lo podremos encontrar en esta página.



File ficheroXLS = new File(strPathXLS);
FacesContext ctx = FacesContext.getCurrentInstance();
FileInputStream fis = new FileInputStream(ficheroXLS);
byte[] bytes = new byte[1000];
int read = 0;

if (!ctx.getResponseComplete()) {
String fileName = ficheroXLS.getName();
String contentType = "application/vnd.ms-excel";
//String contentType = "application/pdf";
HttpServletResponse response =
(HttpServletResponse) ctx.getExternalContext().getResponse();

response.setContentType(contentType);

response.setHeader("Content-Disposition",
"attachment;filename=\"" + fileName + "\"");

ServletOutputStream out = response.getOutputStream();

while ((read = fis.read(bytes)) != -1) {
out.write(bytes, 0, read);
}

out.flush();
out.close();
System.out.println("\nDescargado\n");
ctx.responseComplete();
}


Saludos y espero que sea de utilidad para ustedes...

martes, 29 de julio de 2008

CLIENTE DE GOOGLE MAPS PARA LOS CENTROS DE LA UTPL UTILIZANDO REST, MYSQL Y NETBEANS 6.1

REST Y APLICACIONES WEB LIGERAS!...

La Transferencia de Estado Representacional (REST),  es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web, en la actualidad se utiliza para describir cualquier interfaz web simple que utiliza XML y HTTP.




[caption id="" align="aligncenter" width="485" caption="Transacciones REST"]Tranzacciones REST[/caption]

Un concepto importante en REST es la existencia de recursos que pueden ser accedidos utilizando un Identificador Uniforme de Recurso (URI).  Para manipular estos recursos, los componentes de la red (clientes y servidores) se comunican a través de un interfaz estándar (HTTP) e intercambian representaciones de estos recursos (los ficheros que se descargan y se envían).


La petición puede ser tramitada por cualquier número de conectores (por ejemplo clientes, servidores, cachés, túneles, etc.) pero cada uno lo hace sin "ver más allá" de su propia petición (lo que se conoce como separación en capas, otra restricción de REST, que es un principio común con muchas otras partes de la arquitectura de redes y de la información). Así, una aplicación puede interactuar con un recurso conociendo por la URI y la acción requerida, no necesitando conocer si existen cachés, proxys, cortafuegos, túneles o cualquier otra cosa entre ella y el servidor que guarda la información. La aplicación, sin embargo, debe comprender el formato de la información devuelta (la representación), que es por lo general un documento HTML o XML, aunque también puede ser una imagen o cualquier otro contenido.


Mediante XML, nuestra aplicación hace el consumo del servicio del servidor de Google Maps , se le envía algunos parámetros y el servidor GOOGLE nos devolverá el respectivo mapa ubicando el lugar que se desea localizar.


Ahora que ya tenemos una ligera idea de lo que es REST, vamos ha detallar el proyecto que hemos realizado con esta tecnología:


El proyecto que se ha desarrollado hace uso de varias tecnologías y herramientas que están siendo utilizadas actualmente para el desarrollo de aplicaciones Web, grandes empresas han hecho uso de ellas teniendo un gran éxito en Internet tales como: eBay, Amazon.com, Yahoo, y muchas más; es por ello que hemos creído conveniente emplearlas en nuestro proyecto, el cual será de mucha importancia para nuestro desarrollo intelectual con lo cual nos hemos introducido en el manejo de herramientas Web 2.0. La elaboración de éste proyecto lo hemos conseguido utilizando el servicio de Google Maps, para obtener a partir del: país, provincia y cantón, la ubicación correspondiente a la ciudad en donde se encuentra ubicado cada centro universitario de la UTPL en todo el mundo, la información de cada uno de estos centros, se tiene almacenada en una base de datos elaborada en MySQL, de la cual se extraen los datos para complementarse con la ubicación en el mapa y poder dar una información correspondiente y adecuada de cada centro.



Las herramientas empleadas en el proyecto son:

Netbeans 6.1: en éste IDE, ya viene integrado el plugin para el trabajo con REST, pero es necesario actualizarla, ya que es una versión anterior la que viene integrada de la que se trabajó, en el primer vídeo se muestra como hacer esto.



MySql 5.0: se deberá cargar el scrip con los datos proporcionados en este proyecto para el optimo funcionamiento de la aplicación, en el primer vídeo se muestra como realizar esta operación .

Experiencias Comentarios y Problemas:

Es necesario que trabajen con la versión actualizada del REST (versión 0.7) en Netbeans, por lo que podrían tener problemas al realizar la conexión con el Google Maps, ya que podría cambiar la forma de realizar la conexión al trabajar con la versión anterior.


Es interesante trabajar con este tipo de aplicaciones, ya que con las herramientas que se cuenta actualmente se facilita mucho el trabajo en el desarrollo de éstas.


Vídeo demostrativo, se explica a detalle los pasos para hacer funcionar la aplicación correctamente, también se hace un análisis a a breves rasgos del contenido del proyecto para el uso de REST con nuestro proyecto de Netbeans, también se explica la elaboración del cliente y unión con el proyecto que hace de servidor de recursos mediante los Stubs de Netbeans.


[vimeo 1433197]


Este Video se muestra en si el resultado de todo el proyecto, la aplicación 100% funcional.


[vimeo 1433170]


Aquí tienes las fuentes de consulta utilizadas para hacer este proyecto: http://del.icio.us/christmo/rest


Download Código fuente de la aplicación:



Google Maps Centros UTPL



martes, 22 de julio de 2008

Gráficos para variables cualitativas

Los gráficos más usuales para representar variables de tipo nominal son los siguientes:

Diagramas de barras:
Siguiendo la figura 1.1, representamos en el eje de ordenadas las modalidades y en abscisas las frecuencias absolutas o bien, las frecuencias relativas. Si, mediante el gráfico, se intenta comparar varias poblaciones entre sí, existen otras modalidades, como las mostradas en la figura 1.2. Cuando los tamaños de las dos poblaciones son diferentes, es conveniente utilizar las frecuencias relativas, ya que en otro caso podrían resultar engañosas.


Figura: Diagrama de barras para una variable cualitativa.
\includegraphics[angle=0, width=0.5\textwidth]{fig01-01.eps}


Figura: Diagramas de barras para comparar una variable cualitativa en diferentes poblaciones. Se ha de tener en cuenta que la altura de cada barra es proporcional al número de observaciones (frecuencias relativas).
\includegraphics[angle=-90, width=0.5\textwidth]{fig01-02.eps}

Diagramas de sectores
(también llamados tartas). Se divide un círculo en tantas porciones como clases existan, de modo que a cada clase le corresponde un arco de círculo proporcional a su frecuencia absoluta o relativa (figura 1.3).


Figura: Diagrama de sectores.
\includegraphics[angle=-90, width=0.6\textwidth]{fig01-03.epsi}

El arco de cada porción se calcula usando la regla de tres:

\begin{eqnarray}\html{eqn1}n & \longrightarrow & 360^{\circ} \nonumber \\ n_i & \longrightarrow &x_i = \frac{360 \cdot n_i}{n} \nonumber \end{eqnarray}


Como en la situación anterior, puede interesar comparar dos poblaciones. En este caso también es aconsejable el uso de las frecuencias relativas (porcentajes) de ambas sobre gráficos como los anteriores. Otra posibilidad es comparar las 2 poblaciones usando para cada una de ellas un diagrama semicircular, al igual que en la figura 1.4. Sean $n_1 \leq n_2$ los tamaños respectivos de las 2 poblaciones. La población más pequeña se representa con un semicírculo de radio r1y la mayor con otro de radio r2. La relación existente entre los radios, es la que se obtiene de suponer que la relación entre las areas de las circunferencias es igual a la de los tamaños de las poblaciones respectivas, es decir:


\begin{displaymath}\frac{r_2^2}{r_1^2} = \frac{n_2}{n_1} \Longleftrightarrow r_2 = r_1 \cdot \sqrt{\frac{n_2}{n_1}} \end{displaymath}


Figura: Diagrama de sectores para comparar dos poblaciones
\includegraphics[angle=-90, width=0.6\textwidth]{fig01-04.epsi}

Pictogramas
Expresan con dibujos alusivo al tema de estudio las frecuencias de las modalidades de la variable. Estos gráficos se hacen representado a diferentes escalas un mismo dibujo, como vemos en la figura 1.5.


Figura: Pictograma. Las áreas son proporcionales a las frecuencias.
\includegraphics[angle=0, width=0.5\textwidth]{fig01-05.eps}

El escalamiento de los dibujos debe ser tal que el área1.1 de cada uno de ellos sea proporcional a la frecuencia de la modalidad que representa. Este tipo de gráficos suele usarse en los medios de comunicación, para que sean comprendidos por el público no especializado, sin que sea necesaria una explicación compleja.

Gráficos para variables cualitativas

Los gráficos más usuales para representar variables de tipo nominal son los siguientes:

Diagramas de barras:
Siguiendo la figura 1.1, representamos en el eje de ordenadas las modalidades y en abscisas las frecuencias absolutas o bien, las frecuencias relativas. Si, mediante el gráfico, se intenta comparar varias poblaciones entre sí, existen otras modalidades, como las mostradas en la figura 1.2. Cuando los tamaños de las dos poblaciones son diferentes, es conveniente utilizar las frecuencias relativas, ya que en otro caso podrían resultar engañosas.


Figura: Diagrama de barras para una variable cualitativa.
\includegraphics[angle=0, width=0.5\textwidth]{fig01-01.eps}


Figura: Diagramas de barras para comparar una variable cualitativa en diferentes poblaciones. Se ha de tener en cuenta que la altura de cada barra es proporcional al número de observaciones (frecuencias relativas).
\includegraphics[angle=-90, width=0.5\textwidth]{fig01-02.eps}

Diagramas de sectores
(también llamados tartas). Se divide un círculo en tantas porciones como clases existan, de modo que a cada clase le corresponde un arco de círculo proporcional a su frecuencia absoluta o relativa (figura 1.3).


Figura: Diagrama de sectores.
\includegraphics[angle=-90, width=0.6\textwidth]{fig01-03.epsi}

El arco de cada porción se calcula usando la regla de tres:

\begin{eqnarray}\html{eqn1}n & \longrightarrow & 360^{\circ} \nonumber \\ n_i & \longrightarrow &x_i = \frac{360 \cdot n_i}{n} \nonumber \end{eqnarray}


Como en la situación anterior, puede interesar comparar dos poblaciones. En este caso también es aconsejable el uso de las frecuencias relativas (porcentajes) de ambas sobre gráficos como los anteriores. Otra posibilidad es comparar las 2 poblaciones usando para cada una de ellas un diagrama semicircular, al igual que en la figura 1.4. Sean $n_1 \leq n_2$ los tamaños respectivos de las 2 poblaciones. La población más pequeña se representa con un semicírculo de radio r1y la mayor con otro de radio r2. La relación existente entre los radios, es la que se obtiene de suponer que la relación entre las areas de las circunferencias es igual a la de los tamaños de las poblaciones respectivas, es decir:


\begin{displaymath}\frac{r_2^2}{r_1^2} = \frac{n_2}{n_1} \Longleftrightarrow r_2 = r_1 \cdot \sqrt{\frac{n_2}{n_1}} \end{displaymath}


Figura: Diagrama de sectores para comparar dos poblaciones
\includegraphics[angle=-90, width=0.6\textwidth]{fig01-04.epsi}

Pictogramas
Expresan con dibujos alusivo al tema de estudio las frecuencias de las modalidades de la variable. Estos gráficos se hacen representado a diferentes escalas un mismo dibujo, como vemos en la figura 1.5.


Figura: Pictograma. Las áreas son proporcionales a las frecuencias.
\includegraphics[angle=0, width=0.5\textwidth]{fig01-05.eps}

El escalamiento de los dibujos debe ser tal que el área1.1 de cada uno de ellos sea proporcional a la frecuencia de la modalidad que representa. Este tipo de gráficos suele usarse en los medios de comunicación, para que sean comprendidos por el público no especializado, sin que sea necesaria una explicación compleja.

¿Qué es la estadística?

Cuando coloquialmente se habla de estadística, se suele pensar en una relación de datos numéricos presentada de forma ordenada y sistemática. Esta idea es la consecuencia del concepto popular que existe sobre el término y que cada vez está más extendido debido a la influencia de nuestro entorno, ya que hoy día es casi imposible que cualquier medio de difusión, periódico, radio, televisión, etc, no nos aborde diariamente con cualquier tipo de información estadística sobre accidentes de tráfico, índices de crecimiento de población, turismo, tendencias políticas, etc.

Sólo cuando nos adentramos en un mundo más específico como es el campo de la investigación de las Ciencias Sociales: Medicina, Biología, Psicología, ... empezamos a percibir que la Estadística no sólo es algo más, sino que se convierte en la única herramienta que, hoy por hoy, permite dar luz y obtener resultados, y por tanto beneficios, en cualquier tipo de estudio, cuyos movimientos y relaciones, por su variabilidad intrínseca, no puedan ser abordadas desde la perspectiva de las leyes determistas. Podríamos, desde un punto de vista más amplio, definir la estadística como la ciencia que estudia cómo debe emplearse la información y cómo dar una guía de acción en situaciones prácticas que entrañan incertidumbre.



La Estadística se ocupa de los métodos y procedimientos para recoger, clasificar, resumir, hallar regularidades y analizar los datos, siempre y cuando la variabilidad e incertidumbre sea una causa intrínseca de los mismos; así como de realizar inferencias a partir de ellos, con la finalidad de ayudar a la toma de decisiones y en su caso formular predicciones.


Podríamos por tanto clasificar la Estadística en descriptiva, cuando los resultados del análisis no pretenden ir más allá del conjunto de datos, e inferencial cuando el objetivo del estudio es derivar las conclusiones obtenidas a un conjunto de datos más amplio.



Estadística descriptiva: Describe, analiza y representa un grupo de datos utilizando métodos numéricos y gráficos que resumen y presentan la información contenida en ellos.

Estadística inferencial: Apoyándose en el cálculo de probabilidades y a partir de datos muestrales, efectúa estimaciones, decisiones, predicciones u otras generalizaciones sobre un conjunto mayor de datos.