Problemas con NMap, pero solucionados

04/12/2011

Parece ser que NMap no da los resultados que esperaba. Se suponía que debía darme las direcciones IP de cada uno de los equipos que estén en una red local, pero hay algunas IPs que no obtengo cuando sí debería. Creo que esto es debido a que NMap se basa únicamente en hacer ping a una máquina y, si ésta responde, entonces se da por presente a dicho equipo (aunque sólo es una suposición mía). El problema está en que no todos los equipos de una red tienen por qué responder a un ping.

El caso es que he intentado detectar con NMap un equipo concreto con Windows, el cual no respondía al ping y, sin embargo, sus direcciones IP y MAC aparecieron en mi caché ARP (lo cual, en condiciones normales, prueba su existencia). Es decir, por ARP se obtiene bien la dirección MAC de dicho equipo al intentar hacer el ping, pero no puedo basar la existencia de dicho equipo en una respuesta positiva al ping (que, en este caso, no ocurre); simplemente, debo intentar detectar los equipos por NMap (indenpendientemente de que respondan o no) y, a continuación, consultar la caché ARP.

Espero tener pronto listo el Radar LAN, una vez que termine su implementación y haya hecho unas cuantas pruebas.


Problemas nuevos, pero solucionados

03/25/2011

Ayer, día 24 de marzo, hicimos en la escuela unos hackatones como unas de las actividades de la asignatura Software Libre, Conocimiento Libre y Sociedad. Yo me encargué de dirigir un hackatón que tenía como temática el proyecto Predesys y sus servicios y la verdad es que me ha servido para, entre otras cosas, descubrir un par de fallos que tenía el Servidor. Esto ha hecho que libere de nuevo la versión 0.1.0 del Servidor (“para variar”), pero esta vez corregida.


Posibles alternativas a bluetooth

03/23/2011

Últimamente, estoy notando cierta irregularidad en los adaptadores bluetooth que estoy probando: la detección de dispositivos a veces no obtiene ninguna dirección MAC cuando hay dispositivos bluetooth cercanos en modo “visible”. Esto me hace pensar en alternativas a la hora de detectar a personas (que es el objetivo de Predesys), como puede ser el detectar los equipos conectados a la misma red local que alguna de las Estaciones o el detectar etiquetas RFID que estén cerca de alguna Estación. A corto plazo, iré pensando en cómo utilizar estas dos técnicas porque la inestabilidad del bluetooth supone un problema bastante grave ya que se da el caso de vez en cuando en el que el sistema no detecta dispositivos cuando debería hacerlo.


Problema solucionado

03/22/2011

Resulta que el último problema que me surgió no era por culpa del proyecto, sino del servidor donde lo estaba probando, que seguramente tenga algún Firewall u otro dispositivo similar que bloquee el Servidor. He probado el proyecto en el servidor de otra asociación de estudiantes de mi escuela (el Club .NET de Sevilla) y funciona perfectamente. La verdad es que ver que el Servidor era accesible remotamente y, por tanto, ya funcionaba todo, me he alegrado bastante.

Voy a mejorar el servicio que hice hace poco, People Presence, y poco después liberaré la primera versión del proyecto.


Problemas solucionados, estado del proyecto y nuevo problema

03/16/2011

He solucionado los problemas que me encontré intentando implantar Predesys. A nivel local (dentro de una misma máquina), el proyecto funciona perfectamente y todos sus componentes funcionan bien, aunque ahora estoy teniendo el problema de que el servicio web del Servidor no es utilizable desde el exterior (desde otra máquina), por lo que estoy investigando qué configuraciones del Servidor y del sistema operativo debo establecer para solucionar esto.

Mientras investigo sobre esto, estoy desarrollando un pequeño sistema de registro de todas las excepciones que ocurran, que hasta ahora no existía, para facilitar la solución de errores.


Pruebas de implantación y problemas de nuevo

03/16/2011

Probando Predesys en el servidor principal de la asociación universitaria de usuarios de software libre a la que pertenezco, SUGUS, me he percatado de varios problemas en la versión que he liberado recientemente. Debido a esto, sintiéndolo bastante, he cancelado su liberación de nuevo. Ha sido un error precipitarme en la liberación de esta primera versión.

Me encuentro haciendo pruebas en el servidor de SUGUS porque en la asociación tenemos planes de implantar Predesys como sistema para saber quiénes de los socios se encuentran en un momento determinado en nuestro aula de la Escuela Técnica Superior de Ingeniería Informática de la Universidad de Sevilla.


Cambio en el sistema de datos

02/20/2011

He tomado la decisión de volver a MySQL como sistema para la base de datos del Servidor. Esto es debido a que no había tenido en cuenta la concurrencia en SQLite, que hasta ahora era el sistema para manejar los datos. La concurrencia me estaba dando problemas a la hora de escribir en la base de datos porque, aunque sólo escribía un proceso al mismo tiempo en ella, dicho tiempo de escritura bloqueaba cualquier intento de acceso de lectura (y además, por bastante tiempo) de otro proceso, lo que cual era inaceptable ya que la base de datos tiene que estar disponible para su lectura a través del servicio web del Servidor. El cambio de sistema está ya implementado.

El Servidor no sólo podrá usar MySQL, en el futuro podrá usar más tipos de servidores de bases de datos, como PostgreSQL u Oracle. Esto es debido a que estoy usando una biblioteca “genérica” para acceder a sistemas de gestión de bases de datos (SQLAlchemy). El Servidor, a priori, no dependerá de ningún sistema en concreto al instalarse pero después, el usuario configurará el Servidor por medio de una órden en una terminal donde especificará, entre otras cosas, los detalles de la base de datos donde grabará sus datos (tipo de servidor, dirección del servidor, nombre de la base de datos, nombre de usuario y contraseña de usuario). Después de la configuración, por medio de otra órden en la terminal, el usuario grabará las tablas y los datos iniciales en la base de datos especificada anteriormente. Así, el Servidor ya estaría listo para su uso.

Esto permitirá usar bastantes tipos de servidores de bases de datos, aunque de momento, sólo estará disponible MySQL, ya que, aunque la biblioteca SQLAlchemy permite acceder a cualquiera, el código SQL empleado para crear tablas y restricciones difiere un poco según que servidor se esté usando y sólo he creado el código SQL inicial para MySQL. Supongo que en la segunda versión del Servidor añadiré más opciones de servidores.

Podría parecer que he perdido mucho tiempo usando SQLite, pero no lo siento así. El tiempo que he empleado con SQLite me ha hecho descubrirlo y aprenderlo suficientemente bien. Ahora sé que puedo usarlo para otros proyectos y conozco el ámbito idóneo para emplearlo: SQLite es ideal para 1 sólo cliente/usuario de una base de datos, como un programa que necesite guardar datos pero sólo él tenga que acceder a ellos.

Al final, me está llevando más tiempo de lo que pensaba arreglar los problemas del Servidor, que ha necesitado cambios drásticos como éste, pero merece la pena esperar un poco más con tal de que el Servidor sea más robusto y esté más probado.

Para terminar, quiero agradecer a mis compañeros participantes del concurso su ayuda con mis dudas sobre la concurrencia de SQLite por medio de la lista de distribución de correo del concurso. Saben muchísimo y, después de haber barajado sus opciones (sobre si mantener SQLite como sistema o cambiar a MySQL), he tomado la decisión de cambiar a MySQL y esta decisión la he tomado más rápidamente gracias a su ayuda (por mí mismo, habría tardado mucho tiempo en darme cuenta de que no me valía SQLite).