GPXReader

25 10 2009

Hola de nuevo :P

En los últimos fines de semana, he estado trabajando a ratos en un programilla para leer archivos *.gpx, que contienen rutas grabadas con un dispositivo GPS, de momento el programa es bastante cutre y lo quiero ampliar y añadirle mucha más funcionalidad, pero eso será poco a poco, de momento, se puede descargar de aquí. Os dejo también un pantallazo, para que veais la pinta que tiene el invento:

GPXReader

El archivo zip contiene un .jar que es el programa propiamente dicho y un ficherito GPX de ejemplo, hay que ejecutarlo de la siguiente forma:

java -jar GPXReader.jar nombre_del_archivo

Espero que os guste, cualquier reporte de bug, sugerencia, etc, será bienvenida :)

Cuando esté algo mejor, también subiré el código fuente.



PAM: Módulos de Autentificación Conectables

27 02 2009

El sistema de “apoyo” a la autenticación y gestión de permisos de Linux, he estado haciendo algunas pruebas y se pueden hacer cosas verdaderamente interesantes, como por ejemplo hacer que un usuario solo pueda hacer login cuando está trabajando en local o que determinado usuario o grupo de usuario no puedan hacer “su” para cambiar de usuario, esto segundo ha sido lo que ha motivado la investigación, ya que pretendo tener un usuario tonto, que solo pueda conectarse a cierta máquina para a través de ahí conectarse a otras, pero que no pueda convertirse en root, voy a explicar de forma rápida como hacer estos dos ejemplos, que, aunque al principio asustan un poco cuando miras los archivos de configuración, cuando entiendes para que es cada cosa, son muy sencillos :)

Como decía, con el primero vamos a conseguir que el usuario “pruebas” solo pueda hacer login en local, esto también se puede hacer en la configuración del SSH, la cosa es ver como hacerlo usando PAM

  1. Editamos el fichero /etc/security/access.conf, aquí es dónde pondremos la regla para cortar el login del usuario, el formato de las reglas es el siguiente:
    • +/- –> Pondremos el símbolo más (+) si queremos permitir el acceso y menos (-) si queremos denegarlo
    • Usuarios –> Aquí podemos poner tanto usuario como grupos, además de la palabra clave ALL, que se permita o se deniegue el acceso a todos los usuarios
    • Origen –> Origen del intento de login, podemos poner una lista de tty’s (terminal local o serie), de nombres de host, de direcciones IP o de dominios (tienen que empezar por .), además de las palabras clave ALL (Para todos los intentos de login), LOCAL (Para logins locales) o ALL EXCEPT LOCAL (Para todas las conexiones excepto las locales)

    Una vez visto esto,  tenemos que escribir lo siguiente:

    -:prueba:ALL EXCEPT LOCAL

  2. Guardamos esto y pasamos a editar /etc/pam.d/ssh, que contiene la configuración de PAM para el SSH
  3. Descomentamos la linea:

    account required pam_access.so

    Esto hace que pam sepa que tiene que buscar reglas de filtrado en el fichero access.conf

  4. Guardamos y salimos del fichero, la próxima vez que el usuario pruebas intente hacer login desde cualquier máquina que no sea la local, se le denegará el acceso.

Pasamos ahora al segundo ejemplo, más sencillo si cabe y para mí, más interesante: Vamos a hacer que un usuario no pueda hacer “su” para cambiar de usuario. Esto se hace en 3 simples pasos:

  1. Editamos el fichero /etc/pam.d/su
  2. Buscamos la línea:
  3. auth required pam_wheel.so deny group=nosu

  4. Descomentamos la línea y cambiamos “nosu” por el grupo al que queremos el cambio de usuario, guardamos y a correr :)
  5. Otra opción sería añadir al usuario al grupo nosu (si no existe, crearlo) y el efecto sería el mismo

Espero que haya resultado interesante.



Maldito Spyware

15 02 2009

Después de un tiempo sin escribir, vuelvo con una pregunta transcendental:

¿Quien no ha tenido nunca un “bicho” en su ordenador? Seguro que muy pocos pueden contestar “YO” a esta pregunta, esto quiere decir que los problemas de virus en informática son bastante habituales y sobre todo si utilizamos windows, pues bien, llevo todo el día peleando con el que diría que es el virus/spyware/loquesea más puto que me he encontrado en mucho tiempo, en realidad el bicho no hace nada realmente dañino, pero el muy … (ponga aquí su insulto favorito) se dedica a redireccionar los resultados de las busquedas de google, y al parecer, también de yahoo, aunque con este último no he probado, así que no puedo confirmarlo, pero bueno, en cualquier caso, es una putada bastante gorda que además, no se soluciona facilmente si no conoces la solución, una vez que la conoces, es pan comido :P

