29 abril 2008

Maestreando expresiones regulares

A veces que me doy cuenta de porque hay gente que me llama friki. Sólo el hecho de haber estudiado teleco y trabajar en désedos ya es bastante friki. Y aunque yo me considero bastante normal (¿quién no?) tengo que reconocer algunas cosas que me delatan, como el libro que os presento.

Pues resulta que como la semana pasada tenía tiempo libre en el trabajo y en désedos hay una biblioteca bastante generosa, he empezado a leerme un libro que estoy seguro que el 80% o más de los que leéis el blog no vais a entender ni de qué va. Ni aun cuando os lo cuente. (Y pobres los del 20% que sí lo hagan.)

El libro en cuestión se llama Mastering Regular Expressions.


Las preguntas inmediatas son:
- ¿Qué leches es eso de Regular Expressions?
- ¿Para qué sirve eso?

Siento avanzar que no tengo respuesta satisfactoria para ninguna de estas dos preguntas.

Aun así vamos a intentarlo.

Las expresiones regulares son... esto... unas cosas... es... como un toro!

Veamos un ejemplo a ver si así es más fácil empezar a coger la idea:
Cuando en el Windows buscas archivos .bmp, pones en el buscador que busque archivos llamados *.bmp, queriendo decir que * puede ser cualquier cosa. Esto no es una expresion regular, pero la idea se acerca.


Las expresiones regulares se usan en muchos lenguajes de programación para buscar patrones en variables o archivos de texto. Se parece a la utilidad de los editores de texto de buscar palabras, sólo que lo que buscamos no son palabras concretas, sino trozos de texto que cumplan con una serie de fórmulas que queremos.

Y como se desprende de lo dicho, las expresiones regulares sirven, entre otras cosas, para buscar cadenas de caracteres concretas en ficheros y para comprobar si una variable tipo texto cumple (es igual o parecida) unas determinadas características.

¿Ni idea?
Veamos un par de ejemplos que yo mismo uso. Uno es más o menos fácil de ver y el otro nos puede sonar a chino si no sabemos de qué va esto de las expresiones regulares.


- En mi trabajo, todos los días por la mañana analizamos los resultados de los tests que se han pasado a la versión diaria del software que hacemos. Estos resultados son archivos de texto (algunos de varios megas) que contienen la salida de los distintos subtests.
Aunque cada archivo tiene un informe al final, yo sólo tengo que escribir un comando para ver en pantalla los subtests que han fallado en todos y cada uno de los archivos sin tener que abrir uno por uno los ficheros. Para ello escribo en la consola:
egrep 'SubTest.+FAILED!' *version_20080421*
donde egrep es el comando de Linux que busca un patrón en un archivo, *version_20080421* es el conjunto de todos los archivos que contienen la versión que me interesa y SubTest.+FAILED! es la expresión regular que sólo me localiza las líneas que contienen al mimo tiempo la palabra SubTest y la palabra FAILED!. Así puedo ver, en unos segundos, qué cosas han fallado y me ahorro tener que abrir y analizar los ficheros donde todo ha ido bien.

- Tengo que comprobar que el contenido de una variable es un email válido (no que exista, simplemente que siga la fórmula nombre@servidor.dominio). Con hacer la siguiente comparación me sobra:
variable =~ /\w[-.\w]*\@[-\w]+(\.[-\w]+)*\.\w+/


Para mí las expresiones regulares son como escribir a máquina: no es necesario usarlas, pero ahorran mucho tiempo y una vez que sabes, te das cuenta de que hasta el momento has estado haciendo el canelo.


En mucho libros de programación dedican unas páginas a enseñarte qué son las expresiones regulares y cómo se usan en un determinado lenguaje. Pero cuando vi que había un libro exclusivamente dedicado a esto, me pregunté hasta dónde se puede llegar con las expresiones regulares, si pueden ahorrarme aun más trabajo, si me volveré loco aprendiéndolas, etc.

En fin, no pude resistir mi curiosidad y elegí este libro. Por eso y porque mis otras opciones eran Linux Kernel Development y Building Embedded Linux Systems.


Un saludo.

25 abril 2008

Esa rutina que viene sin avisar

Después de 5 meses trabajando en désedos he alcanzado plenamente la rutina diaria (en la que lamentablemente no está escribir en el blog). Lo que antes era novedoso ahora es lo de siempre. Las caras que antes no conocía ahora tienen nombre.
Todo parece estabilizarse, aunque sé que es pura ilusión. De hecho, ya noto las cosas a mi alrededor prepararse lentamente para cambiar sin rumbo predecible. Como decía Álvaro:

