Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

miércoles, 10 de diciembre de 2008

50BR3 35CR17UR4 Y 0TR45 H13RB45

Durante un tiempo en el pasado impartí clase a adultos que, en general, tenían escasos conocimientos sobre informática. A ellos, explicarles que, como norma, la contraseña que debían seleccionar para la cuenta de correo que estaban creando en ese momento, debía ser compleja y poco relacionada con ellos suponía un problema que terminaba, no pocas veces, con el olvido de la misma. De poco valía decirles que, a ser posible, la contraseña no debía ser el nombre de su hijo o su mascota, y que al menos debían incluir algunas cifras en la misma (¡¡distintas al año de nacimiento, por San Kernel!! :) ). En cualquier caso, visto el éxito obtenido, cuando me topaba nuevamente con ellos, algo más desenvueltos en los lances de la informática, o tenía a un grupo algo más avanzado, les introducía en los beneficios de la escritura LEET. Sí, es precisamente esa en la que las p414Br45 intercambian algunas letras por números, creando combinaciones legibles con ligeras dificultades para los neófitos de la práctica, pero que trae algunos beneficios asociados. Por ejemplo, puestos a usar contraseñas de longitud suficiente y que incluyan letras mayúsculas y minúsculas, resulta bastante más fácil recordar una frase que una serie más o menos compleja de caracteres, y esta peculiar codificación mejora la seguridad de las contraseñas. Claro que siguen siendo vulnerables a ataques por fuerza bruta o de diccionario, pero aun así el tiempo necesario para romperlas será habitualmente mayor.


Ya os comento que mi mayor interés en este tipo de contraseñas es facilitarle a los usuarios la generación de las mismas dándoles una herramienta que mejore aunque sea un poco la calidad de las mismas, así como la facilidad para recordarlas. Sin embargo, el fenómeno es tan geek que como todos sabréis, ha venido extendiéndose desde los tiempo de las BBS hasta nuestros días. Incluso Google tiene una versión 1337 del buscador, existiendo además traductores automáticos de texto plano a LEET. Para muestra, un botón:


