El Tour de pasiona pasó por Andorra

Steve vs Toni
Después de pasar por Bilbao, el pasado martes 19 tuve la oportunidad de repetir como ponente del Tour de pasiona en Andorra, con lo que supongo que ya puedo decir que me he convertido en ponente “Internacional”… ^_^ Bromas aparte, fue un placer coincidir con Lluis Franco (@lluisfranco), el amo de esos lares… y poder charlar con la gente de Andorra.

Tuve la oportunidad de volver a hablar de mi querido Windows 8, aunque no desde la perspectiva más técnica, sino desde un punto de vista más empresarial, hablando de euros vamos. Arrancó el evento Jorge Saura con las novedades del nuevo Sharepoint, y yo tuve el honor de hacer de telonero de Quique Martínez (@quiqu3) – por favor seguirle en Twitter a ver si calla – hablando como no de su nube azurilla.

Os pongo una foto del chachondo de Joan Sintes (@kobesintes), que aparte de demostrar que un portátil no es una cámara de hacer fotos, deja clara sus “malas intenciones”… n_n

Muy pronto, ¡más paradas del Tour!

0  

Proyecto Euler: La primera “sorpresa” con la recursividad

En el segundo ejercicio que posteé del Proyecto Euler me dio pereza hacer lo mismo que en el primero, plantear una solución empleando recursividad. Antes de seguir por esa vía, quería tratar de medir el rendimiento del código de cara a valorar si valía la pena. Yo personalmente estaba convencido de que algo de rendimiento ganaría, pese a que el código puede hacerse un poco menos legible para alguien que no esté acostumbrado a usar recursividad.

Pues nada, poco a poco voy poniendo todo en solfa, y siguiendo una recomendación de Marc Rubiño me he instalado dynaTrace AJAX Edition, lo he integrado con Internet Explorer, y los resultados han sido algo sorprendentes.

Mientras que la versión con bucle se ejecuta en un milisegundo, empleando recursividad, no se alcanzan por muy poco los 40. Estamos hablando de una proporción aproximada de 1 a 40… ¡casi nada! Vale, estamos hablando de milisegundos, pero proporcionalmente es una diferencia considerable.

Quizás tenga que ver el ámbito de la variables que aplica JavaScript, pero a mayor ámbito menos trasiegos de memoria debería necesitar, con lo que no acabo de entenderlo.

Pero vaya, hasta aquí no lo acabo de cuadrar, pero bueno, nada de recursividad, pero antes de descartar el tema ¿por qué no probarlo con FireFox? ¿Qué sería del desarrollo Web si sólo hubiera un navegador?, sería francamente aburrido…

Como era de esperar los valores son distintos, aquí las diferencias se reducen a la mitad, una relación 1 a 20, pero ¡Oh! ¡Sorpresa!, en esta ocasión el ganador se llama ¡Recursividad!

¿Conclusiones? Pues supongo que la de siempre, si quieres que todo cuadre dedícate desarrollar para el escritorio, y si quieres aventuras pon un navegador web en tu vida.

0  

Proyecto Euler: Solución al problema #2

Pues venga, no bajemos la guardia. Teniendo todavía pendientes las recomendaciones que he recibido de cara a ir midiendo el rendimiento del código JavaScript, voy a tratar de continuar con los problemas planteados por el Proyecto Euler.

En esta ocasión el enunciado es:

Cada nuevo termino en la secuencia de Fibonacci es generada agregando los dos términos previos. Comenzando con 1 y 2, los primeros 10 términos serán:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Encuentra la suma de todos los términos pares en una secuencia que no sobrepase los 4 millones.

Bueno, aquí ya va a tocar pensar un poco más, aunque tampoco es que el código requiera de muchas explicaciones:

function problema002() {
    var primero = 0;
    var segundo = 1;
    var siguiente = 1;
    var totalSuma = 0;
    while (siguiente < 4000000) {
        if (siguiente % 2 == 0) {
            totalSuma += siguiente;
        }
        siguiente = primero + segundo;
        primero = segundo;
        segundo = siguiente;
    }
    return totalSuma;
}

El resultado obtenido en esta ocasión es: 4.613.732.

Bueno, ya que no me he metido con temas de rendimiento, al menos ahora ya tengo acceso al portal del proyecto, y he preparado todo para ir publicando el código en GitHub:

https://github.com/tonirecio/projecteulerjs.git

