miércoles, 24 de septiembre de 2008

Variables de Entorno en Vista

Para utilizar algunas de las herramientas del curso, es necesario definir variables de ambiente (Environment Variables), desgraciadamente, en Windows Vista hay algunas particularidades que debemos tomar en cuenta.

OJO: Para toda esta explicación utilizaré la versión en inglés de vista, cada usuario es responsable de hacer las traducciones correspondientes

Supongamos que queremos utilizar jess (Java Rule Engine) y para ello vamos a definir las siguientes variables de ambiente

JESS_HOME : Directorio raíz de la herramienta JESS
JAVA_HOME: Directorio raíz de nuestro JDK (Java Development Kit)
JESS_FILES: Directorio raíz donde están nuestros archivos .clp

El primer paso consiste en abrir la consola de cuentas de usuario.

Para ello, hay que ir al Menu de Inicio y en el cuadro de búsqueda teclear "user accounts" (sin comillas). Entre las opciones que se despliegan bajo "Programs" elegir "User Accounts" y se abrirá la consola. Debe ser algo parecido a la siguiente figura:


El siguiente paso es abrir la ventana de variables de ambiente, para ello seleccionamos la opción "Change my environment variables" que generalmente es la que se encuentra hasta abajo del lado izquierdo de la pantalla. Al hacerlo se abre la siguiente ventana:

En este momento ya estamos en posibilidad de cambiar las variables de entorno que ya existen o crear las nuevas que necesitamos. Personalmente prefiero dejar las variables del sistema en paz y simplemente construir variables de entorno para cada cuenta de usuario.

Para crear las variables que nos interesan hacemos click en el botón "NEW" en las variables de usuario. Se abrirá una nueva ventana donde podemos poner el nombre de la variable y también el valor de la misma:


En esta ventana hemos creado la variable JESS_HOME y le hemos asignado el directorio raíz de la instalación de JESS.

Para otras dos variables repetimos el procedimiento.

Una vez que hemos hecho esto, podemos abrir una ventana de comandos y utilizar JESS sin necesidad ni de cambiarnos de directorio ni de teclear toda la ruta hasta JESS.

miércoles, 20 de agosto de 2008

War Games, 1983

Aunque esto demuestre que ya no soy tan joven como aparento, les comparto LA escena de la película War Games. Al final, esta película fue una de las motivaciones para ser ingeniero....

Esta escena es interesante porque Joshua (la computadora) se pone a "jugar" y "aprende" qué hacer para ganar el juego. Al final, Joshua pronuncia una de mis frases favoritas:

"La única jugada ganadora es NO jugar"

Al margen de los rollos hollywoodenses, la simulación hecha por Joshua nos permite ver una de las aplicaciones de la Inteligencia Artificial más en boga actualmente, mejor conocida por su nombre comercial: "Business Intelligence".

Alguno de mis alumnos comentaba que "la Inteligencia Artificial no llegará a niveles de película"... Sirva este pequeño comentario para demostrarle que no solo llega, los sobrepasa....

lunes, 7 de julio de 2008

Instalando Java3D (para usar con Simbad)

En un post anterior les comentaba cómo usar el simulador de Simbad cuando no se cuenta con una tarjeta gráfica que soporte OpenGL 1.2 o superior. En áquel post se suponía que java3D ya estaba correctamente instalado.

En este post les daré algunos tips para instalar Java3D y poder utilizarlo con Simbad. (Ojo: estos tips te sirven si tu tarjeta gráfica no soporta OpenGL 1.2 o superior).

Instalando Java3D en Windows

Primer Paso: Descargar Java3D

Los binarios de java3D los puedes encontrar en esta dirección:

https://java3d.dev.java.net/binary-builds-old.html

Utilizando windows tenemos dos opciones para instalar el java3D. La primera consiste en instalar la versión 1.3.1 que utiliza a DirectX para el rendering. Personalmente lo probé un tiempo y no me dió mayores problemas. Debes fijarte bien que descargas el archivo con el RuntTime (aquí).
Una vez bajado el archivo todo se limita a ejecutarlo y éste hará todo el trabajo de instalación.