Ya os comento que mi mayor interés en este tipo de contraseñas es
Y4 05 c0m3n70 qu3 m1 m4y0r 1n73ré5 3n 3573 71p0 d3 c0n7r453ñ45 35
`/@ 0$ (0|\/|3|\|+0 q|_|3 |\/|1 |\/|@`/0|2 1|\|+3|2é$ 3|\| 3$+3 +1|*0 [)3 (0|\|+|2@$3ñ@$ 3$

¿Y vosotros, qué opináis de este tipo de trucos nemotécnicos? ¿Los veis útiles para su uso cotidiano por parte de los usuarios?

viernes, 5 de diciembre de 2008

De puente a puente...

Llega un nuevo fin de semana y, siendo algo más prolongado de lo habitual, es el momento ideal para ponernos al día con tantas cosas como quedan pendientes debido al ajetreo diario y la semana de trabajo. Entre otras, podríamos citar las lecturas atrasadas, probar tal o cual elemento que despertó nuestro interés (desde software a un dispositivo del tipo que sea), investigar un poco o, simplemente, descansar. Sirvan como propuestas algunas de las lecturas que despertaron mi interés durante la semana, y alguna que otra situación que me resultó curiosa.


Empiezo, como viene siendo habitual, dando un pequeño (brevísimo) repaso a algunas entradas de blogs de informática que me llamaron la atención. El primero de ellos es un nuevo descubrimiento, el blog de Versvs que he llegado a conocer gracias a la entrada que publicaba días atrás Sergio Hernando, y que os recomiendo encarecidamente. De su autoría es también el libro La sociedad de control, un texto más que interesante que he empezado a leer con fruición, y que por lo que veo en su web ya está a la venta en formato, digamos, tradicional. Así que una buena descarga para disfrutar y aprender (a la par que reflexionar) estos días, y un (auto)regalo seguro.


Muy relacionada con esta sociedad de control, en los últimos días se han producido bastantes manifestaciones de repulsa en contra de la última jugada del Gobierno en connivencia con la siempre “amiga de los niños” SGAE. Se trata, claro está, de la ingeniosa, imaginativa y singular campaña, Si eres legal, eres legal. Me habría gustado escribir algo al respecto, pero la verdad es que la semana vino un poco cargada y apenas pude preparar ese par de entradas que “adornaron” el blog, más parado que nunca. Sin embargo, material de lectura hay, y mucho. Os recomiendo, por ejemplo, las entradas de Informática Verde, de Mangas Verdes (que es un punto de entrada a muchas otras que giran en torno a la misma cuestión). Por cierto, y aunque no venga al caso más que por el nombre de la campaña: si eres informático, ¿qué se supone que eres? Curioso dilema, digno de figurar en alguno de los libros de Smullyan, ¿verdad?


En fin, ya que sigo hablando de libros os voy a recomendar otro. Viene directo de la imprenta del Imperio, pero resulta muy interesante. Es la Application Architecture Guide 2.0 del grupo de patrones y buenas prácticas de Microsoft. Es un documento Beta 2 (que debe ser algo así como 0.0.0.1.1), pero que ya os adelanto que pinta bien. Podéis descargarlo desde su página web y es free, colegas. Otra lectura para la saca.


Seguimos con la programación, y en esta ocasión con el blog PHP Senior, de Enrique Palace, que también resultar ser un descubrimiento reciente, de la última semana, gracias a una serie de artículos-guía que debe seguir un programador para convertirse en un as del PHP. De hecho, lo que buscaba no era eso, sino buenas prácticas en programación orientada a objetos para brindar lecturas interesantes a unos alumnos de .NET, y en cualquier caso, como os digo, resulta un blog con artículos de calidad. Por cierto, días después me sorprendí encontrando un enlace desde el blog de DES, en un artículo sobre buenas prácticas de desarrollo.


Se me quedan en el tintero bastantes cositas de interés, como siempre, pero no quería despedir la semana sin recomendaros una página que vi a través de Eco Microsiervos. Se trata de un buscador inmobiliario (Real State Tool) que se encarga de encontrar la vivienda ideal en función de nuestra vida diaria (familiar). Le damos información sobre nuestros trabajos, la escuela de los niños, la dirección de la biblioteca que más frecuentamos o nuestro gimnasio, y se encarga de buscar la localización más idónea para la vivienda, minimizando los desplazamientos hasta el lugar. Una forma más de ser un poquito más eco, y perjudicar menos nuestro medio ambiente. Por lo pronto he hecho la prueba y creo que a mi querida Lycis le daré una alegría. Nos sugiere mudarnos (lo haremos en breve) a una zona que ella se había planteado.



¡Buen fin de semana!

martes, 2 de diciembre de 2008

Pruebas de caja blanca automatizadas en .NET


Una de las tareas más tediosas a la hora de desarrollar pruebas unitarias sobre código existente es tener en cuenta todas las posibles entradas y flujos de ejecución. Sin embargo, es necesario (imprescindible incluso) un correcto control de ambos aspectos durante el desarrollo de nuestras aplicaciones. Durante el proceso de desarrollo, las prácticas recomendadas por metodologías como la Programación eXtrema (XP) y el Desarrollo Guiado por Pruebas (TDD) nos dicen que debemos escribir los tests necesarios para validar el código que estamos creando. Sin embargo, no se nos dice qué pruebas debemos escribir, aunque sabemos que las pruebas, si están bien escritas son, además de una herramienta insustituible para la verificación del código, un modo de reflejar mediante código las especificaciones que deberá cumplir nuestro código.


Por todo esto, Microsoft ha preparado un nuevo framework (sí, uno más, a mí también me sorprendió cuando me hablo del mismo un compañero de trabajo) que permite facilitar la tarea del desarrollador mediante la creación de pruebas unitarias mediante la inspección automática del código. Estoy hablando de Pex (Program EXploration), que puede ser descargado desde la página de Microsoft Research, y que durante su instalación nos adelanta una futura integración con Visual Studio 2010, el próximo IDE de la compañía. Aunque el sistema operativo recomendado es Windows Vista, no he tenido problema alguno para probarlo con mi Windows XP SP2 y Visual Studio 2008. Tras instalarlo, a ser posible incluyendo los complementos para Visual Studio, tendremos un nuevo grupo de programas con el propio Pex, una carpeta de ejemplos para juguetear un poco y una documentación bastante completa y muy interesante.


Ahora podemos hacer uso del mismo simplemente incluyendo una referencia a Microsoft.Pex.Framework en nuestro proyecto, y etiquetando adecuadamente las clases y métodos con los atributos PexClass y PexMethod respectivamente.



Hecho esto, podemos acceder al menú contextual dentro del código y seleccionar la opción “Run Pex Explorations”. Aparecerá un panel con los resultados de la exploración, y el análisis que ha llevado a cabo Pex en nuestro código.



Como se puede observar, podemos analizar las diversas entradas que Pex habrá usado como parámetros de entrada en nuestros métodos, un pequeño resumen o control de excepciones y el mensaje de error obtenido, si es el caso.



Si seleccionamos una de las entradas, aparecerá una zona con los detalles del código que Pex generará por nosotros para ejecutar la prueba correspondiente. Si esa entrada provoca una excepción, es posible automatizar incluso el control de la excepción, etiquetando el método que ejecutará la prueba para que la misma sea una excepción esperada.






En el cuadro de diálogo Herramientas->Opciones, podemos establecer una serie de configuraciones sobre Pex como, por ejemplo, la generación de informes. Si habilitamos dicha opción, en la carpeta destino de la compilación se creará una carpeta con el informe en formato HTML. Podemos observar en el mismo los tests que han sido generados y la cobertura que suponen sobre el código.





La verdad es que Pex pinta realmente bien. Parece una herramienta interesantísima a la hora de gestionar y generar las pruebas unitarias de forma automatizada. La documentación es muy completa e incluye, además del manual de uso de Pex, una serie de documentos sobre patrones de pruebas para un uso eficiente de Pex, o el uso de stubs. Conforme vaya profundizando en él iré dejando por aquí mis impresiones.


Ah, y no es lo único que se nos viene encima. Los chicos de DevLabs en Microsoft tienen en mente proyectos tan interesantes como CHESS, una herramienta para la búsqueda automática de interbloqueos, condiciones de carrera y otros heisenbugs en nuestro código concurrente.

El ascenso de Ícaro


El desarrollo guiado por pruebas o TDD nos permite codificar nuestras aplicaciones de una forma más segura, ya que ante cambios en el código existente o inclusión de nuevas funcionalidades, basta pasar nuevamente todas las pruebas (incluyendo, en su caso, las nuevas que sean pertinentes) para asegurarnos que las modificaciones no han alterado su funcionamiento anterior. Una de las herramientas que nos permiten llevar a cabo este desarrollo son los frameworks de prueba, de los que existen de todos los sabores y gustos conocidos para cada lenguaje de programación o plataforma de desarrollo. En el caso del .NET Framework podemos citar, entre otros, el extendidísimo NUnit en sus líneas de desarrollo 2.x y 3.x, MbUnit muy orientado a la extensibilidad del mismo, MSTest que viene “de serie” con Visual Studio (excepto las ediciones Express) y xUnit.net, que nació tras las lecciones aprendidas de otros frameworks de pruebas unitarias y que poco a poco va adquiriendo mayor peso entre la comunidad de desarrolladores.



Estos frameworks suelen consistir en un core de pruebas que nos permite, gracias al etiquetado mediante atributos de nuestras clases y métodos, la ejecución automatizada de los tests. También incorporan clases de extensión y demás funcionalidades, y suelen permitir la ejecución de las pruebas desde la propia consola del sistema, o a través de una interfaz gráfica que nos hace la vida más fácil a los usuarios de los mismos. Pues bien, días atrás estuve evaluando xUnit.Net como alternativa a NUnit de cara a nuevos desarrollos, y su inclusión dentro del proceso de integración continua que facilitan herramientas TeamCity, de la que me gustaría hablar algún día. El caso es que, probando xUnit.net, el GUI que ofrece “de serie” el framework es ciertamente triste, aunque sea una versión temprana del mismo. Así las cosas, me planteé probar su funcionamiento con alguna otra aplicación que permitiese llevar a cabo campañas de prueba de una forma más sencilla y con un mayor control sobre los resultados arrojados por los tests. Aunque la oferta a este respecto, por lo que pude ver, no es demasiado extensa (buscaba un GUI suficientemente flexible como para permitir la ejecución de pruebas con xUnit.net sin demasiado trabajo de configuración previa, o sin tener que desarrollar scripts en NAnt, MSBuild o similares), encontré mi opción ideal en Gallio, una plataforma de automatización, abierta y extensible, que puede integrarse con numerosos frameworks de pruebas en .NET. De hecho, es tan flexible que permite la ejecución de series de test desarrollados sobre diversos frameworks sin mayor problema. Incorpora un GUI, Icarus, cuya instalación y uso es tan simple como el propio GUI de NUnit, permitiendo además obtener informes muy vistosos como puede observarse en las diversas capturas que acompañan a la entrada de hoy.



El Explorador de Tests nos permite seleccionar aquellas pruebas que deseamos ejecutar.



Una ejecución de tests con un resultado ideal.



El Explorador de Tests correspondiente a la ejecución anterior.



El log de ejecución con algunos tests fallidos.


No voy a entrar demasiado en profundidad en la aplicación, ya que su uso es muy intuitivo y simple, y lo único de lo que quería dejar constancia es del interés que ha suscitado en mí precisamente por eso, porque permite incluso desarrollar nuevas pruebas sobre el código existente en un framework de pruebas distinto al ya existente, y pasar las pruebas en su totalidad desde una misma aplicación. En contra suya únicamente he notado una ligera lentitud en la carga y ejecución de los ensamblados que contienen las pruebas a pasar.



Un completo informe en HTML.


¿Y en vuestro equipo, desarrolláis basándoos en TDD? ¿Qué framework de pruebas usáis? ¿Cuál os gusta más y por qué?

viernes, 28 de noviembre de 2008

Imágenes de LIFE disponibles en Internet


La verdad es que la semana que termina se ha presentado bastante más complicada de lo que esperaba, y no he podido dedicar las tardes a escribir sobre tema alguno. Tengo varios en mente, que me gustaría desarrollar durante la próxima semana (pero como tampoco pretendo que se conviertan en una obligación, prefiero ni mencionarlos, de momento :) ). Lo que sí quería hacer, siguiendo la tradición lúdica que he venido a instaurar para los viernes, es dejaros con un enlace que me ha parecido bastante interesante. Se trata del resultado de un acuerdo entre la revista LIFE y Google, gracias al cual se encuentran gran número de imágenes de la primera en los servidores del segundo. Hay de todo, y muy bueno. Como muestra, un par de botones.



