Maze2, construyendo paredes con MobileProcessing

Desarrollo de software, Móvil April 3rd, 2008

Como una continuación del primer ejemplo en MobileProcessing ahora le voy a agregar paredes al laberinto y una opción de teletransportar para cuando haya necesidad de sacar al caballero azul de un cuarto cerrado.

Hice algunos cambios que modifican el enfoque que tenía inicialmente el diseño. Antes cada Sprite conocía su posición (x, y) para ser dibujado en la pantalla del móvil, ahora el mundo (World) es en realidad una matriz (maze) de Sprites así que a ellos les interesa conocer su (fila, columna).

Agregué cuatro constantes (up, down, left, right) al Player para referenciar a cualquiera de los movimientos que este puede realizar.

Creé además dos nuevos Sprites: el espacio vacío (EmptySpace) que rellena el éter vacío y la pared (Wall) que simula un muro intraspasable.

En este órden de ideas mejoré el método isValidPlayerMove() para que entendiera correctamente las (filas, columnas) y se hiciera cargo de hacer respetar los muros. El método buildMaze() crea al mundo al azar haciendo uso de la función random(). El método movePlayer() y la función keyPressed() también fueron modificados para actualizarse con estos cambios y para incluír el uso de las constantes de dirección de la clase Player.

El movimiento del Player se convirtió entonces en elegir una nueva posición válida, en poner al Player en la nueva posición y poner un EmptySpace en la anterior, para esto se deben actualizar tanto los diferentes Sprites como la matríz del laberitno (maze) para facilitar esto se agregó el método locateSprite().
El método locatePlayer() ubica al Player en una ubicación al azar verificando que se encuentre vacía y el método teleport() realiza hasta diez intentos de este proceso. Teleport es llamado también cuando se presiona la tecla FIRE del móvil.

La función draw() dibuja a todos los Sprites de manera indistinta ya que cada uno de ellos sabe de que color es y en que posición se encuentra. Aún no estoy seguro que es mas conveniente en MP si incluír todo el código de dibujo en esta función o de incluirlo en las clases (cada Sprite se dibuja el mismo) y llamarlo desde el draw().

Enlace: Maze2.pde.

Tags:

Acceso a MSSQL Server desde PHP en un servidor Linux

Bases de datos, Desarrollo de software, Linux/Unix/FreeBSD, Web, Windows April 3rd, 2008

El día de hoy realicé la actualización del servidor de desarrollo (OpenSuse 10.2) para soportar las conexiones a un servidor de bases de datos MS SQL Server 2005. El servidor de bases de datos se encuentra en la red privada (192.168.1.5). El servidor de desarrollo tiene dos interfaces, una de ellas es privada también (192.168.1.3). La versión de PHP que se encuentra actualmente instalada es la 5.2.0.

Actualicé algunos paquetes que eran necesarios para instalar el software FreeTDS.

# rpm -i readline-devel-5.1-55.i586.rpm
# rpm -i  libxml2-devel-2.6.26-26.i586.rpm
# rpm -i  libapr1-devel-1.2.7-23.i586.rpm
# rpm -i  libapr-util1-devel-1.2.7-26.i586.rpm
# rpm -i  apache2-devel-2.2.3-20.i586.rpm

Otros paquetes que puedan llegar a necesitarse se pueden descargar de la siguiente dirección.

http://download.opensuse.org/distribution/10.2/repo/oss/suse/i586/.

Descargué y descomprimí la última versión de FreeTDS.

# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz
# cd freetds-0.64

Se compila e instala en el directorio /usr/local/freetds-0.64 con soporte para la versión 8.0 del protocolo. Para consultar información adicional acerca del protocolo consulte la dirección siguiente: http://www.freetds.org/userguide/choosingtdsprotocol.htm.

# ./configure --prefix=/usr/local/freetds-0.64 --with-tdsver=8.0
# make
# make install

Creé un enlace dinámico desde /usr/local/freetds al directorio de instalación para facilitar el manejo de diferentes versiones en un futuro cercano cuando vaya a actualizar la librería.

# ln -s /usr/local/freetds-0.64 /usr/local/freetds

Edité el perfil general de los usuarios para añadir al final de este información de las variables de ambiente de FreeTDS .

# vi /etc/profile
###################################################
SYBASE=/usr/local/freetds
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib
export SYBASE LD_LIBRARY_PATH
###################################################

Descargué y descomprimí el código fuente de la versión de PHP instalada. Para descargar versiones históricas de PHP visite el siguiente enlace: http://www.php.net/releases/.

# wget http://museum.php.net/php5/php-5.2.0.tar.gz
# tar zxvf php-5.2.0.tar.gz
# cd php-5.2.0

Se crearon los scripts de compilación para realizar una instalación temporal en /root/tmp/php-5.2.0/installation y de allí obtener el módulo dinámico de soporte para MSSQL.

# SYBASE=/usr/local/freetds
# LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib
 
# export SYBASE LD_LIBRARY_PATH# ./configure --with-apxs2=/usr/sbin/apxs2 \
--with-mssql=shared,$SYBASE \
--with-sybase=$SYBASE \
--with-libxml-dir=/usr/lib/ \
--prefix=/root/tmp/php-5.2.0/installatio
# make
 
# make install

Se copió el módulo recién generado a la ubicación donde PHP almacena sus propios módulos.

# cp ./installation/modules/mssql.so /usr/lib/php5/extensions/
# chmod -x  /usr/lib/php5/extensions/mssql.so

Se creó el archivo mssql.ini para activar el módulo.

# vi /etc/php5/conf.d/mssql.ini
extension=mssql.so

Se reinicio el servicio de Apache2 para refrescar los cambios recién hechos.

# rcapache2 restart

Al consultar la información resultante de phpinfo ya aparece la sección de MSSQL.

Para realizar una prueba fiable de conexión entre PHP y MSSQL puede utilizar el script adjunto a continuación editando adecuadamente la información de conexión al inicio de este.

Enlace: prueba_mssql.php

Tags: , , ,