Mar 09

Introducción.

De manera análoga a como se realizó el tunel SSH utilizando Linux, también es posible implementarlo en Windows gracias al uso de herramientas de terceros como Putty.

Para la verificación de la conexión a la base de datos en lugar de la herramienta básica de línea de comando (que también debe funcionar normalmente) se utilizará MySQL Workbench que es la herramienta de administración gráfica que provee el motor de bases de datos.

Implementación de la solución.

Crear la especificación del tunel en Putty.

Este paso sólo es necesario realizarlo una única vez mientras se configura el perfil en Putty, en ocasiones posteriores sólo será necesario invocarlo.

Ejecute Putty.exe.

Session en Putty.exe

Session en Putty.exe

En la Session (lado izquierdo) especifique la siguiente información.

1. Nombre del servidor SSH.  desarrollo.com para este ejemplo.

2. Puerto del servicio SSH.  Es el puerto 22 por defecto.  Elija además el tipo de conexión (Connection type) SSH.

3. Especifique un nombre para almacenar la sesión (Saved Sessions).  MiTunel para este ejemplo.

4. Presione el botón guardar (Save) para almacenar la configuración recién especificada.

Connection > SSH en Putty.exe

Connection > SSH en Putty.exe

En las opciones de Connection > SSH elija la casilla de verificación Don’t start a shell para evitar que se cree una consola de comandos interactiva ya que sólo se desea crear el tunel.

Connection > SSH > Tunnels en Putty.exe

Connection > SSH > Tunnels en Putty.exe

Determine la información relacionada con los lados del tunel.

5. Especifique el puerto local desde el cual se iniciará el tunel.  3307 en este caso.

6. Especifique el destino y su puerto donde terminará el tunel.  localhost:3306 para este ejemplo.

Presione el botón agregar (Add) para almacenar los extremos del tunel.

Establecer un tunel previamente especificado.

Esto se puede hacer de dos maneras, una desde la interfaz gráfica de Putty seleccionando MiTunel en la lista de las sesiones guardadas (Saved Sessions), presionando el botón cargar (Load) y abriendo la sesión presionando el botón (Open).

Una segunda alternativa es desde la línea de comando ejecutando la siguiente instrucción.

C:\ruta\a\putty.exe -load MiTunel

En ambos casos el resultado es el mismo, aparecerá una ventana de login para realizar la autenticación con el servidor remoto (6).

Autenticación de usuario con SSH.

Autenticación de usuario con SSH.

Realizar la conexión a MySQL a través del tunel SSH.

Como se mencionó inicialmente para la verificación de la conexión se utilizará MySQL Workbench.

Connect to database

Connect to database

Debe tenerse muy en cuenta que gracias al tunel recién creado, la aplicación cliente de la base de datos interpretará que el motor de base de datos se encuentra ubicado localmente (9) y que su puerto es el 3307 (10) -ver 5 y 6-.

Feb 04

Introducción.

Windows XP después de 8 años de su introducción es la versión mas utilizada de este sistema operativo.  Con la liberación de sus service packs que solucionan problemas de seguridad y errores del sistema, es bastante estable e incluye todo lo que un usuario realmente necesita para utilizar su computador día a día.  Su sucesor Windows Vista no nos agradó mucho que digamos y Windows 7, la versión que salió a finales del año pasado promete bastante.

Como decía, aún es muy frecuente encontrarnos con equipos basados en Windows XP en empresas y en nuestras casas, incluyendo a los ahora en apogeo netbooks.

Las actualizaciones de Windows XP, mientras el producto se encuentre aún bajo soporte de Microsoft, se pueden descargar de manera individual para ser instaladas manualmente o pueden ser instaladas en línea mediante el sitio de WindowsUpdate.  A medida que estas actualizaciones crecen y se generalizan son agrupadas en grupos llamados paquetes de servicios (o service packs), estos son incluídos en los CDROMs del sistema operativo para los equipos nuevos.

El problema radica cuando el CDROM de instalación del sistema operativo que venía con el equipo que se va a instalar es muy antígüo y no incluye los service packs mas recientes.  En este caso es necesario descargarlos o instalarlos en línea como se mencionó anteriormente, sin embargo esta es una tarea tediosa debido a los tamaños de los archivos y a que si se utiliza WU aparentemente es necesario instalar el SP2 antes del SP3 a pesar de que estos son acumulativos y uno incluye al otro.  Lo dispendioso de las instalaciones en estas condiciones se hacen mas visibles si es necesario instalar varios computadores y frecuentemente.