Otro tema que quiero hacer antes de seguir es codificar las pruebas unitarias, ya se sabe, quizás no hace falta TDD, pero si no las hago ya… al final nunca se hacen! :(

0  

Microsoft vuelve a la carga con I App You

Hace unos pocos meses pudo participar en el primer I App You de Microsoft, y por qué no decirlo, ganarme una fantástica Xbox 360 desarrollando para Windows 8.

Pues nada, que para todos aquellos que os perdisteis la primera oportunidad, u os quedasteis con ganas de más, ya estáis tardando en desempolvar vuestras ideas para la tienda de Windows 8!

Toda la info aquí.

IAppYou

0  

Proyecto Euler: Solución al problema #1

Tras varios intentos infructuosos de registrarme en la página web del Proyecto Euler, y siguiendo a la espera de recibir el correo con la clave de activación, he hecho un poco de Bing y he dado con una página con todos los enunciados en español.

El problema: “Suma todos los números naturales menores que mil que sean múltiplos de 3 ó 5.” no se antoja complicado, pero sí que hacerlo tal cual con JavaScript puro, sin librerías adicionales, queda como algo tristón:

function problema001() {
	var totalSuma = 0;
	var cmpt;
	for (cmpt = 1; cmpt < 1000; cmpt++){
		if(cmpt % 3 == 0 || cmpt % 5 == 0) {
			totalSuma += cmpt;
		}
	}
	document.write(totalSuma);
}

A mí me ha dado 233.168, pero admito que tengo un poco la sensación de cuando en baloncesto te vas solo y tienes que hacer una entrada fácil… todos los ojos encima de tus hombros, sabiendo que nadie espera que vayas a fallar un balón tan sencillo… XD

Supongo que lo suyo sería algo de refactorización, pero realmente ya en el primer ejercicio encuentro a faltar alguna cosa en mi bagaje con JavaScript, como por ejemplo alguna herramienta de profiling que me permita evaluar el rendimiento de mi código. Entiendo que será un tema complicado, dado que el sandbox en el que se ejecuta mi código no facilita el trabajo, e incluso, puede que dependa del navegador empleado. En todo caso, voy a hacer un poco de investigación para ver que puedo sacar en claro respecto a este tema, sobre todo pensando en problemas más complejos

Pese a todo, mientras no encuentro nada, haré una segunda propuesta, tirando en esta ocasión de recursividad, con la esperanza de rascar algún ciclo de reloj que otro:

function problema001rec(cmpt, totalSuma) {
	if (cmpt == 1000)
	{
		document.write(totalSuma);
	}
	else
	{
		if(cmpt % 3 == 0 || cmpt % 5 == 0) {
			problema001rec(cmpt + 1, totalSuma + cmpt);
		}
		else {
			problema001rec(cmpt + 1, totalSuma);
		}
	}
}

Obviamente la función anterior la llamaríamos del siguiente modo:

problema001rec(1, 0)

Pues nada, me llevo deberes ¿alguna sugerencia?

4  

El síndrome Gallina McFly

Gallina McFlyEra un domingo 17 de Enero de 2010 cuando escribía por última vez una publicación en mi blog, y tiempo después, decidía cerrarlo por aquello de tener un mínimo de vergüenza, básicamente porque el vestuario de Tarzán tenía más actualizaciones.

Pasado el tiempo, y con un retoño más en casa (Aina se ha sumado a Albert),  en parte porque ya me rondaba por la cabeza y en parte porque sufro el mal de Gallina McFly,  no pude resistirme al guante que por Twitter me lanzaron Quique Martínez (@quiqu3), Alex Casquete (@acasquete) y Eduard Tomás (@eiximenis), y miraré de sacar algo de tiempo, de dónde no lo hay, para ir resolviendo los problemas planteados en el Juego de Euler. Para ello me armaré de mi tan odiado JavaScript, con el que últimamente ando reconciliándome después de aquellos proyectos malditos a finales de los noventa.

¿Propósitos añadidos? Pues hablar como no de los dos temas  que últimamente me atrapan más, Windows 8 y Kinect, y ya que ambos lo propician, algo de desarrollo de videojuegos, el motivo por el que empecé en esto de la programación y que algo dentro de mí se niega a abandonar.

Pues nada, que para bien o para mal, he vuelto, aunque todavía no sé si del pasado o del futuro. 😉

0