La visión de los virus en los ’80



Y el sueño de un inspector de trabajo y seguridad e higiene: Las instalaciones de IBM en los años 40.


¡Buen fin de semana!

jueves, 20 de noviembre de 2008

Me pareció ver un lindo correíto...

Ayer por la mañana veía cómo la cuenta de Gmail de un compañero tomaba miles de colores y podía configurarla visualmente a su antojo: los temas de presentación habían llegado al correo de Google. Realmente este tipo de personalización del entorno no es algo desconocido para quienes usamos herramientas del Gran Hermano Google (Lonifasiko dixit ;) ), pero resulta interesante que incluyan en el correo una característica existente en iGoogle desde hace años. Lo curioso es que el servicio está siendo activado poco a poco en las cuentas de correo, por lo que ayer no encontraba la opción en las mías, pero sin embargo hoy sí que lo tengo activo. He estado probando, y como todo en Google resulta sencillamente adorable: permite personalizar el entorno del correo y la ciudad donde vivimos, por lo que el tema irá cambiando en función de la hora del día, las condiciones atmosféricas… Las opciones para escoger no son pocas, y es presumible que pronto puedan utilizarse otras creadas por los propios usuarios, como ya ocurrió en el caso de iGoogle.



En mi caso, me quedo con la opción clásica, puesto que los interfaces de usuario minimalistas me encantan. Pero si tuviera que elegir, tal vez utilizaría…



;)

Hay errores que matan

Andaba yo tan tranquilo el otro día buscando información sobre un error que aparecía en ocasiones al interactuar desde .NET con el puerto serie (“Error 652”, poco descriptivo y que aparecía asociado a los módems serie) del ordenador cuando me encontré con un par de URLs (epeire y buzzz) con el ominoso mensaje que os dejo a continuación:


Error 652

You have encountered a rare error. The error 652 is shrowded in governmental secrecy. Please do not report to anyone that you saw this error. You did not read this page. This page was never here.

Apache/1.23.45 Server at www.epeire.net Port 80



Con "indirectas" como esa, ¿quién se atreve a llevarles la contraria? :D


¡Buen viernes!