El caso es que después de probar con el spybot, el nod32, el hijackthis, el ccleaner y alguno que seguro que se me olvida, no he obtenido ningún resultado positivo. Al final,   la solución ha venido en forma de un programita llamado FixWareOut, que se puede descargar de aquí. Solo hay que instalarlo y ejecutarlo, después de un reinicio, tendremos nuestro PC limpio de nuevo.

Por cierto, si, el ordenador víctima era mio xD

Aprovecho también este post para decir que Linux Rocks!!!



Instalando el DNIe en Ubuntu Hardy

28 11 2008

Aprovechando que tengo por aquí un lector de tarjetas, he estado mirando como instalar el lector y hacer funcionar el DNI electrónico en él, y la verdad es que ha sido de lo más sencillo, lo que me ha sorprendido gratamente :)

El lector en cuestión es de la marca C3PO, en concreto, el modelo LTC-31, así que si alguien tiene dudas sobre cual comprar, este funciona bien.

Los pasos de la instalación son los siguientes:

  1. Instalamos los paquetes necesarios
  2. apt-get install pcsc-tools pcscd libc6 libltdl3 libssl0.9.8 zlib1g libpcsclite1 libopenct1

  3. Vamos a probar que funcione el lector, esto lo hacemos escribiendo en una terminal:
    pcsc_scan
    Este comando nos debería mostrar lo siguiente (o algo parecido) al conectar el lector de tarjetas:
    found one
    Scanning present readers
    0: C3PO LTC31 (00385557) 00 00
    Fri Nov 28 17:23:49 2008
    Reader 0: C3PO LTC31 (00385557) 00 00
    Card state: Card removed,

    Si ahora metemos el DNI nos mostrará un bonito mensaje (junto con otros) que dice lo siguiente:
    DNI electronico (Spanish electronic ID card)
    http://www.dnielectronico.es

    Si nos sale esto, es que está todo bien, así que podemos seguir.

  4. El siguiente paso es irnos a la página del DNI electrónico y descargarnos el paquete para nuestra distribución, para los que usen Hardy, como yo, hay que descargarse el de Gutsy, que funciona igual
  5. Descargar aquí

  6. A continuación, descomprimimos este paquete e instalamos el deb que contiene, esto la hacemos ejecutando los siguientes comandos desde una terminal (o gráficamente, como más nos guste)
  7. tar xvf Ubunt_Gutsy.tar
    dpkg -i Ubunt_Gutsy/opensc-dnie_1.4.0-5_i386.deb

    Esto último nos advierte de que tenemos que reiniciar la sesión para que funcione, así que cerramos el navegador(muy importante) y cerramos la sesión. Cuando volvamos a abrir, se nos abrirá una ventana del firefox, si no, la abrimos nosotros, y nos deberá aparecer una página que nos informa de que se va a instalar el DNI, así que hacemos click en aceptar, que se activará después de unos segundos.

    Después de esto, solo nos queda instalar el certificado, que se hace a través de una ventana que nos aparece automáticamente, así que no hay nada que explicar, simplemente hay que decir que confiamos en las páginas firmadas por el emisor del certificado (la FNMT), una vez hecho esto, ya estamos listos para usarlo por ahí :)



Artifex Terrain Loader (III)

9 11 2008

Por fin he conseguido que esto funcione bien, al final era un problema que no tenia nada que ver con el cargador del terreno, aunque todo parecia indicar que no era así, pero bueno, C++ es así xD

Esta tarde he estado investigando como aplicar físicas al terreno para que los personajes y objetos vaya por el, y la verdad es que la tarde ha sido bastante fructífera, he sacado un par de videos, con los resultados.

El primero de ellos muestra a una caja, que aunque no se ve muy bien, cae del cielo, y choca contra el terreno, deslizandose por el, lástima que no se vea del todo bien (maldito encoder de video xD)

en el segundo video vemos un robot que “camina” por las montañas:




Artifex Terrain Loader (II)

9 11 2008

Ya tenemos video del terreno metido en nuestra aplicación :D

Siguiente paso Terrain+Newton



Artifex Terrain Loader

6 11 2008