Para probar que todo está instalado bien, te recomiendo lo siguiente:
  • Abrir una ventana de comandos (Menú Inicio -> Run -> cmd)
  • Ir al directorio donde está el demo de simbad (un archivo .jar)
  • ejecutar el siguiente código (sin comillas) "java -jar simbad-1.4.jar
Si aparece la ventana del mundo virtual de Simbad quiere decir que todo está funcionando bien. Para asegurarte de que así es, busca en la ventana de comandos las siguientes líneas:

j3d.version = 1.3.1
j3d.vendor = Sun Microsystems, Inc.
j3d.specification.version = 1.3
j3d.specification.vendor = Sun Microsystems, Inc.
j3d.renderer = DirectX
J3DThreadPriority = 5

Para Utilizar OpenGL en Windows

Si prefieres utilizar OpenGL para hacer el render 3D, entonces puedes utilizar una versión más moderna de Java3D. La que me ha funcionado es la versión 1.3.2 que puedes descargar aquí. (OJO: para que funcione realmente bien, necesitas descargar el archivo .zip de "instalación experta").

Sigue estos pasos:
  • Baja el archivo y déjalo en un directorio de trabajo
  • Descomprime el archivo. Deberá aparecer otro archivo comprimido llamado "j3d-132-win.zip"
  • Descomprime el nuevo archivo. Deberás tener un directorio "bin" y un directorio "lib" que a su vez contiene otro directorio "ext"
  • Copia los archivos "j3dcore-d3d.dll", "j3dcore-ogl.dll" y "j3dutils.dll" a las siguientes localidades:
    • c:\Program Files\Java\jre[tu versión de java]\bin
    • c:\Program Files\Java\jdk[tu versión de java]\jre\bin
    • OJO: Si tienes más de un JRE instalado debes copiar los archivos a todos los directorios "bin" de los jre.
  • Copia los archivos "j3dcore.jar", "j3dutils.jar" y "vecmath.jar" del directorio "lib\ext" a las siguientes localidades:
    • c:\Program Files\Java\jre[tu versión de java]\lib\ext
    • c:\Program Files\Java\jdk[tu versión de java]\jre\lib\ext
    • OJO: Si tienes más de un JRE instalado debes copiar los archivos a todos los directorios "lib\ext" de los jre.
Para probar que todo funciona correctamente ejecuta el demo de simbad (Menu Inicio -> Run ->cmd) y luego de que te posiciones en el directorio donde tienes el demo de Simbad ejecuta el siguiente código (sin comillas) "java -jar simbad-1.4.jar"

Si todo está funcionando correctamente deberás ver aparecer la ventana del mundo de Simbad. Busca también en la consola las siguientes lineas:

j3d.version = 1.3.2 fcs
j3d.vendor = Sun Microsystems, Inc.
j3d.specification.version = 1.3
j3d.specification.vendor = Sun Microsystems, Inc.
j3d.renderer = OpenGL
J3DThreadPriority = 5

¡Listo!


En el siguiente post publicaré algunos tips para instalar el Java3D en Linux

miércoles, 25 de junio de 2008

Para ejecutar Simbad sin tarjeta gráfica