Lo ideal es obtener un CDROM de distribución de Windows XP que ya incluya el service pack mas reciente (SP3), el cual en caso de no encontrarse es posible construírlo, es decir, basados en uno antígüo (SP1 en mi caso) es posible crear un CDROM con los instaladores de Windows XP y SP3, este procedimiento es conocido como slipstreaming.  Supuestamente esto sólo es posible hacerlo a partir del SP1 y no desde la versión inicial.

A continuación se exponen los pasos necesarios para la integración del SP3 en disco de instalación de Windows XP SP1 utilizando las herramientas disponibles en Linux Ubuntu 9.10.

Integración del SP3.

Requisitos.

  • Disco de instalación de Windows XP SP1 (o posterior).
  • Un equipo con Linux Ubuntu 9.10.
    • wine 1.1.31 o posterior.
    • cabextract 1.2 o posterior.

Instalación del software requerido.

$ sudo aptitude install cabextract

$ sudo aptitude install wine

Copia de los archivos de Windows.

Crear el directorio donde se almacenarán los archivos necesarios para el proceso de slipstreaming.

$ mkdir ~/slipstream/

Insertar el CDROM de Windows XP SP1.

Desmontar el CDROM recién instalado tan pronto como el sistema operativo lo monte automáticamente.

$ umount /media/X1AHOEM_ES

Montar el CDROM con opciones que preserven el estilo original de los nombres de archivo (mayúsculas).

$ mkdir /tmp/xp

$ sudo mount -t iso9660 -o map=off /dev/cdrom /tmp/xp

Copiar los archivos del CDROM al disco duro.

$ mkdir ~/slipstream/WindowsXP

