Weblog de Fco. José Mulero

Just another blog ;)

Trabajar tanto tiene delito… Octubre 2, 2009

Archivado en: Miscelanea — fjmulero @ 5:30 pm

Tras una larga semana de trabajo, hoy creí merecerme un homenaje.

Al terminar hoy de trabajar, a eso de las 17:00 horas, decidí irme a almorzar a un McDonalds y darme un señor homenaje. Pues nada, ahí iba yo, con mis barbas de 5 días, las ojeras asociadas a una ardua semana de trabajo y mi mochila, dispuesto a devorar una hamburguesa con sus patatas deluxe tamaño gigante. Media hora más tarde…  objetivo cumplido!! Pero al salir del establecimiento, aún con una servilleta en la mano, me esperaba una ingrata sorpresa… Un pareja de la policía nacional me persiguió y retuvo en pleno centro de Sevilla por presunto “fumeta” (debe ser gravísimo fumarse un canuto en la vía pública), y no me extraña, ¡vaya pintas que llevaba!, malos pelos, barbas de varios días, ojeras, camiseta negra, papeles raros en las manos… Tras un gran mal rato  (durante el cuál todo el mundo me miraba como un delincuente) todo se solucionó cuando apareció casualmente otro personaje fumándose un canuto que coincidía con mi descripción… A partir de ese momento todo fueron disculpas por parte de la policía, pero el mal rato no hay quien me lo quite.

Moraleja: Trabajar tanto, tiene delito (y ser un poco “dejao” también ;) ).

 

¿Quién puede acceder a un máster público? Septiembre 27, 2009

Archivado en: Formación — fjmulero @ 10:08 pm

Desde hace algún tiempo viene rondando mi cabeza la idea de estudiar algún curso de postgrado con el objetivo de suplir algunas carencias, sobre todo en aspectos no técnicos, que había notado tras los primeros contactos con el mundo laboral. Una vez analicé las materias que debía reforzar y en qué quería hacer la inversión (no hay que olvidar que estos cursos suelen suponer un desembolso económico bastante grande y por lo tanto hay que estudiarlos como una inversión que deberíamos amortizar en el futuro), comencé a estudiar la oferta de cursos de postgrado y másters que ofrecían las universidades públicas de mi entorno. Y aquí llegó mi sorpresa. Todos los cursos ofertados se impartían en un horario lectivo normal, y con normal me refiero a un horario similar al que se imparten las clases de cualquier universidad. Lo cual es bastante llamativo, dado que la mayoría de los demandantes de este tipo de formación suelen ser personas que se encuentran trabajando (según estadísticas de algunas entidades privadas que ofertan cursos de postgrado, en torno al 85% del alumnado). Teniendo en cuenta estos datos, se deduce que  la mayoría de los afortunados que pueden acceder a estos cursos en universidades públicas se pueden clasificar en alguno de los siguientes grupos:

  • Estudiantes recién titulados con posibilidades económicas o becados.
  • Personas con mucha flexibilidad laboral (menos del 9% de los trabajadores españoles).

Es decir, el resto de personas que no encajemos en alguno de esos grupos  tendríamos que recurrir a una entidad privada, con el sobrecoste que eso conlleva. ¿No se dan cuenta las universidades públicas la cuota de mercado que están perdiendo por el mero hecho de no adecuar sus horarios a las necesidades del alumnado?

 

Cómo obtener datos sobre el rendimiento de nuestras aplicaciones con maven Junio 27, 2009

Archivado en: Testing — fjmulero @ 11:07 pm

¿Tenéis que obtener datos de rendimiento de vuestro proyecto y no queréis llenar vuestros tests de “System.currentTimeMillis()”? Pues aquí tenéis la solución!

Existe la posibilidad de configurar el tan socorrido plugin maven-surefire para que a la hora de ejecutar los tests los tests de vuestro proyecto (por lo tanto no hará falta implementar tests específicos para medir el rendimiento), se haga uso JIP (Java Interactive Profiler) que nos permitirá obtener una serie de estadísticas sobre la ejecución de dichos tests.  Pero… ¿cómo configuro maven-surefire-plugin para que utilice JIP? Pues es muy sencillo, bastará con realizar los siguientes pasos:

  1. Crear una carpeta profile en el directorio src/test de vuestro proyecto.
  2. Incorporar a dicha carpeta los ficheros profile.jar y profile.properties que podréis encontrar en la distribución de JIP.
  3. En el fichero de configuración habrá que modificar las siguientes propiedades:
    # Indicar el fichero donde se volcarán los resultados del profiler:
    file=target/profile.txt
    # Excluir del profiling los paquetes de testng y de maven para evitar excesivo "ruido" en los resultados exclude=org.testng,org.apache.maven
  4. Modificar la configuración de maven-surefire-plugin para que haga uso de JIP, para ello habrá que añadir la siguiente línea en la sección configuration:
    -javaagent:src/test/profile/profile.jar -Dprofile.properties=src/test/profile/profile.properties

5. Ejecutar mvn test para comprobar que todo está correctamente configurado. Si todo ha ido bien debería existir en el directorio target del proyecto un fichero profile.txt con los resultados.

NOTA: En determinadas máquinas virtuales de Apple parece haber problemas con las rutas relativas para establecer el agente JIP, habría que utilizar rutas absolutas. Con la máquina virtual 1.5.0_16 sobre Mac OS X 10.4.11 no se ha observado dicho problema.

 

¿Usuarios de Directorio Activo en OpenLDAP? Junio 23, 2009

Archivado en: Sistemas — fjmulero @ 9:59 pm