La vida juega contigo cuando parece que todo está bajo control. En contadas ocasiones, ganamos conciencia de lo que en realidad somos: cascarones de nuez al antojo del viento de un destino que no podemos comprender.

Por cierto, ya hemos terminado la validación con buenos resultados. Sí, ya tengo más tiempo. Esta última semana no tenía casi trabajo y aun así no he escrito na de na. Y mis ánimos blogeros no parece que vayan a crecer mucho. O sí. Eso también está al antojo del destino.

Sin nada más que contar de momento.

Sed felices.

18 abril 2008

Desbancando a los veteranos

Hoy han mandado el siguiente comunicado al email de todos los de la empresa donde trabajo. Imaginaos los comentarios que estoy aguantando todo el día. Y lo que me queda...


Hola a todos.
Por favor, revisad la información que tengáis en el recurso /users del servidor ya que hay compañeros que se estan viendo afectados por falta de espacio.

Esta limpieza deberiamos hacerla todos, pero en especial los siguientes usuarios deberian bajar de 1GB de ocupacion.

2.3G jriquelme
1.7G fgarrido
1.5G jcarrasquer
1.4G icampos
1.3G afeltstrom
1.3G luis
1.2G aivars
1.2G asalas
1.2G jlgm
1.2G mmartinez
1.2G vzeib

Saludos,

17 abril 2008

Desafío: ¿dónde no está Wally?

En Vancouver unos señores han puesto un Wally gigante encima de su
tejado y retan al mundo a encontrarlo usando el Google Maps:
http://whereonearthiswaldo.wordpress.com/


El caso es que el Google Maps aun no ha actualizado la foto de Vancouver dónde está el Wally gigante.
¿Qué cómo lo sé?
Pues porque el otro día, en mi tiempo libre, intenté buscar al Wally y llegué a encontrar el tejado donde lo han puesto, pero sin Wally.


Y aquí viene el desafío:
Partiendo de las fotos del tejado que se pueden ver en el blog de arriba, buscar el tejado donde no está Wally (pero estará).

Aquí os dejo el enlace al mapa de Vancouver en el Google Maps:
http://maps.google.es/maps?f=q&hl=es&geocode=&q=Vancouver&jsv=107&ie=UTF8&t=k&z=12&iwloc=addr

Aviso: Vancouver es muy grande, aun así yo tardé menos de 5 minutos en encontrarlo, eso sí, con mucha suerte. Carlos puede dar fe de ello.

Adjunto la foto de prueba:



15 abril 2008

Crítica literaria: The Kite Runner

Haciéndo un esfuerzo por relanzar este blog miserable, voy a hablar de uno de los últimos libros que he leído. Es el primero que leo en inglés este año, muy a mi pesar.

El libro en cuestión es The Kite Runner, de Khaled Hosseini, todo un best-seller. Me lo dejó el Sr. Costa a cambio del libro que le dejé yo en su día, Nada, de Carmen Laforet.

El libro va de las memorias de un Afgano que huyó de su país cuando éste fue invadido por los rusos. Está ambientado entre 1970-2001, y la historia comienza con un par de niños en Kabul.

Me ha gustado mucho, y eso últimamente es difícil. No sé si porque sólo leo libros no muy buenos o porque me estoy haciendo más exigente.
Me ha gustado porque la historia es buena, porque engancha, porque se aprende mucho de historia y de historia humana.

Yo antes cuando pensaba en Afganistán sólo pensaba en talibanes y señoras completamente tapadas. Ahora sé que no siempre fue así. Que antes vivían de otra forma. Que mucha gente huyó de su país, y que muchos otros se quedaron. Que antes allí la gente tenía una vida y que esa vida desapareció, como muchas otras cosas, con las guerras.



Este libro se centra en la vida de un niño de familia acomodada. Aunque también queda muy bien reflejado la forma de pensar de la gente de aquella zona respecto a las mujerer y a otras etnias "inferiores".

Sé que este autor ha sacado otro libro donde se centra más en la vida de las mujeres en Afganistán: A Thousand Splendid Suns.

Me lo apunto en la lista.

10 abril 2008

Magic Eye

Como sospecháis, estamos otra vez de validación en desedós. Bueno, realmente es la segunda ronda de la misma validación, primero se saca una versión alfa, y después de la primera ronda pasa a ser beta. Cuando terminemos esta ronda sacaremos la versión nueva definitiva.