En mis cursos de Agentes Inteligentes he comenzado a utilizar el simulador Simbad (http://simbad.sourceforge.net/) para realizar algunas de las prácticas.

Este simulador utilizar Java3D para hacer el rendering de los mundos virtuales donde se desenvuelve el robot y Java3D a su vez utiliza OpenGL. Esto puede representar un problema cuando tu computadora no tiene una tarjeta de video que soporte OpenGL 1.2 o superior. Afortunadamente hay algunas formas de darle vuelta a este problema tanto para windows como para linux que a continuación voy a presentar.

OJO: En todos los casos, tanto para windows como para linux, es importante que puedas instalar java3D manualmente (si necesitas ayuda haz click aquí )

Ejecutando Simbad en Windows

Tanto si estás utilizando XP como Vista, no tendrás soporte para OpenGL más allá de la versión 1.1. La buena noticia es que Java3D en sus principios ofrecía versiones para DirectX y para OpenGL y el simulador Simbad funciona bien con cualquiera de las dos.

Simbad en Windows con DirectX

Para ejecutar Simbad en Windows con DirectX tienes que bajar el instalador de java3D 1.3.1 y ejecutarlo en tu computadora. Una vez instalado todo debería funcionar bien.

Simbad en Windows con OpenGL

Si deseas utilizar una versión más reciente de Java3D y también utilzar OpenGL para el manejo gráfico, la versión a utilizar es la 1.3.2 (al menos esa es la más moderna que funcionó en mi Dell Inspiron 9400 con tarjeta Intel GMA945). Para acceder a esta versión tienes que descargar el siguiente archivo y después instalar el java3D a mano.

Ejecutando Simbad en Linux

En el caso de linux el asunto es más enredoso ya que no tenemos un equivalente del DirectX y necesariamente tenemos que utilizar OpenGL para hacer el manejo gráfico. En este sentido gracias a la versatilidad de linux tenemos 2 formas de ejecutar Simbad. Personalmente he probado ambas y me he quedado con la segunda opción simplemente para poder disfrutar de las animaciones extras que proporciona el Compiz.

Opción 1: Utilizando la aceleración gráfica por software (MESA)

OJO: La desventaja de esta opción es que estamos deshabilitando completamente la aceleración gráfica por hardware con lo que perdemos, entre otras cosas, todos los efectos "fancy" del compiz y en algunos casos puede que el rendimiento de la computadora se vea afectado.

Tomando en cuenta lo anterior, el procedimiento es el siguiente (suponiendo que ya tienes java3D en su versión más reciente instalada).
  1. Abrir el manejador de paquetes synaptic (Sistema -> Administración -> Gestor de paquetes Synaptic) (deberás introducir el password del administrador)
  2. Con el Synaptic abierto hacer click en "Buscar" y teclear "MESA" (sin comillas)
  3. Buscar el paquete libgl1-mesa-swx11-i686 y seleccionarlo. Vas a recibir la advertencia de que habrán algunos paquetes que se deberán desinstalar y otros más que se deberán instalar. Acepta los cambios y haz la instalación
  4. Reinicia el manejador de ventanas.
¡Listo! Haz perdido todos los efectos 3D de compiz pero haz ganado en la ejecución de Simbad.

Para dejar todo como estaba tienes que llevar a cabo el mismo procedimiento pero seleccionando el paquete libgl1-mesa-dri

Opción 2: Compilar un ambiente gráfico exclusivo para Simbad

Esta opción nos ofrece la oportunidad de utilizar Simbad desde el IDE Eclipse haciendo uso de la libreria MESA para que la aceleración funcione por software pero solamente cuando usamos Simbad, el resto del tiempo seguiremos usando la aceleración por hardware normal.

(las ideas están sacadas de la página de Nicholas Bredeche)

Primer paso: Instalar Java3D en el sistema (ver ayuda aquí)
Suponemos que has bajado el archivo .zip con la versión java3D que quieres utilizar. Debes descomprimir el archivo y dejarlo en un directorio desde donde lo puedas utilizar (para ser coherente con los cánones de unix, utiliza los privilegios de root para crear un directorio /usr/local/lib/java3D). En este directorio tienes que descomprimir el archivo .zip con java
OJO: Esto no instala java en tu sistema, solamente lo deja accesible para ser utilizado desde eclipse.

Segundo paso: Instalar Java3D para Eclipse

Corre Eclipse, en el menú "Window" y "Preferences" elegir "Java" -> "Build Path" -> "User Library" hacer click en "new" y dar el título "Java3D" luego hacer click en "Add JARs" y seleccionar los 3 archivos jar que están en /usr/local/lib/java3D/lib/ext (que se supone creaste en el paso anterior)

Luego, desplegar los 3 jars y hacer click en "Native library location..." -> "Edit" para indicar el directorio donde están los archivos

Instalar java3D para un proyecto en Eclipse

Seleccinar el proyecto para el que se añadirá java3D y hacer click con botón derecho y luego en "Build Path" -> "Add libraries". Elegir "User Library", hacer click en "Next" -> seleccionar java3D.

Tercer paso: Instalar las bibliotecas MESA para java3D (aceleración gráfica por software)

primero recuperar los archivos binarios que están en esta página (elegir el que corresponda a tu instalación):

(Otra opción es que recuperes el código fuente y lo compiles para tu sistema. Yo intenté esta opción y los make generaban toda clase de errores desde sintaxis hasta declaraciones de variables faltantes por lo que abandoné la idea. Si deseas experimentar visita el sito de MESA (http://www.mesa3d.org/)

Una vez recuperados los binarios utiliza tus privilegios de root para crear el directorio /usr/local/lib/mesa (siempre siendo fieles a los cánones de unix) y copia ahí los archivos que resultan de descomprimir el archivo .gz que obtuviste.

Ya que tienes los binarios de java3D y de MESA lo siguiente es crear un shell que lance Eclipse utilizando estas bibliotecas en lugar de las bibliotecas por defecto del sistema. Para ello crea un archivo "EclipseMESA" ($gedit EclipseMESA) donde tienes que tener las siguientes lineas:

###
#!/bin/sh
export AWT_TOOLKIT=MToolkit
export LD_LIBRARY_PATH=/usr/local/lib/mesa:/usr/local/lib/java3D
export XLIB_SKIP_ARGB_VISUALS=1
/usr/bin/eclipse
Suponemos que los directorios son los correctos para todas las instalaciones. Una vez que grabes este archivo necesitas cambiar sus propiedades para poder ejecutarlo para ello utiliza la siguiente linea de código:
$chmod u+x EclipseMESA
Para ejecutar eclipse con las librerías MESA
$./EclipseMESA

Recomendaciones Finales

Una vez que hayas hecho esto puedes seguir los pasos de la documentación de Simbad para crear un proyecto en Eclipse y probar que funcione todo bien (te recomiendo correr el demo).

Esta segunda opción en Linux hace que podamos correr Simbad desde Eclipse (si lo lanzamos utilizando las librerías MESA para aceleración por software) sin embargo no es posible utilizar Simbad desde la línea de comandos (sigo buscando una forma en cuanto tenga noticias se las haré saber).

miércoles, 18 de junio de 2008

Viviendo con Windows Vista, Seguna Parte



La entrada anterior comentaba sobre mis primeras impresiones utilizando Windows Vista Business SP1. Voy a continuar con algunas impresiones ahora que completo mi primera semana como usuario de Vista.

Lo primero que hay que comentar es que, efectivamente, hace una semana entera instalé Windows Vista en mi laptop y hasta ahora apenas puedo decir que ya estoy completamente listo para comenzar a trabajar de verdad.

Recuerdo que ayer comentaba que un gran acierto de Vista es la forma como ya están pre-cargados un montón de drivers de manera que el hardware se configura casi solo. Esto se convierte en una espada de dos filos. Efectivamente es un gran acierto cuando todo sale bien, pero si algo sale mal es extremadamente díficil saber qué es lo que salió mal y todavía más díficil arreglarlo. Para muestra un botón:


El modelo de laptop que estoy utilizando no tiene un switch para encender y apagar el radio WiFi sino que se hace vía software (en XP con el IntelPROWireless) o mediante una combinación de teclas (Fn-F2). En Vista tienes que buscar el Mobility Center (primero habría que saber que ahí se encuentra esta opción del Wireless) y ahí encontrarás la opción para apagar el WiFi. Pues bien, el calvario comenzó cuando decidí apagar el radio WiFi ya que después el Windows Update encontró un driver más reciente para la red inalámbrica y, naturalmente, instaló la nueva versión. Con el "pequeño" detalle de que la configuración que dejó fue bastante chafa.

El problema se hizo evidente cuando quise conectarme a la red inalámbrica en casa ya que según el "Network and Sharing Center" no existía ninguna red disponible cuando en un buen día no solamente me podía conectar a mi red sino también a alguna de mis vecinos. En ese momento me dí cuenta (como si no lo hubiera sabido desde antes) que la ayuda tanto local como en línea que proporciona Vista es inservible ya que después de multiples "diagnósticos", el resultado era el mismo: "No te puedes conectar a la red porque no hay ninguna disponible"... Al final mi frustración era tal que salí dispuesto a comprar un nuevo access point que estuviera "Vista Certified", disposición que duró hasta que ví los precios de dichos chunches y decidí investigar más sobre el asunto.

Finalmente, me resigné a tener que utilizar en casa la red cableada y a conectarme a la red inalámbrica en la oficina, sin embargo, ¡Oh sorpresa! La red inalámbrica de la oficina también había desaparecido... Supe entonces que el problema no era ni de mi router ni de mi tarjeta inalámbrica sino de Vista.

Para no hacer el cuento demasiado largo. Siguiendo un post en la comunidad de windows para asegurarme que el dispositivo (la tarjeta inalámbrica) estuviera funcionando correctamente me di cuenta de que el problema era que al hacer el update del driver con el radio WiFi apagado, la configuración había quedado en la más chafa ya que el radio WiFi estaba configurado para acceder únicamente a redes de tipo 802.11a. La solución no pudo ser más simple, cambiar esta configuración para que reconozca redes de tipo 802.11a/b/g

Dice el dicho "Piensa mal y acertarás" pero viendo la cantidad de posts en diferentes blogs donde se habla de la incompatibilidad de Vista con ciertos wireless routers y las nulas respuestas que dicen como solucionar este problema (sinceramente no creo que yo haya sido la primera persona que resuelve este problema sin comprar un nuevo router) por ejemplo por parte del mismo Microsoft en sus propios foros de la comunidad de windows vista me pregunto si esta "malconfiguración" de la tarjeta inalámbrica no es más que un truco barato para que usuarios frustrados cambien su hardware de red inalámbrica.

Gran tache, pues para Windows Vista en este aspecto.

¡Hasta la próxima!

martes, 17 de junio de 2008

Viviendo con Windows Vista, Primera Parte

Pues sí. Después de mucha resistencia, el lado oscuro me ha seducido y he cambiado mi viejo (pero más o menos confiable) XP Professional Service Pack 2 por el nuevo Vista Business N.

Pero vamos por partes. Primero las razones del cambio. Todo comenzó con un spyware bastante testarudo que me metió en problemas hasta con mi proveedor de internet (gracias a Prodigy por cancelarme el servicio sin previo aviso ni noticia alguna). Aquí comenzó el calvario ya que tuve que reformatear mi disco duro para sacarme de encima el famoso spyware y cuando quise reinstalar el XP resulta que los drivers para el modelo de mi laptop ya no están (tan fácilmente) disponibles así pues luego de una mañana entera de batallar para echar a funcionar la red cableada, el CD, el sonido y las impresoras y, debo admitirlo, movido por la curiosidad y un poco de morbo (investigador, al fin y al cabo) decidí instalar el Vista Business.

En los siguientes posts voy a compartir mis reflexiones sobre asuntos más puntuales, solo debo decir que en el Vista (comparando con XP) encuentro algunas ventajas, aunque también algunas desventajas.

En cuanto a las ventajas, la instalación fue más sencilla que con XP, todos los drivers necesarios o bien ya estaban incluidos en el DVD de instalación o bien fueron inmediatamente bajados a través del windows update. Por ejemplo, para añadir las impresoras que están en la red de la oficina solamente pulsé tres botones y voilà. Nada de buscar drivers en internet, ni de imprimir las páginas de configuración de las impresoras para saber el puerto... Igualmente fácil fue instalar la impresora de casa, ésta conectada vía USB. Esto es, desde mi punto de vista un gran acierto. Espero que en el futuro se añadan más modelos de impresoras.

El primer dolor de cabeza fue el Windows Media Player. Cierto, mi versión de Vista es "Business" pero, ¿Quién determinó que "business" significa aburrido? Creo que hasta el peor workoholic de repente se toma un par de minutos para jugar un solitario (o carta blanca) y ver un video, aunque sea los que mandan los compañeros de oficina los viernes.... Así pues, esto es un gran tache ¡Quiero mi Media Center! y no hay forma de obtenerlo más que "haciendo el upgrade" (léase: mediante el pago de una lana) a Vista Ultimate....

Al final logré instalar el Media Pack que incluye en Media Player, y el Movie Maker además de una serie de codecs de audio y video, pero primero tuve que bajar un parche y luego el famoso windows update incluyó el media pack entre los updates disponibles.

Bien, esta entrada ya fue suficientemente larga. Nos vemos después para seguir comentando como me ha ido con mi migración al Vista.

domingo, 20 de enero de 2008

Prueba chunches embebidos

Vamos a ver como funciona este rollo de embeber videos