¿Es eso posible?, ¿podemos migrar usuarios de Active Directory de Microsoft a un OpenLDAP? La respuesta a ambas preguntas es sí, y a lo largo de esta entrada se comentarán una serie de  consideraciones ha tener en cuenta, cómo compilar/configurar un OpenLDAP para que soporte las nuevas entradas y algunas herramientas útiles para estos menesteres.

Consideraciones ha tener en cuenta

El principal escollo con el que nos vamos a encontrar a la hora de migrar datos ente ambos sistemas es la obtención de contraseñas del Active Directory. Aunque OpenLDAP y Active Directory son implementaciones del protocolo LDAP, son muy distintas entre sí a la hora de persistir las contraseñas. Mientras que OpenLDAP guarda la contraseña, a no ser que se indique lo contrario, como un atributo más de un usuario (encriptada por supuesto), Active Directory almacena esta información en la base de datos del SAM (Security Account Manager) encriptada con el algoritmo Lan Manager, por lo que al consultar la información de un usuario con un cliente LDAP no aparecerá dato alguno sobre la contraseña y habrá que recurrir a otras herramientas para su obtención.

Cómo configurar un OpenLDAP

Cómo se ha mencionado anteriormente las contraseñas en Active Directory se almacenan encriptadas con LanManager, así que el principal esfuerzo, a la hora de configurar OpenLDAP, será dar soporte a dicho algoritmo de hashing. De este modo cuando un usuario intente autenticarse, nuestro sistema deberá ser capaz de encriptar con dicho algoritmo la contraseña que proporcione el usuario y comprobar si se corresponde con el hash almacenado para él. Para que nuestro Open LDAP sea capaz de realizar dicha tarea será necesario compilar los fuentes con la opción --enable-lmpasswd. A continuación se especifica cómo realizar esta tarea sobre Debian:

  1. Instalar en nuestro entorno los paquetes necesarios para llevar a cabo labores de construcción/compilación:
    dev:~# aptitude install build-essential
  2. Intalaremos las dependencias con Berkeley DB necesarias para OpenLDAP (utilizaremos paquetes para simplificar el proceso):
    dev:~# aptitude install libdb4.4-dev openssl-dev
  3. Ejecutaremos ldconfig para cargar las librerías compartidas (este paso podríamos obviarlo):
    dev:~# ldconfig
  4. Descargaremos los fuentes y descomprimimos:
    dev:~/dowloads# wget ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-<version>.tgz
    dev:~/dowloads# tar -xzf openldap-<version>.tgz
  5. Ahora procederemos a compilar la herramienta con las siguientes instrucciones:
    dev:~/dowloads/openldap-<version># ./configure --prefix="/opt/openldap" --enable-lmpasswd
    dev:~/dowloads/openldap-<version># make depend
    dev:~/dowloads/openldap-<version># make
    dev:~/dowloads/openldap-<version># make test
    dev:~/dowloads/openldap-<version># make install

Ya tenemos instalado servidor de LDAP en el directorio /opt/openldap y sólo nos quedará configurarlo según nuestras necesidades. A continuación se establecerá  una configuración básica con la que poder probar la autenticación.

  1. Editaremos el fichero slapd.conf (/opt/openldap/etc/openldap/slapd.conf) en el que se modificarán las siguientes entradas:

    include      /opt/openldap/etc/openldap/schema/core.schema
    include      /opt/openldap/etc/openldap/schema/cosine.schema
    include      /opt/openldap/etc/openldap/schema/nis.schema

    suffix       "o=mrpotatoe,c=es"
    rootdn       "cn=admin,o=mrpotatoe,c=es"
    rootpw       admin
  2. Ahora crearemos un fichero ldif  (/tmp/carga.ldif) en con algunos datos a persistir:
    dn: o=mrpotatoe,c=es
    objectclass: organization
    o: mrpotatoe

    dn: cn=admin,o=mrpotatoe,c=es
    objectclass: organizationalRole
    cn: admin

    # En este punto crearíamos un usuario con la contraseña 12345678
    # encriptada con lan manager para la realización de pruebas
    dn: cn=user,o=mrpotatoe,c=es
    objectClass: top
    objectClass: account
    objectClass: posixAccount
    cn: user
    gidNumber: 0
    homeDirectory: -
    uid: user
    uidNumber: 0
    userPassword:{lanman}0182BD0BD4444BF836077A718CCDF409

  3. Lo próximo será iniciar el servidor e introducir los datos necesarios para realizar las pruebas, para ello tendremos que ejecutar el siguientes comando:
    dev:~# su -c /opt/openldap/libexec/slapd
    dev:~# /opt/openldap/bin/ldapadd -xcWD 'cn=admin,o=mrpotatoe,c=es' -f /tmp/carga.ldif
  4. Una vez llegados a este punto podremos probar a autenticarnos contra nuestro openldap con el usuario de prueba que hemos creado. Para ello podremos utilizar cualquier cliente de LDAP.

Algunas herramientas útiles

A continuación se enumeran algunas herramientas para migrar usuarios de Directorio Activo a OpenLDAP:

  • PwDump
    Esta utilidad permite extraer las contraseñas en LM y en NTLM de los usuarios de un sistema SAM. Esta herramienta nos será útil para obtener las contraseñas de los usuarios de un directorio activo.
  • Apache Directory Studio
    Se trata de un cliente LDAP bastante potente que nos permitirá, además de navegar y consultar un LDAP, editar ficheros LDIF, crear y editar esquemas para OpenLDAP y Apache Directory Server, utilizar un Apache Directory Server embebido, etc.