Todo este rollo para decir que no tengo mucho tiempo libre (entiéndase "tiempo libre mientras trabajo") para éste, mi pequeño y famélico blog.
Además, estoy pensando en embarcarme en un proyecto personal, que dudo me lleve a buen puerto, pero consumirá seguro gran parte de mi tiempo. Y no me estoy refiriendo a aprender japonés, eso lo dí por imposible hace semanas, sino a invertir mi tiempo en crear cosas. ¿Qué cosas? pues no sé, lo que sea, principalmente Buena Suerte.
Siento no ser más concreto, pero la vida es confusa e incierta.

--------------------------------------------------------------------------------------------------------------------------------

Como sé que lo de antes no os interesaba, os compenso con una imagen que he visto hoy.
Es buenísimo. ¡Qué recuerdos!


01 abril 2008

Para tí, trabajador explotado.

Hoy hemos empezado la segunda ronda de la validación de la nueva versión del firmware. Después de 6 semanas de primera ronda, esta nueva entrega sólo durará 3.

Podemos definir la ronda de validación como un marronaco. Y esto me ha hecho recordar la guía de cómo evitar marrones. Muy útil y divertida, por cierto.

La podéis descargar de muchos sitios, buscad en googe "Marrones Handbook" y os aparece en el primer enlace. También podéis descargarla en este enlace:
http://fjroca.googlepages.com/marrones.pdf

Bueno, os pongo los primeros capítulos para que os piquéis. Luego mejora.

--------------------------------------------------------------------------------------------------------------------------------



MARRONES: QUÉ SON Y CÓMO EVITARLOS
Este documento se encuentra en una versión preliminar antes de su remisión al ITU-B1 (International Telecommunications Union - Brown Group) para la confección de las pertinentes recomendaciones.
Se ruega a todos los miembros del Brown MoU Group que colaboren en la medida de lo posible con todas las aportaciones y/o correcciones que consideren oportunas.

Este documento será actualizado periódicamente por los miembros del Brown MoU Group. Las aportaciones podrán enviarse a la siguiente dirección de correo electrónico: “brown@XXX.es”

1 DEFINICIÓN DE MARRÓN

Un marrón “brown” es todo aquel trabajo que nadie desea realizar.
Dependiendo de la situación desde la que se observe, el marrón puede tomar distintas connotaciones:

1.1 Desde el Punto de Vista del Jefe
Es aquella tarea de suma importancia para el desarrollo estratégico de la empresa que ha de ser realizada con el máximo esmero y en el menor plazo posible.

1.2 Desde el Punto de Vista del Empleado
Es el hartarse a currar, normalmente como consecuencia de la última idea genial del jefe, con un trabajo que no suele servir para nada, pero que debería estar listo ayer. Agravantes que pueden darse en un marrón:

• Urgencia
• Nocturnidad
• Alevosía
• Recochineo

2 CÓMO RECONOCER UN MARRÓN

En general, los marrones se reconocen inmediatamente, pero por si el lector es aún novato en estas lides y tiene dificultades en reconocerlos, se dan a continuación algunas pistas:

Introducción: Por regla general, la introducción del marrón suele llevarse a cabo por medio de frases del estilo de: “Oye, tú no tienes nada urgente que hacer, ¿verdad?” o “Mira, ha surgido una cosa que hay que resolver esta misma tarde”.

Síntomas: Una vez que el marrón ha caído encima, se le puede reconocer por los siguientes síntomas:

• Nerviosismo y desasosiego.
• Ojeras, dificultad para conciliar el sueño.
• Mala leche, en función del tipo y plazos del marrón.
• Incremento desusado en el número de visitas que tu jefe hace a tu puesto para ver “qué tal...”.
• Aumento alarmante en el consumo de café.
• Salida de la oficina a horas intempestivas con la inquietante sensación de que uno va a casa de visita.

La prueba del nueve: Si, pese a las indicaciones anteriores, el lector aun no tiene claro sí lo que le ha caído encima es un marrón, puede llevar a cabo la llamada prueba del nueve del marrón: solicítese ayuda a un compañero referente al marrón objeto de sospechas. Si el compañero responde con alguna de las siguientes
evasivas:

• “Es que yo no sé nada de eso”.
• “Es que estoy muy ocupado” (cuando ostensiblemente se ve que no está haciendo nada).
• “Mira, a mí no me líes”.

puede estarse plenamente seguro de que uno se está enfrentando a un auténtico y genuino marrón.