Viendo este vídeo dan ganas de ponerse a simular el big bang en el PC (bueno, sólo si eres un poco friki)
domingo, 29 de enero de 2012
martes, 24 de enero de 2012
Vídeo: Sirope cayendo sobre cinta transportadora
Muy interesante este vídeo en el que se ve un fluido viscoso (sirope) cayendo sobre una cinta transportadora que cada vez va disminuyendo más su velocidad. Al principio, cuando la cinta va suficientemente rápido, el sirope cae en una línea recta. Pero cuando la cinta va decelerando, el sirope comienza a hacer zig-zags, círculos en sentidos inversos, etc.
Es muy difícil predecir el comportamiento de este tipo de líquidos viscosos, aún conociendo todas sus características físicas.
Más información sobre fluidos viscosos (newtonianos) aquí.
Visto aquí.
Es muy difícil predecir el comportamiento de este tipo de líquidos viscosos, aún conociendo todas sus características físicas.
Más información sobre fluidos viscosos (newtonianos) aquí.
Visto aquí.
miércoles, 18 de enero de 2012
Vídeo: Un año viajando por todo el mundo
sábado, 14 de enero de 2012
Vídeo: ¿Respirando bajo el agua en una piscina?
Esa es la impresión que da viendo el vídeo de esta piscina falsa instalada en el museo japonés de arte contemporáneo de Kanazawa.
En realidad sólo hay una película de agua de 10cm, pero visto desde arriba parece que la piscina estuviese llena y la gente estuviese campando tan tranquila bajo el agua.
El vídeo:
Visto aquí.
En realidad sólo hay una película de agua de 10cm, pero visto desde arriba parece que la piscina estuviese llena y la gente estuviese campando tan tranquila bajo el agua.
El vídeo:
Visto aquí.
martes, 10 de enero de 2012
Selección de Noticias - 10012012
Aquí está la primera selección de noticias del 2012, clasificadas por temas.
eAdministración:
eAdministración:
- 5 provocaciones para un debate sobre open data
- Lágrimas políticas
- 2012 no será el año del opendata
- Directivos públicos: ¿políticos o funcionarios?
- LinEx, despedida y cierre
- Un millón de dólares en doce días: el caso Louis C.K.
- Ahora más que nunca: manual de desobediencia a la ley Sinde
- Desaparece GNU/LinEx
- El Gobierno Vasco dona 11.000 artículos a la Wikipedia
- ¿Cómo tendría que ser el “Facebook” de los Indignados?
- Se aprueba la regulación de la Ley Sinde y se suprime el Canon Digital
- Estados Unidos instó al gobierno entrante para aplicar la Ley Sinde con urgencia
- Rusia también se apunta a GNU/Linux
- Pablo Soto y el triunfo de la lógica
- Nuevo paquete de medidas Open Data de la Comisión Europea
- 'La Comisión Europea da a conocer su estrategia Open Data'
- ¿Un CIO para la AGE?
- Warning of three deadly mistakes of the Open Spanish community
- España: Zapatero frenó la Ley Sinde por el contundente rechazo de los internautas
- La artista Simona Levi augura una nueva ley Sinde e invita a los creadores a reaccionar
- El lobbista que no sabía contar
- Open Source y Open Data unen sus fuerzas, ya solo falta Open Attitude
- #ogov es integrarse en los foros de los ciudadanos
- Romanones y la #transparencia
- France Launches Data Portal
- Data.gov In a Box
- Organización e innovación en el servicio web del Gobierno vasco
- Un gobierno en funciones no puede aprobar hoy la ley Sinde
- Internet vuelve a levantarse contra la ley Sinde
- Un AR Drone con seguimiento visual de colores
- Netflix y Europa: cuando un modelo de streaming se enfrenta a los reinos de taifas
- Un hotel de 30 plantas construido en sólo 360 horas
- 3D sin gafas, baterías que duran una semana... y otras promesas tecnológicas de 2012
- Google pagará una millonada a Mozilla para seguir como buscador en Firefox
- Google Zeitgeist 2011, lo más buscado del año en España
- QD-TV: la tecnología de puntos cuánticos que jubilará a las televisiones LED
- Platlas una guía interactiva de Facebook
- TIME Person of the Year 2011: the protester
- La cámara del billón de fotogramas por segundo es capaz de captar las ondas de luz
- Aldebarán presenta la nueva versión del robot Nao
- Arduino, el documental
- Madrid tendrá un espacio público en honor a Steve Jobs
- Gobierno de Siria prohíbe al iPhone
- Un 'software' espía incluido en millones de móviles desata la polémica en Estados Unidos
- ¿Qué son los neutrinos? Explicación para niños de cuatro años
- Gente que tiene el superpoder del «oído absoluto»
- Las 10 imágenes de ciencia más sorprendentes de 2011
- 10 grandes momentos científicos de 2011
- Misterioso objeto metálico cae del cielo en medio de Namibia
- Astrónomos aseguran que la Tierra tiene una segunda Luna (y más)
- Logran simular el Big Bang a través de la Teoría de Cuerdas en un superordenador
- La Singularidad no está cerca, según Paul Allen
- EEUU pide a Science y Nature no publicar la última investigación por temor a un ataque terrorista
- CB(3P): identifican una nueva partícula en el LHC
- Asombroso encuentro con un grupo de Gorilas de Montaña en Uganda
- Zoom al agujero negro del centro de la Vía Láctea
- Un gran paso para el pez pulmonado
- Consiguen deducir la estructura de las proteínas
- Un mundo distante que parece demasiado duro para la vida
- La NASA planea enviar misiones a una luna de Júpiter
- Así es el primer milisegundo de una explosión nuclear
- Los científicos, a punto de encontrar la Fuerza
- El telescopio espacial Kepler encuentra un planeta que podría tener agua líquida
- Inteligencia Artificial: 10 sorprendentes avances de 2011
- Matemático logra explicar la rotación de las galaxias con cálculos sin necesidad de materia oscura
- La carrera más pequeña creada jamás
- Los mamuts estarían de nuevo en la Tierra en 5 años
- The Apache Software Foundation Announces Apache Hadoop™ v1.0
- Software libre: los 10 más importantes de 2011
- Codecademy, aprendiendo a programar
- Facebook busca, de nuevo, al mejor 'hacker' del mundo
- Local Storage y Session Storage en HTML5
- Video de la charla "Introducción Apache Hadoop"
- El verdadero coste de los bloques try/catch
- La Navidad en números primos
- Black Mirror: una serie que hay que ver, aunque solo sea por los detalles tecnológicos que rodean a las historias
- ¿Cuánto tiempo tarda una víctima de la mafia en disolverse en ácido sulfúrico?
- Aunque lo parezca, esto no es un moco electrónico
- Un mini MacBook Air de bolsillo, el espejito de las Applefans más coquetas
- ¡Ríndete ya al colesterol! Llega la máquina automática de hacer mini Donuts
- La interfaz de los coches del futuro
- Los magníficos dibujos de Daniel James Cox
- La secuencia de inicio de “En busca del arca perdida” más animada que has visto nunca
- Colección de 200 de los vídeos virales más vistos en 2011
- Time-Lapse del tráfico en la ciudad vietnamita de Ho Chi Minh
- Cuadricópteros construyendo una torre de seis metros, ladrillo a ladrillo
- Los almacenes de Amazon
- Los divertidos toboganes de rodillos de los parques públicos japoneses
- El accidente de tráfico más caro del mundo
domingo, 1 de enero de 2012
Resumen del 2011 y objetivos para el 2012
Antes de nada quisiera desearos a todos un muy feliz año nuevo, lleno de buenos momentos, felicidad y salud.
Como cada año, escribo este post a modo de resumen de lo acontecido en el blog durante el 2011. Así, durante este año se han introducido algunas modificaciones en el blog:
Feliz Año.
Como cada año, escribo este post a modo de resumen de lo acontecido en el blog durante el 2011. Así, durante este año se han introducido algunas modificaciones en el blog:
- Posibilidad de Suscripción por Correo Electrónico, para poder recibir todas las entradas del blog por eMail cada vez que se publican.
- Añadido un botón para seguirme en twitter (@truesaeta).
- Incluida una nube de etiquetas para hacer más fácil la búsqueda de los posts por una temática concreta.
- He publicado un total de 115 entradas, la mayoría sobre tecnología y administración pública.
- Durante este año, el blog ha recibido un total de 33048 páginas vistas, agrupadas en 23910 visitas, distribuidas bastante uniformemente en el tiempo, según se muestra en el siguiente gráfico:
- Las visitas se han distribuido por país de origen según se muestra en esta tabla:
- El feed RSS se ha mantenido con una media de 500 suscriptores, unos 490 de media en la primera mitad del año, y 510 en la segunda.
- ¿Qué son las Bases de Datos NoSQL?
- Mi primer análisis forense: recuperando fotos borradas de un iPhone
- Vídeo: Echando agua hirviendo al aire cuando hace mucho frío
- ¿Cómo miden su velocidad los aviones?
- Ranking de las 100 empresas de TI que más facturan en España
- Conclusiones del primer día en el Spring I/O 2011
- Más imágenes tomadas con el microscopio
- Vídeo: Tareas cotidianas hechas mucho más rápido
- Seguir publicando contenidos que os resulten interesantes, sacar tiempo de donde sea para mantener vivo este blog que ya tiene dos años y medio de vida. Me encantaría llegar a los 1000 suscriptores entre el feed RSS y las suscripciones por eMail, y durante el 2012 superar el límite de las 100.000 visitas.
- Tratar de escribir un libro sobre introducción a la programación en lenguaje Java, organizando y ampliando los contenidos de la asignatura de Programación que imparto.
- Seguir aprendiendo Chino Mandarín.
Feliz Año.
viernes, 23 de diciembre de 2011
Artículo: ¿Qué es la recursividad?
¿Qué es la recursividad?
En ocasiones nos encontramos con problemas aparentemente complejos de resolver programando al estilo “tradicional”, es decir utilizando bucles para repetir un código hasta que se cumpla una condición. Esta forma de programar se denomina programación iterativa, y como digo no siempre es la mejor para resolver cierto tipo de problemas.
En contraposición a la programación iterativa surge la denominada recursividad o programación recursiva, que consiste en aplicar al mundo de la programación la famosa frase de Julio Cesar "Divide et vinces" – Divide y Vencerás. La programación recursiva a menudo ofrece soluciones elegantes a problemas difíciles de resolver de otro modo, descomponiendo dichos problemas en otros más sencillos.
Una función recursiva (o método recursivo) es aquella que contiene invocaciones a sí misma, de manera que el problema se va descomponiendo en sub-problemas más fáciles de resolver. Así, una llamada a una función recursiva puede generar una o más invocaciones a la misma función, que a su vez genera otras llamadas, y así sucesivamente hasta llegar a lo que se denomina el caso base. El caso base es un problema tan básico que la función sabe resolver sin necesidad de volver a invocarse a sí misma.
Una función recursiva debe cumplir las siguientes condiciones:
- Asegurarse de que existe una condición de salida, en la que no se producen llamadas recursivas (el caso base).
- Asegurarse de que se cubren todos los posibles casos entre el caso base y los no-base.
- Cada llamada, si se trata de un caso no-base, conduce a problemas cada vez más pequeños que terminarán en el caso base.
Como la definición de una función recursiva puede resultar complicada de comprender, vamos a ilustrarlo con unos ejemplos para tratar de entenderlo mejor.
Cálculo del Factorial de un Número
Un ejemplo de algoritmo recursivo es el cálculo del factorial de un número. El factorial de un número es el resultado del producto de todos los números inferiores o iguales a él, empezando por el 1. Por ejemplo, el factorial de 4 (que se escribe 4!) es 3*2*1 = 6. Así, la definición recursiva del factorial podría estar compuesta por dos puntos:
El primer punto dice que el factorial de un número no es más que el mismo número multiplicado por el factorial de su número predecesor (el número menos uno). El segundo punto es el caso base, que dice que el factorial de uno es uno.
A continuación se muestra el código en Java de una función que es capaz de calcular el factorial de un número de manera recursiva (llamándose a sí mismo hasta llegar al caso base):
En el código anterior se puede ver cómo la función factorial se llama a sí misma con el número anterior al que se le ha enviado (línea 10), a no ser que el número sea uno, en cuyo caso se devuelve uno (línea 8). Así, se van produciendo sucesivas invocaciones a la función hasta llegar al caso base.
Las Torres de Hanoi
Otro ejemplo clásico de algoritmo recursivo es la resolución del problema de Las Torres de Hanoi. Se trata de un rompecabezas inventado en 1883 por el matemático francés Éduard Lucas, que consiste en pasar una serie de discos de diferentes tamaños de una barra vertical situada a la izquierda a otra barra vertical situada a la derecha. Para ello se puede utilizar una barra auxiliar situada en el centro de las otras dos, con la única restricción de que nunca un disco de menor tamaño puede quedar por
Si pensamos en cómo resolveríamos este problema con un ordenador, la solución iterativa no es nada fácil de implementar. Sin embargo, una solución recursiva puede programarse con pocas líneas de código, según se muestra en la siguiente figura:
Fijándonos en el código, podemos ver como la función mover tiene dos llamadas recursivas. El caso base es cuando ya no hay que mover ningún disco, y cualquier caso no-base realiza tres pasos:
- Mueve todas las piezas menos una a la barra temporal
- Mueve la pieza que queda a la barra destino
- Mueve todas las piezas que movió a la barra temporal a la barra destino
Con este sencillo algoritmo somos capaces de resolver un problema tan complejo como las torres de Hanoi con pocas líneas de código. La salida del programa para una torre de Hanoi de cuatro discos (aunque funciona para cualquier número) es la siguiente:
Backtracking: Cuando recursividad y fuerza bruta van de la mano
El backtracking, también conocido como “vuelta atrás”, es una técnica algorítmica de resolución de problemas mediante una búsqueda sistemática de soluciones. El backtracking hace uso de la recursividad para descomponer la tarea a realizar en tareas parciales, y probar cada una de estas. Cuando al elegir una tarea se comprueba que no lleva a ninguna solución, se debe volver atrás, y probar con otra. Así, se van probando sistemáticamente posibles soluciones al problema hasta que se encuentra una que lo resuelve.
Ejemplo de Backtracking: Resolviendo Laberintos
Un ejemplo de problema fácilmente resoluble con backtracking (y difícil sin métodos recursivos) es el encontrar la salida a un laberinto. El algoritmo básicamente funciona así:
- Comprobamos si la casilla donde estamos actualmente ya es la salida, y si es así, salimos de la función indicando que se ha encontrado la casilla de salida.
- Si no es así, entonces llamamos recursivamente a esta misma función con la casilla de arriba de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
- Si no se encontró la salida por arriba, entonces llamamos recursivamente a esta misma función con la casilla de abajo de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
- Si no se encontró la salida por abajo, entonces llamamos recursivamente a esta misma función con la casilla de la izquierda de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
- Si no se encontró la salida por la izquierda, entonces llamamos recursivamente a esta misma función con la casilla de la derecha de la actual, y si ahí se encuentra la salida, salimos de la función indicando que se ha encontrado la salida del laberinto.
- Si no se encontró la salida por ninguna de las cuatro casillas colindantes, entonces salimos de la función indicando que no existe salida del laberinto por la casilla actual.
A continuación se muestra el código del algoritmo de resolución de laberintos:
Parece increíble que con estas pocas líneas de código se pueda encontrar la salida de cualquier laberinto, independientemente de su complejidad (aunque no se asegura que sea la salida más corta). Al ejecutar el programa, obtenemos la salida del laberinto de ejemplo:
Otro Ejemplo de Backtracking: Resolviendo Sudokus
Otro clásico ejemplo para ilustrar el uso del backtracking es un programa que resuelve sudokus utilizando esta técnica. El algoritmo funciona básicamente así:
- Elegir la primera casilla vacía, empezando a buscar desde la casilla superior izquierda.
- Probar a colocar el número 1 en esa casilla, y ver si no existe ningún conflicto (no existe ningún número igual en la misma fila, columna o bloque):
- Si existe un conflicto, volver al paso 2) y probar con el siguiente número
- Si no existe ningún conflicto, llamar recursivamente al paso 1) para ver si se encuentra una solución:
- Si no se encuentra, y hay más números para probar, volver al paso 2) y probar con el siguiente número.
- Si no se encuentra y no hay más números para probar, salir de la función indicando que no se ha encontrado solución.
- Si se encuentra, salir de la función indicando que si se ha encontrado solución.
Al ejecutar el programa con el Sudoku de ejemplo se obtiene la solución en pocos segundos:
Suscribirse a:
Entradas (Atom)
