$ cp -afr /tmp/xp/* ~/slipstream/WindowsXP/

$ chmod -R 777 ~/slipstream/WindowsXP

Desmontar el CDROM y remover el punto de montaje temporal.

$ sudo umount /tmp/xp

$ rmdir /tmp/xp

Obtener el Service Pack 3 de la siguiente ubicación.

http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=5b33b5a8-5e76-401f-be08-1e1555d4f3d4

Descomprimir los archivos del SP3.

$ mkdir ~/slipstream/SP3 && cd ~/slipstream/SP3

$ cabextract ~/slipstream/WindowsXP-KB936929-SP3-x86-ESN.exe

$ chmod -R 777 ~/slipstream/SP3

Integrar el contenido del SP3 al árbol de la distribución antígüa.

$ cd ~/slipstream/SP3/i386/update

$ wine update.exe /integrate:Z:/home/jimezam/slipstream/WindowsXP

Generación de la nueva imagen del CDROM.

Obtener la imagen del sector de inicio.

$ geteltorito -o ~/slipstream/bootsect.img /dev/cdrom

$ cp ~/slipstream/bootsect.img ~/slipstream/WindowsXP/

Generar la imagen ISO.

$ genisoimage -b ~/slipstream/bootsect.img -no-emul-boot -c BOOT.CAT -D –max-iso9660-filenames -relaxed-filenames -o ~/slipstream/WindowsXP_SP3.iso ~/slipstream/WindowsXP

Enlaces.

Nov 09

Configurar una cuenta de GoogleApps for Domains con Pidgin

Tagged with:
Categories: Sindicados
Estadísticas: 198 consultas Comments Off

Introducción.

Las cuentas de Google Apps for Domains proveen además del correo electrónico (GMail) otros servicios de Google como la mensajería instantánea (GTalk).  El problema surge al intentar configurar estas cuentas en un cliente de mensajería múltiple como Pidgin ya que estas no funcionan con las configuraciones por defecto de GTalk o de XMPP.

Procedimiento.

Abra el diálogo de administración de cuentas: Accounts > Manage Accounts o presione CTRL+A.

Presione el botón Add ... para crear una nueva cuenta.

Ingrese la siguiente información requerida.

  • Protocolo: XMPP.
  • Nombre de usuario.
  • Dominio: su dominio de Google Apps for Domains.
  • Alias local: el nombre que desee que se muestre para su usuario.

Seleccione la pestaña Advanced y provea la siguiente información.

  • Requiere SSL/TLS: seleccionado.
  • Puerto de conexión: 5222.
  • Conectar al servidor: talk.google.com.

Presione el botón Guardar.

Enlaces.

Oct 24

Víncular los Javadocs con Netbeans

Tagged with:
Categories: Sindicados
Estadísticas: 289 consultas Comments Off

Introducción.

El siguiente procedimiento permite relacionar la documentación oficinal de Java SE (Javadocs) con Netbeans permitiéndole al desarrollador tener una mejor información mas allá de la contextual que provee por defecto el IDE.

Configuración.

Seleccione el menú Tools > Java Platforms.

p1

Seleccione la pestaña Javadoc y presione el botón Add ZIP/Folder.

p2

Seleccione el archivo ZIP o el folder donde se encuentra la documentación de los Javadoc en el equipo.

p3

Presione el botón Close para terminar la configuración.

Uso.

En el editor de código fuente seleccione la clase que desea consultar en los Javadocs y presione ALT+F1 o haga clic derecho y elija la opción Show Javadoc del menú contextual.

p4

Netbeans abrirá la documentación correspondiente a la clase solicitada en el navegador web disponible.

p5

Enlaces.

Sep 16

Controlar presentaciones con el wiimote en Windows utilizando GlovePIE

Tagged with:
Categories: Sindicados
Estadísticas: 156 consultas Comments Off

Introducción.

De manera análoga a como hace un tiempo expliqué como manipular las presentaciones de OpenOffice Impress con el wiimote desde Linux utilizando CWiid, ahora el turno es hacerlo desde Windows, en este caso la prueba la realicé utilizando Windows 7 RC1 y su funcionamiento puede ser igualmente personalizado según los requerimientos de la presentación y por ende es totalmente compatible con Microsoft PowerPoint.

Hay varias formas de implementar este tipo de solución con el wiimote para este artículo preferí la mas "universal", es decir, una en la que se utilizara el software mas difundido posible.

Al igual que con la versión de Linux lo que se busca es emular la presión de teclas específicas según el botón del control presionado.  Para este artículo se utiliza entonces GlovePie que es una herramienta muy útil que nos permite implementar lo que requerimos e incluso más aún al incluír un lenguaje elaborado para la preparación de scripts.

Implementación.

1. Descargue GlovePie de la siguiente ubicación.

http://carl.kenner.googlepages.com/glovepie_download

Para este caso se utilizó la versión 0.29.

2. Descomprima el archivo descargado y ubíquelo en su ruta destino.

3. Con un editor de texto (Bloc de notas) edite el siguiente contenido según sus necesidades.  Verifique que el archivo guardado tenga efectivamente la extensión .PIE y no la .txt que agrega automáticamente el editor de texto.  De ser así, corrija este problema antes de continuar.

PageDown = Wiimote.A
PageUp = Wiimote.B

up = Wiimote.Up
down = Wiimote.Down
left = Wiimote.Left
right = Wiimote.Right

Key.NumpadMinus = Wiimote.Minus
Key.NumpadPlus = Wiimote.Plus
Key.Home = wiimote.Home
Key.f5 = wiimote.One
Key.Esc = wiimote.Two

4. Grábelo con un nombre conocido, por ejemplo: Presentaciones.PIE y ubíquelo en una carpeta de su preferencia, que puede ser la misma <ruta>\GlovePIEXXX\WiimoteScripts.

5. Emparente su wiimote con el sistema operativo.  Para hacer esto haga click sobre el ícono de Bluetooth en su barra de tareas y elija la opción Agregar un nuevo dispositivo (Add a device).

6. Presione simultáneamente los botones 1 y 2 del wiimote para ponerlo en modo de descubrimiento.

7. En el computador seleccione el wiimote tan pronto como sea reconocido: Nintendo RVL-CNT-01.

8. Seleccione la opción de realizar el emparentamiento sin utilizar contraseña alguna (Pair without using a code).

9. Inicie GlovePIE: <ruta>\GlovePIEXXX\GlovePie.exe.

10. En GlovePIE seleccione el menú File > Open y elija el script recién creado.

11. Para verificar el script (opcional) seleccione el menú Run! > Check for errors.

12. Para ejecutar el script seleccione el menú Run! > Run!.

13. Abra una presentación y utilice el wiimote para manipularla.

Uso.

El script propuesto puede ser totalmente manipulado para ajustarse a los gustos y necesidades de la presentación, sin embargo esta es la funcionalidad básica que yo busco para realizar mis presentaciones.

  • Teclas del cursor: mover la diapositiva / opciones del menú.
  • Botón A: siguiente slide.
  • Botón B: slide anterior.
  • Botones + y -: aumentar y disminuír el acercamiento (no aplica para modo presentación -F5).
  • Botón home: ir al primer slide.
  • Botón 1: entrar en modo presentación.
  • Botón 2: salir del modo presentación / cancelar.

Enlaces.

Jul 25

Experimentando con WiiUseJ en Linux Ubuntu 9.04

Tagged with:
Categories: Sindicados
Estadísticas: 413 consultas Comments Off

Introducción.

WiiUseJ es otra de las prometedoras librerías para manipular la información proveniente del Wiimote desde java que el día de hoy estoy probando después de una primera experiencia con WiiRemoteJ.

Una diferencia importante de esta librería frente a otras probadas anteriormente es que no necesita del complemento de terceras librerías de soporte como Avetana o BlueCove ya que se basa en WiiUse el cual incluye librerías nativas (para Windows y Linux) lo que le permite acceder directamente a la pila de bluetooth del sistema operativo.

Esto es regularmente un punto a favor sin embargo puede llegar a ser una desventaja ya que las librerías al ser nativas deben, especialmente en Linux, corresponder con las versiones correctas de otras librerías a las se enlazan como sucede efectivamente en este momento cuando el release 0.12 fue compilado para libbluetooth 2.0 y esta librería fue actualizada  a la versión 3.0 en Ubuntu 8.10 y posteriores, obligando a que se deban actualizar o compilar nuevamente.

Implementación.

Es necesario importar los siguientes paquetes para la conexión con el wiimote y el manejo de los eventos generados por él.

 import wiiusej.*;
 import wiiusej.wiiusejevents.*;
 import wiiusej.wiiusejevents.utils.*;
 import wiiusej.wiiusejevents.physicalevents.*;
 import wiiusej.wiiusejevents.wiiuseapievents.*;

La clase encargada de manejar los eventos deberá implementar la interfaz WiimoteListener lo que le obligará a implementar los siguientes métodos.

 public void onButtonsEvent(WiimoteButtonsEvent arg0) {}
 public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent e) {}
 public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent e) {}
 public void onIrEvent(IREvent arg0) {}
 public void onMotionSensingEvent(MotionSensingEvent arg0) {}
 public void onExpansionEvent(ExpansionEvent arg0) {}
 public void onStatusEvent(StatusEvent arg0) {}
 public void onDisconnectionEvent(DisconnectionEvent arg0) {}
 public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {}
 public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {}
 public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent e) {}
 public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent e) {}

Para la demostración se hizo uso del método onButtonsEvent el cual permite a través del parámetro que recibe de tipo WiimoteButtonsEvent verificar que botón del control fue presionado mediante los métodos isButtonXXXPressed donde XXX puede ser los botones A, B, One, Two, Minus, Plus, Home, Up, Down, Left y Right.

Ejecución.

Se obtuvo la última versión disponible de WiiUseJ, en este caso era la 0.12.

$ wget http://wiiusej.googlecode.com/files/wiiusej%200.12b.zip

$ wget http://wiiusej.googlecode.com/files/WiiuseJ%200.12a%20Javadoc.zip

La segunda descarga es opcional y corresponde con la documentación del API de la librería.

Coo se mencionó en la introducción, las librerías nativas para Linux incluídas en la versión binaria 0.12 se encuentran obsoletas ya que fueron compiladas con libbluetooth 2.0 mientras que las distribuciones actuales ya incluyen la versión 3.0.  Para hacer esto se descarga el siguiente archivo, se descomprime y se reemplaza el archivo libwiiuse.so con la nueva versión.

$ wget http://wiiusej.googlecode.com/files/libwiiuse.zip

Asegúrese de copiar las librerías nativas incluídas con WiiUseJ al directorio raíz de la nueva aplicación.

  • Para Windows: wiiuse.dll y WiiUseJ.dll.
  • Para Linux: libwiiuse.so y libWiiuseJ.so.

De igual manera es necesario contar con el archivo wiiusej.jar en una ubicación conocida.

Para compilar el programa de demostración invocamos el siguiente comando.

$ javac -classpath wiiusej.jar:. WiiUseJTest.java

Para ejecutar el progrmaa de instalación utilizamos el siguiente comando.

$ java  -classpath ../wiiusej.jar:. -Djava.library.path=. WiiUseJTest

Enlaces.

Jul 24

Experimentando con WiiRemoteJ en Linux Ubuntu 9.04

Tagged with:
Categories: Sindicados
Estadísticas: 326 consultas Comments Off

Introducción.

Hace un tiempo (parte 1 y parte 2) hice algunas pruebas acerca de como utilizar el control del Wii (wiimote) desde el PC desarrollando aplicaciones con C# utilizando la librería WiimoteLib de Brian Peek.  Desafortunadamente ni esta librería ni ninguna otra de C# que pudiera encontrar son de plataforma cruzada y por lo tanto no se pueden utilizar desde Linux así que me vi obligado a cambiarme nuevamente a mi lenguaje preferido: Java.

Después de revisar las librerías disponibles obtuve tres candidatos: WiiRemoteJ, WiiUseJ, MoteJ y WiiMote-Simple.

A pesar de que la página de WiiRemoteJ parece haber desaparecido es una de las mas mencionadas y parece ser una de las mas estables.  Requiere de una pila Bluetooth como Avetana o Bluecove para ejecutarse sobre ella.

Implementación.

Básicamente el uso de la librería se basa en la manipulación de un objeto WiiRemote y en la implementación de la interfaz WiiRemoteListener encargada de manejar los eventos provenientes del Wiimote y de sus extensiones.

Las clases se encuentran almacenadas en los siguientes paquetes.

import wiiremotej.*;
import wiiremotej.event.*;

Al implementar la mencionada interfaz es necesario especificar la implementación de los siguientes métodos.

Método Evento
buttonInputReceived Se presionó un botón del wiimote.
disconnected Se desconectó el wiimote.
extensionConnected Se conectó una extensión al wiimote.
extensionPartiallyInserted La extensión recién conectada quedó mal insertada.
extensionUnknown La extensión recién conectada es desconocida.
extensionInputReceived La extensión envía datos al wiimote.
extensionDisconnected La extensión ha sido desconectada del wiimote.
accelerationInputReceived El wiimote ha generado información de aceleración.
IRInputReceived El wiimote ha generado información de su cámara infrarroja.
statusReported Ha sucedido un reporte de estado.
combinedInputReceived Suceso de eventos combinados.

Evento de presión de botones.

 public void buttonInputReceived(WRButtonEvent evt)
 {
     // boolean     isAnyPressed(int buttonMask)    Returns true if any of the given buttons are pressed; otherwise false.
     // boolean     isOnlyPressed(int buttonMask)   Returns true if all of the given buttons are pressed and no others are; otherwise false.
     // boolean     isPressed(int buttonMask)       Returns true if all of the given buttons are pressed; otherwise false.
     // boolean     wasOnlyPressed(int buttonMask)  Returns true if all of the given buttons were pressed and no others are; otherwise false.
     // boolean     wasPressed(int buttonMask)      Returns true if all of the given buttons were pressed; otherwise false.
     // boolean     wasReleased(int buttonMask)     Returns true if one of the given buttons was released; otherwise false.

     if (evt.wasPressed(WRButtonEvent.TWO))
         this.log("2");

     if (evt.wasPressed(WRButtonEvent.ONE))
         this.log("1");

     if (evt.wasPressed(WRButtonEvent.B))
         this.log("B");

     if (evt.wasPressed(WRButtonEvent.A))
         this.log("A");

     if (evt.wasPressed(WRButtonEvent.MINUS))
         this.log("Minus");

     if (evt.wasPressed(WRButtonEvent.HOME))
         this.log("Home");

     if (evt.wasPressed(WRButtonEvent.LEFT))
         this.log("Left");

     if (evt.wasPressed(WRButtonEvent.RIGHT))
         this.log("Right");

     if (evt.wasPressed(WRButtonEvent.DOWN))
         this.log("Down");

     if (evt.wasPressed(WRButtonEvent.UP))
         this.log("Up");

     if (evt.wasPressed(WRButtonEvent.PLUS))
         this.log("Plus");
 }

Evento de desconexión del control.

 public void disconnected()
 {
     this.log("The remote controller was disconnected.");
     wiimote = null;
 }

Eventos de la extensión.

 public void extensionConnected(WiiRemoteExtension extension)
 {
     this.log("An extension has been connected! (" +
     extension.getCode() + "): " +
     this.getExtensionTypeName(extension));

     try
     {
         wiimote.setExtensionEnabled(true);
     }
     catch(Exception e)
     {
         this.log(e.getMessage());
     }
 }

 public void extensionPartiallyInserted()
 {
     this.log("An extension was partially inserted, push it harder next time");
 }

 public void extensionUnknown()
 {
     this.log("The extension is unknown, what are you putting into me ?");
 }

 public void extensionInputReceived(WRExtensionEvent evt)
 {
     // this.log("The extension is sending me some kind of data ... ");
 }

 public void extensionDisconnected(WiiRemoteExtension extension)
 {
     this.log("An extension has been disconnected! (" +
     extension.getCode() + "): " +
     this.getExtensionTypeName(extension));
 }

Evento de aceleración.

 public void accelerationInputReceived(WRAccelerationEvent evt)
 {
     // double     getPitch()         Returns the pitch of the remote, in radians from -PI to PI.
     // double     getRoll()          Returns the roll of the remote, in radians from 0 to 2PI.
     // double     getXAcceleration() Returns the X-Acceleration of the remote, in terms of G's.
     // double     getYAcceleration() Returns the Y-Acceleration of the remote, in terms of G's.
     // double     getZAcceleration() Returns the Z-Acceleration of the remote, in terms of G's.
     // boolean    isStill()          Returns true if the remote is not being moved; otherwise false.
 }

Evento de la cámara infrarroja.

 public void IRInputReceived(WRIREvent evt)
 {
     // IRLight[] getIRLights()       Returns the array of IR lights seen by the IR sensor.
     // int          getMode()        Returns the mode of the IR sensor.    
 }

Evento de reporte de estado.

 public void statusReported(WRStatusEvent evt)
 {
     // double      getBatteryLevel()       Returns the battery level of the remote.
     // boolean[]   getLEDStatus()          Returns the status of the LED lights.
     // boolean     getLEDStatus(int light) Returns the status of the specified light.
     // boolean     isContinuousEnabled()   Returns the status of continuous reporting.
     // boolean     isExtensionConnected()  Returns the status of the extension port.
     // boolean     isSpeakerEnabled()      Returns the status of the speaker.    
 }

Reporte de recepción combinada de eventos.

 public void combinedInputReceived(WRCombinedEvent evt)
 {
     // WRAccelerationEvent getAccelerationEvent()  Returns the acceleration event of this combined event.
     // WRButtonEvent       getButtonEvent()        Returns the button event of this combined event.
     // WRExtensionEvent    getExtensionEvent()     Returns the extension event of this combined event.
     // WRIREvent           getIREvent()            Returns the IR event of this combined event.
 }

Ejecución.

Para el desarrollo de esta aplicación de demostración se utilizó la librería de BlueCove, en este caso en la versión 2.10.  Es obligatorio obtener el paquete bluecove-*.jar mientras que bluecove-gpl-*.jar sólo es requerido bajo Linux.

$ wget http://bluecove.googlecode.com/files/bluecove-2.1.0.jar

$ wget http://bluecove.googlecode.com/files/bluecove-gpl-2.1.0.jar

Además se requiere de la librería WiiRemoteJ.jar, en este caso en la versión 1.6.

$ wget http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/WiiRemoteJ%20v1.6.zip.gz

$ cp WiiRemoteJ\ v1.6/WiiRemoteJ.jar .

Se compila el programa de demostración.

$ javac -classpath bluecove-2.1.0.jar:bluecove-gpl-2.1.0.jar:WiiRemoteJ.jar:. WiiRemoteJTest.java

Se ejecuta.

$ java  -classpath bluecove-2.1.0.jar:bluecove-gpl-2.1.0.jar:WiiRemoteJ.jar:. WiiRemoteJTest

Al iniciar la aplicación se debe presionar el botón que dice "Buscar Wiimote" y presionar los botones 1 y 2 del control para ponerlo en modo de descubrimiento.  Después de encontrado los eventos (botón, extensión y desconexión) generados en él deberán ser documentados en la ventana de la aplicación.

WiiRemoteJTest 0.1

WiiRemoteJTest 0.1

Enlaces.

http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/WiiRemoteJ%20v1.6.zip.gz
http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/WiiRemoteJ%20v1.6.zip.gz
Jul 10

Introducción.

Como actualización al procedimiento realizado hace un par de años de instalación de los diccionarios de corrección ortográfica en OpenOffice 2.x, ahora documentamos la instalación de dicionarios en la nueva versión, OpenOffice 3.x.

Este proceso es ahora mucho mas sencillo ya que no se realiza a través de un asistente (wizard) como se hacía anteriormente sino que ahora se hace a través de las extensiones de diccionario.

Procedimiento.

  1. Acceda al sitio web de las extensiones de diccionario.http://extensions.services.openoffice.org/dictionary
  2. Seleccione el idioma de su preferencia, por ejemplo Spanish/Español y haga clic sobre el enlace correspondiente.
  3. Haga clic sobre el enlace cuya etiqueta es Get It!.
  4. Cuando el navegador le pregunte si abrir o guardar el archivo (diccionario-es-*.oxt) elija abrirlo con la aplicación de OpenOffice.org (default).
  5. Cuando el Administrador de Extensiones de OpenOffice le pregunte si esta seguro que desea realizar la instalación del diccionario presione el botón de OK y posteriormente cierre el diálogo.
  6. A partir de este momento ya podrá utilizar el idioma en sus documentos modificándolo a través del siguiente menú.Herramientas > Opciones > Configuración del idioma > Idiomas > Idioma por defecto para los documentos.
    Tools > Options > Language Settings > Languages > Default languages for documents.

Enlaces.

Jun 10

Procedimiento de instalación básica de Drupal 6

Tagged with:
Categories: Sindicados
Estadísticas: 80 consultas Comments Off

Jun 07

Una primera mirada a Arduino

Tagged with:
Categories: Sindicados
Estadísticas: 48 consultas Comments Off

Introducción.

  • Es una plataforma de hardware y software de código abierto.
  • Por este motivo, es posible obtener los planos del circuito, adquirir los componentes y ensamblar las tarjetas sin pagar ningún tipo de licenciamiento o de regalías.  De igual manera, también es posible adquirir la tarjeta ya ensamblada.
  • Su costo es bajo con respecto a soluciones análogas.
  • Fue diseñada pensando en los artistas, diseñadores, entusiastas y en cualquiera interesado en crear objetos y ambientes interactivos.
  • Su principal virtud es la de permitir crear prototipos de manera rápida y flexible, evitando la necesidad de desarrollar todo desde cero.
  • Permite percibir el ambiente mediante gran cantidad de sensores e interactuar con él mediante la manipulación de distintos actuadores.
  • El microcontrolador se programa en el lenguaje de Arduino el cual se basa en Wiring y que a su vez es similar en su sintáxis al lenguaje C.
  • Los proyectos desarrollados con esta plataforma pueden actuar de manera independiente o hacerlo directamente con el software en un computador.
  • Su ambiente de desarrollo es multiplataforma, se ejecuta en Windows, Macintosh OS X y Linux.
  • Su conexión se realiza vía USB en lugar de Serial.
  • Su comunidad de usuarios es muy activa y la liberación de mejoras es frecuente.

La plataforma.

  • Se encuentra formada por dos partes fundamentales.
    • El hardware: la tarjeta Arduino.
    • El software: el Arduino IDE (Integrated Development Enviroment).
  • Al ser una solución de alto nivel que combina el hardware con el software permite la modificación ágil y flexible de los prototipos elaborados.

El hardware.

  • La tarjeta Arduino se basa en el microcontrolador ATmega168.
  • Su conexión con el computador es a través del puerto USB.
  • Existen varias versiones de la tarjeta.
  • Cuenta con pines análogos y digitales de entrada y de salida.
  • Su alimentación se puede proveer a tarvés del puerto USB, de cargadores USB y de adaptadores AC de 9v.

El software.

  • Permite el desarrollo de los sketch (programas).
    • Escritura.
    • Verificación (verify).
    • Conversión a lenguaje C.
    • Compilación.
    • Carga en la tarjeta (upload).

Enlaces.