Estos últimos días, he estado investigando el funcionamiento del cargador de terreno de Artifex en juegos que utilicen Ogre como motor y finalmente ha funcionado, aunque no todo lo bien que esperaba, ya que parece que hay algún problema que aun no he conseguido encontrar con nuestra aplicación, que hace que ciertos componentes del terreno que estamos intentando cargar no funcionen bien, hasta el punto de provocar un fallo en la aplicación, al final, después de una intensa y fructifera busqueda, he encontrado esos componentes y los he quitado temporalmente, con lo que al final ha “funcionado”.

Las 2 siguientes imágenes están tomadas de la demo de Artifex:


From Ogre
From Ogre

y ¡sorpresa! esta está tomada de nuestra aplicación :D


From Ogre



OgreNewt

16 10 2008

En los últimos días, he estado trasteando con sistemas de gestión de físicas “integrables” con Ogre, para la programación que es un motor gráfico para la programación de videojuegos, después de probar el ODE y comprobar que aquello que los tutoriales daban como muy sencillo, en la práctica no lo era y perder demasiado tiempo con él, decidimos apartarlo del camino y probar con otros, el siguiente fue el Bullet, que prometia bastante, ya que es el que está integrado en Blender para la śimulación de fluidos, softbodies y demás, el problema es que el wrapper para Ogre, no tiene NADA de documentación, aun así, decidí aventurarme y descubrí que a pesar de no tener documentación, echandole un ojo a los ejemplos es bastante fácil hacer cositas, pero claro, era demasiado bonito para quedarnos con este, y topamos con el movimiento de personajes, después de darle unas cuantas vueltas, no conseguí hacer nada decente, así que entre esto, y la falta de documentación, volvió a la lista de descartados. Por último, he estado probando el Newton, que a pesar de no ser libre, está bastante bien, además, tiene una comunidad bastante grande y activa de usuarios, por lo que solucionar los posibles problemas que puedan surgir es relativamente sencillo, después de unas cuantas pruebas, y algo de investigación, creo que nos vamos a quedar con este. Aquí dejo un pequeño ejemplo de las colisiones:



Google en Murcia

4 10 2008

Ayer, me lleve una grata sorpresa de camino al trabajo, y es que después de aparcar y ya de camino al edificio, me encontre con uno de los coches que Google está utilizando para hacer las fotos para el streetview, así que a lo mejor salgo :D

Yo personalmente, no pude hacerle ninguna foto al coche porque no me dio tiempo, así que me llevé una alegría cuando entre a la oficina y vi que es Sr. Byron le había sacado una, así que se la robo :P

EDITO: Como el Picasa es bastante tiquismiquis, pongo el enlace a la foto:

http://franbyron.wordpress.com/2008/10/03/encuentro-con-google/



Acciones programadas con crontab

11 09 2008

Bueno, bueno, esta es una de esas típicas tonterías que he hecho y haré miles de veces, pero que cada vez que la tengo que hacer se me olvida como hacerlo xD

Para programar tareas en linux, lo más habitual es usar el crontab, que ejecuta las tareas configuradas en un fichero, este fichero se puede editar facilmente mediante el comando:

crontab -e

El formato de este fichero es lo “complicado”, ya que si no lo utilizas con asiduidad, es fácil olvidarse de como hay que poner los distintos valores, y de ahí este post. Los campos a configurar son los siguientes:

  1. Minuto: Este campo admite como valor un número entre 0 y 60.
  2. Hora: Este campo admite valores entre 0 y 23.
  3. Día del mes: Un número entre 1 y 31
  4. Mes: Un número entre 1 y 12
  5. Día de la semana: Un número entre 0 y 7, siendo 0=7=Domingo o las 3 primeras letras del día en inglés (sun,mon,tue,wed,thu,fri,sat)

En los diferentes campos se permiten una serie de cosas para hacer más sencilla la configuración de tareas que hay que repetir en varias ocasiones, son las siguientes (Válido para todos los campos):

  • Intervalos: Se permite poner un intervalo de valores, indicando el primer valor y el último, separados por un guión (”-”)
      Ej: 0-5
  • Una lista de números separados por comas significa que la acción se ejecutará en los momentos especificados por la lista:
      Ej: 0,5,10
      Ej: sun,tue,fri
  • Un asterisco (*) indica que la acción se ejecutará para todos los valores posibles del campo en el que se coloque, por ejemplo, si colocamos un asterisco en el campo “día de la semana”, la acción se ejecutará todos los días de la semana.
  • */número indica que la acción se realizará en intervalos de “número”, por ejemplo, si ponemos */5 la acción se ejecutará cada 5 minutos.

Para acabar, guardamos el fichero, salimos, y ya tenemos nuestra acción programada.

Ejemplo para reiniciar el apache cada 30 minutos:
0,30 * * * * /etc/init.d/apache2 restart