VERSION ACTUAL :

Inicio de sesión

Raulito el Friki

Raulito El Friki

COMENTARIOS

EN LINEA

Hay actualmente 0 usuarios conectados.

NUEVOS

  • Pere Ferrés Pons
  • fransmith
  • sway92
  • jairo
  • morita77

Agregador de canales de noticias

“Amazing Grace”, nuevo artículo en “El Aleph”

Gaussianos - Vie, 10/07/2016 - 05:30

El pasado miércoles 5 de octubre publiqué un nuevo artículo en El Aleph, mi blog de matemáticas en El País. En él escribo sobre Amazing Grace.

Amazing Grace

El 1 de enero de 1992, a la edad de 85 años, nos dejaba para siempre Grace Murray Hopper, matemática e informática estadounidense. Es posible que a muchos no les suene este nombre, pero la gran mayoría (por no decir todos) usamos a diario aplicaciones cuyo germen está en trabajos de Amazing Grace.

Os dejo también el enlace a la página de Gaussianos en la que voy recopilando todos los artículos que he publicado en El Aleph, por si os habéis perdido alguno y queréis leerlo. Como sabéis, el día de publicación habitual es el miércoles. Muchas gracias a todos.

¿Qué es ser rico?

Jose Salgado - Jue, 10/06/2016 - 17:51

Mira que se han escrito ríos de tinta al respecto de que es ser rico, a partir de cuándo una persona salta de clase social y se convierte en esa parte de la élite de millonarios, de personas ricas. Supongo que tantas hay cifras como culos, unos dirán poder comprarse la casa de sus sueños, otros viajar, vamos, que la casuística es tan grande que los que llevan la cuenta de publicidad de Lotería tienen tema hasta cansarse.

Comunidad: Management

Tags: Rico, Dinero, Tiempo

Esta entrada ha aparecido en Exelisis, haz click para leer ¿Qué es ser rico?

Carnaval de Matemáticas: Resumen de la Edición 7.6: “La banda de Möbius”

Gaussianos - Jue, 10/06/2016 - 10:40

Hoy jueves os traigo el resumen de la Edición 7.6: “La banda de Möbius” del Carnaval de Matemáticas. Sin más dilación, vamos con el listado de entradas que participan en esta edición.

0. Edición 7.6 “La banda de Möbius” del Carnaval de Matemáticas.

1. El Mengenlehreuhr: existencia y unicidad.

2. La geometría y el universo.

3. ¡¡¡Abajo Apolonio!!!.

4. Producto de lados y diagonales.

5. Particiones de n en tres partes.

6. Los Bernoulli anda a la gresca.

7. Georg Cantor y la apeirofobia.

8. “En busca de la caja perfecta”, nuevo artículo en “El Aleph”.

9. El asesinato de Pitágoras.

10. “Debo confesar que nací a una edad muy temprana”.

11. De Tales a Pitágoras en la esquina de una página.

12. El calendario 2017 de las funciones complejas.

13. Nuevo récord de dígitos para una pareja de primos gemelos (Septiembre de 2016).

14. The Scottish Book [Naukas Bilbao 2016].

Si alguien ve que alguna de sus aportaciones no aparece aquí, que me lo diga a través de un comentario y la añado a este listado.

A partir del mismo momento en el que se publica esta entrada, podéis votar a las tres aportaciones al Carnaval que más os hayan gustado. Como siempre, tendréis que asignar 4 puntos, 2 puntos y 1 punto a las tres entradas que penséis que más lo merecen. Tenéis hasta el 16 de octubre de 2016 para votar. Como ya no vamos a usar la antigua web del Carnaval, no hace falta que dejéis enlace de vuestro perfil en el comentario con vuestros votos.

Muchas gracias a todos.

Cuando apagas la luz

Jose Salgado - Jue, 10/06/2016 - 06:48

Creo que desde tengo uso de razón escribo, antes era un diario íntimo porque esto de internet no estaba ni se le esperaba, y era interesante ver como cada noche antes de irse a dormir se hacía repaso de todo lo que había ocurrido durante el día. Era una especie de exámenes de conciencia que te ayudaba a ver dónde te equivocabas, dónde podías mejorar y la mayoral de las veces, no veía nada y me ponía a escribir historias para desconectar de mi realidad y de paso reírme un rato con mis ocurrencias.

Comunidad: Management

Tags: Resumen, Repaso, Conciencia, Tranquilidad

Esta entrada ha aparecido en Exelisis, haz click para leer Cuando apagas la luz

Cuando apagas la luz

Jose Salgado - Jue, 10/06/2016 - 06:48

Creo que desde tengo uso de razón escribo, antes era un diario íntimo porque esto de internet no estaba ni se le esperaba, y era interesante ver como cada noche antes de irse a dormir se hacía repaso de todo lo que había ocurrido durante el día. Era una especie de exámenes de conciencia que te ayudaba a ver dónde te equivocabas, dónde podías mejorar y la mayoral de las veces, no veía nada y me ponía a escribir historias para desconectar de mi realidad y de paso reírme un rato con mis ocurrencias.

Comunidad: Management

Tags: Resumen, Repaso, Conciencia, Tranquilidad

Esta entrada ha aparecido en Exelisis, haz click para leer Cuando apagas la luz

La vida es lo que ocurre mientras haces otros planes

Jose Salgado - Mié, 10/05/2016 - 13:42

Clapton es Dios[1], incluso si una enfermedad[2] le impide seguir tocando la guitarra, pero sin duda alguna el mejor Lucifer[3] que podría tener sería John Lennon. No solo es un extraordinario compositor sino que poseía una capacidad crítica importante por no mencionar su facilidad para crear eslóganes que durarían décadas, entre ellos el que sirve de título a este post.

Comunidad: El 14

Tags: Planes, Aceptación, Adaptación

Esta entrada ha aparecido en Exelisis, haz click para leer La vida es lo que ocurre mientras haces otros planes

Si utilizas Fedora 24, no actualices desde ningún entorno gráfico usando dnf

El blog de Iyan - Mar, 10/04/2016 - 18:24
Fedora 24 Bug

El aviso llegó ayer de forma más o menos oficial por las listas de correo de Fedora a través de Adam Williamson, colaborador en el proyecto Fedora QA –proyecto encargado de asegurar la calidad de Fedora–. Poco después se empezó a publicar en medios especializados como Phoronix. De forma resumida, si utilizas Fedora 24 no ejecutes dnf update dentro de Gnome, KDE o cualquier otro entorno gráfico.

Lo que causó que saltaran todas las alarmas en Fedora fueron los numerosos reportes de usuarios de Fedora 24 con errores relacionados con paquetes duplicados o actualizaciones del kernel. Lo que parece que está ocurriendo, aunque aún no se sabe con certeza, es que el comando para actualizar el sistema —dnf update— causa que Gnome o el servidor gráfico X se cuelgue. Cuando esto ocurre, el proceso de actualización se corta y no termina limpiamente, siendo esta la causa de los errores de paquetes duplicados y demás resultados extraños.

Un equipo ya está investigando para tratar de dar con el origen de este bug y seguramente en unas horas se publique una solución. De momento, la recomendación es muy clara: no ejecutar dnf update desde dentro de un entorno gráfico. Es muy posible que este fallo no afecte a todos los usuarios de Fedora 24, sino que únicamente ocurra con cierto hardware presente o incluso se deba a la presencia de algún paquete muy concreto de los repositorios y que haya sido instalado.

Actualiza Fedora 24 de forma segura

Utilices Gnome o KDE, o cualquier otro entorno gráfico, hasta que no se aclare bajo que condiciones se “activa” este bug, lo mejor es que sigas el siguiente procedimiento para actualizar tu sistema.

  1. Cámbiate a una consola virtual –VC de Virtual Console en la documentación de Fedora– pulsando Ctrl + Alt + F3.
  2. Inicia sesión con tu usuario y contraseña en esa VC.
  3. Actualiza el sistema con sudo dnf update.
  4. Vuelve al entorno gráfico pulsando ctrl + alt + f1.

De esta forma se minimizan los riesgos al máximo. Nadie ha reportado ningún problema actualizando el sistema de esta forma. Estad atentos de todas formas a las listas de correo de Fedora (en especial la dedicada a temas de desarrollo), los blogs especializados sobre Fedora o incluso a la comunidad de Google+ para estar al tanto de cómo avanza este problema.

Si utilizas Fedora 24, no actualices desde ningún entorno gráfico usando dnf

El blog de Iyan - Mar, 10/04/2016 - 18:24

El aviso llegó ayer de forma más o menos oficial por las listas de correo de Fedora a través de Adam Williamson, colaborador en el proyecto Fedora QA –proyecto encargado de asegurar la calidad de Fedora–. Poco después se empezó a publicar en medios especializados como Phoronix. De forma resumida, si utilizas Fedora 24 no ejecutes dnf update dentro de Gnome, KDE o cualquier otro entorno gráfico.

Lo que causó que saltaran todas las alarmas en Fedora fueron los numerosos reportes de usuarios de Fedora 24 con errores relacionados con paquetes duplicados o actualizaciones del kernel. Lo que parece que está ocurriendo, aunque aún no se sabe con certeza, es que el comando para actualizar el sistema —dnf update— causa que Gnome o el servidor gráfico X se cuelgue. Cuando esto ocurre, el proceso de actualización se corta y no termina limpiamente, siendo esta la causa de los errores de paquetes duplicados y demás resultados extraños.

Un equipo ya está investigando para tratar de dar con el origen de este bug y seguramente en unas horas se publique una solución. De momento, la recomendación es muy clara: no ejecutar dnf update desde dentro de un entorno gráfico. Es muy posible que este fallo no afecte a todos los usuarios de Fedora 24, sino que únicamente ocurra con cierto hardware presente o incluso se deba a la presencia de algún paquete muy concreto de los repositorios y que haya sido instalado.

Actualiza Fedora 24 de forma segura

Utilices Gnome o KDE, o cualquier otro entorno gráfico, hasta que no se aclare bajo que condiciones se “activa” este bug, lo mejor es que sigas el siguiente procedimiento para actualizar tu sistema.

  1. Cámbiate a una consola virtual –VC de Virtual Console en la documentación de Fedora– pulsando Ctrl + Alt + F3.
  2. Inicia sesión con tu usuario y contraseña en esa VC.
  3. Actualiza el sistema con sudo dnf update.
  4. Vuelve al entorno gráfico pulsando ctrl + alt + f1.

De esta forma se minimizan los riesgos al máximo. Nadie ha reportado ningún problema actualizando el sistema de esta forma. Estad atentos de todas formas a las listas de correo de Fedora (en especial la dedicada a temas de desarrollo), los blogs especializados sobre Fedora o incluso a la comunidad de Google+ para estar al tanto de cómo avanza este problema.

Plasma 5.8 LTS: un regalo de KDE para toda su comunidad

El blog de Iyan - Mar, 10/04/2016 - 11:14

Quedan 10 días para que KDE, la comunidad detrás del entorno de escritorio Plasma, celebre su 20 cumpleaños. Y que mejor noticia para celebrarlo, que la liberación de una versión con 18 meses de soporte. ¡Dad la bienvenida a Plasma 5.8 LTS!

Esta nueva versión es el resultado de muchos meses de trabajo y la primera versión LTS tras la migración a qt5 y el lanzamiento de Plasma 5.0 hace ya más de dos años.

Si en su día probaste alguna versión de Plasma 5 y decidiste volver al viejo entorno KDE SC 4.x LTS por algún motivo, este es un momento perfecto para darle una nueva oportunidad al entorno de escritorio más moderno de KDE. Plasma 5.8 LTS deja atrás los problemas de inestabilidad de los primeros lanzamientos de Plasma 5 –habituales, por otra parte, en actualizaciones tan extensas (recordad el paso de KDE 3.5 a 4.0 o el de Gnome 2.32 a Gnome 3.0)–, recupera prácticamente todas las funcionalidades perdidas tras el salto a qt5 y ofrece una experiencia de usuario completa, unificada y muy agradable.

Chakra Plasma 5.8 LTS

Podéis leer todas las novedades de Plasma 5.8 LTS en el anuncio oficial o también seguir el blog de Baltasar Ortega KDE Blog, donde seguramente en nada empiece a publicar largo y tendido sobre esta nueva versión. Aprovecho también para pediros que estéis atentos a este blog y a la página oficial de Chakra Linux. En muy pocos días estará disponible una nueva imagen con Plasma 5.8 LTS y muchas más novedades.

Primeras Clasificaciones Parciales de los Premios Bitácoras 2016

Gaussianos - Mar, 10/04/2016 - 10:45

Como ya os comenté hace unos días, estamos dentro del proceso de votación de los Premios Bitácoras 2016, en los que Gaussianos participa en la categoría Mejor Blog de Educación y Ciencia. Y, como otros años, tengo pensado ir mostrando por aquí las clasificaciones parciales que se vayan publicando.

Ayer lunes, 3 de octubre de 2016, se publicaron las Primeras Clasificaciones Parciales en “Educación y Ciencia”, y en ellas Gaussianos marcha en undécima posición. Aquí tenéis una captura con los primeros 15 clasificados en dicha categoría:

La verdad es que, viendo cómo ha comenzado la cosa, va a ser complicado entrar entre los tres primeros, que serán los finalistas de esta edición en nuestra categoría. Pero lo vamos a intentar, y para ello necesito vuestra ayuda.

Gaussianos necesita vuestros votos, es sólo un minutito y me haréis un gran favor. Si tenéis cuenta en bitacoras.com, simplemente tenéis que identificaros y hacer click en la siguiente imagen:

Iréis directamente a las votaciones y os saldrá escrito mi blog en la categoría que le corresponde. Bajáis, hacéis click en Votar y listo.

Si no tenéis cuenta, podéis votar usando vuestra cuenta de Twitter o Facebook. Vais a bitacoras.com, os identificáis con cualquiera de vuestras cuentas (veréis los iconos correspondientes arriba a la derecha en dicha página) y vais a la sección de los premios y luego a votar, o hacéis click también en la imagen que os he puesto antes.

De todas formas, si tenéis alguna duda sobre cómo votar podéis consultar estas instrucciones que dejé hace unos días, o preguntarme a mí directamente, ya sea a través de un comentario en el blog o mediante el formulario de contacto de Gaussianos.

Como siempre, muchísimas gracias a todos.

4 hábitos para una vida más creativa

Gino Alania - Mar, 10/04/2016 - 10:31

La idea de que todos podemos ser creativos surgió recién a comienzos del siglo XX, y las primeras investigaciones científicas sobre el tema comenzaron en la década de 1950.

Hoy sabemos que es posible
desarrollar y potenciar nuestra Creatividad
practicando y adquiriendo algunos hábitos:

Hábito 1) Aprender a hacer algo nuevo

Ubicarnos en el rol de aprendices nos lleva a formularnos nuevas preguntas y tener que superar desafíos inéditos, lo cual desarrolla y estimula nuestra Creatividad.
Hasta hace unos años este hábito requería tener mucho tiempo disponible para tomar cursos o investigar en una biblioteca. Ahora tenemos acceso inmediato a videos, entrenamientos y libros para aprender prácticamente cualquier cosa a nuestro ritmo, en forma gratuita o con un costo mínimo.

Hábito 2) Salir a pasear

Distanciarnos de nuestros
problemas y desafíos cotidianos nos ayuda a ser más creativos.
Ya el simple hecho de movernos para caminar o hacer algún deporte lleva sangre con más oxígeno a nuestro cerebro, y cambiar de ambiente estimula la actividad del hemisferio derecho --el del pensamiento creativo, la intuición y el reconocimiento de las emociones.

Hábito 3) Convertir algunas ideas en“experimentos”

Siempre que sea posible, tratar de seleccionar algunas de nuestras ideas para llevarlas al mundo real a través de experimentos de alto aprendizaje y bajo riesgo que nos permitan explorar si esas ideas son o no viables.
Cada experimento deberá tener: hipótesis, resultado esperado, métricas y vencimiento.

Hábito 4) Trabajar en equipo y con gente que piense distinto

El refrán africano que dice: “Si quieres ir cerca, ve solo . . . pero si quieres llegar lejos ve acompañado” aplica al desarrollo de nuestra creatividad.
Buscar activamente actividades de co-creación con otras personas es un factor clave para ser más creativos, y lo es todavía más cuando algunas de esas personas perciben, sienten y piensan bien diferente a nosotros.

Como cierre te propongo que selecciones uno de estos hábitos sobre la base del que más te atraiga o te parezca más útil para tu presente, y pruebes ponerlo en práctica durante las próximas dos semanas.
Pasado ese tiempo te invito a que dejes un comentario con tu experiencia. Gracias!

Programación recursiva con Python

El blog de Iyan - Mar, 10/04/2016 - 09:21

Supongo que a todos nos han dicho alguna vez, seguramente durante el paso por el colegio, que no se puede definir algo en términos de sí mismo. Esta norma está muy bien para definir conceptos o palabras ya que, de caer en este error, estaríamos tratando de explicar algo nuevo en términos de algo desconocido. Sin embargo, en matemáticas puede ser muy útil, e incluso elegante, definir problemas de forma recurrente. Lo mismo ocurre a la hora de programar. La programación iterativa está mucho más extendida que la recursiva (¿quizás por motivos de eficiencia?) y, sin embargo, esta última puede ayudarnos a simplificar y reducir el código.

Como os decía, es habitual en matemáticas definir problemas de forma recurrente. Podemos definir el factorial de un número n cualquiera como el producto de los número del 1 a n, esto es:

La alternativa recursiva o recurrente (¿son sinónimos?) sería la siguiente:

Es decir, estaríamos definiendo el factorial de un número n en términos del factorial de ese mismo número reducido una unidad. Bueno, vale, siendo rigurosos estas definiciones no son exactamente equivalentes. A la última habría que añadir que, por definición, el factorial de 1 es 1. Y a las dos les podríamos añadir también que el factorial de 0 es 1 (para la tranquilidad de algunos e indiferencia de muchos otros).

La condición extra que tuve que añadir a la segunda definición, lejos de ser un detalle sin importancia, va a ser clave cuando programemos recursivamente. La idea detrás de programar de esta forma es simplificar un problema en términos del mismo problema, pero más sencillo, hasta llegar a un caso base. En el caso del factorial, hasta llegar al factorial de 1.

Vamos a definir una función en Python que nos devuelva el factorial de un número. Pero vamos a definirla recursivamente con todo lo que mencioné hasta ahora.

def factorial(num): if num == 0 or num == 1: return 1 else: return num * factorial(num - 1)

Salvo en los casos base, cuando num vale 0 o 1, el primer condicional no se cumplirá así que se avanzará hacia el código en else, donde la función devolverá el producto de num por (¡sorpresa!) factorial(num - 1), una llamada a la función que estamos definiendo. Imaginemos el caso en que num toma el valor 2. La segunda llamada a la función factorial sería con el valor 1, que es un caso base y devolvería el valor 1. Así que ya tendríamos el valor final, que sería 2 por 1. Para números mayores el razonamiento es el mismo. Podéis visualizar el funcionamiento de este código, paso a paso, para el caso en que num vale 5 utilizando Python Tutor.

Antes de pasar a otro ejemplo me gustaría aclarar un concepto muy importante en Python y otros lenguajes de programación: el ámbito o scope de las variables. Se define el scope de una variable como la parte del programa desde donde es accesible. Cuando definimos una variable en el cuerpo principal del programa decimos que se trata de una variable global, esto es, una variable que es accesible desde todos los lugares. Sin embargo, una variable definida dentro de una función es una variable local, y su scope se reduce a los límites de esa función. Además, cada vez que llamemos a una función se creará un scope independiente de los demás, que será “destruido” cuando la función termine de ejecutarse. Por si ya fuera poco lío, podemos forzar que una variable local sea global utilizando la keyword global delante de una variable.

Si habéis entendido bien todo esto deberías poder saber que número devuelve el siguiente código. Si tenéis dudas o no estáis seguros muy seguros, dejad un comentario.

x = 12 def g(x): x = x + 1 def h(y): return x + y return h(6) print(g(x))

Podéis leer mucho más sobre el scope y la vida de las variables en este detallado documento (en inglés) escrito por la Universidad de Cape Town.

Pasemos ahora a otro ejemplo muy interesante de programación recursiva en el que, en la propia definición de una función, llamamos no una, sino dos veces a la misma función que estamos definiendo. Además, aquí voy a escribir las dos versiones: la función iterativa y la función recursiva. La idea es escribir una función que devuelva el n-ésimo número de la sucesión de Fibonacci. Podéis leer en detalle sobre esta sucesión en la entrada de la Wikipedia, pero lo único que necesitáis saber es que los dos primeros elementos de la sucesión son 1 y los sucesivos elementos se obtienen sumando los valores de los dos elementos anteriores.

def fib_iter(n): fib = [1,1] while n > 2: fib.append(fib[-1]+fib[-2]) n -= 1 return fib[-1] def fib_recur(n): if n == 0 or n == 1: return 1 else: return fib_recur(n - 1) + fib_recur(n - 2)

Este ejemplo es perfecto para ver dos cosas. En primer lugar, que la programación recursiva es más fácil de leer, no hay bucles, ni tampoco tenemos que estar atentos a un contador y decidir cuándo salir del bucle, siempre en cuando hayamos definido bien los casos base, en este caso cuando n vale 0 o 1. En segundo lugar, que la programación recursiva puede ser tremendamente ineficiente si no tenemos cuidado. Si probáis a llamar a las dos funciones con valores pequeños de n no notaréis diferencias. Pero probad a ejecutar fib_recur(35). ¿Por qué tarda tanto mientras que fib_iter(35), por el contrario, parece instantáneo? Pues la diferencia es que el código iterativo recorrió el bucle 34 veces mientras que el código recursivo llamó a la función en 14930352 ocasiones. ¿A qué se debe esta ineficiencia? A que estamos calculando una y otra vez valores de la sucesión de Fibonacci que ya habíamos calculado previamente. En el siguiente diagrama marco en rojo los valores que estamos volviendo a calcular para el sencillo caso en el que n vale 5.

Diagrama algoritmo recursivo Fibonacci

Como podéis ver, para computar fib_recur(5) necesitamos fib_recur(4) y fib_recur(3). A su vez, para fib_recur(3) necesitamos fib_recur(2) y fib_recur(1). Etcétera, etcétera. Una vez conocemos fib_recur(4), no necesitaríamos nada más para obtener fib_recur(3) porque ya lo hemos calculado en pasos anteriores. Sin embargo, debido al modo en que hemos escrito la función, se volverán a calcular todos los elementos de la sucesión. En general, esto se soluciona implementado algún tipo de “memoria” a la función de forma que pueda recuperar resultados previos ya computados. En Python podemos hacer uso de los diccionarios. La función recursiva, ahora mucho más eficiente haciendo uso de un diccionario para recuperar cálculos previos, quedaría así:

def fib_recur(n, memoria={1:1, 2:1}): try: return memoria[n] except KeyError: memoria[n] = fib_recur(n-1) + fib_recur(n-2) return memoria[n]

Los casos base ahora están guardados en el diccionario en la variable memoria. Cuando se llama a la función, lo primero que intenta hacer es devolver el valor alojado en el diccionario. Si este elemento de la sucesión no ha sido calculado, la pareja clave:valor no existirá y entonces se ejecutará el código encerrado dentro del except. Aquí recuperamos el código anterior, salvo que ahora, en vez de devolverlo directamente, primero añadimos una pareja nueva al diccionario memoria. Con este algoritmo estamos evitando todas las casillas rojas del diagrama ineficiente anterior.

inception

¿Aún con dudas? ¿Te sientes igual de confuso que Robert Fischer en Inception? Tranquilo, como en todo, hay que acostumbrarse a esta nueva forma de pensar. Puedes leer más sobre programación recursiva en Python, con muchos más ejemplos y ejercicios planteados en uno de los capítulos del libro Python Practice Book de Anand Chitipothu. También es muy interesante el capítulo dedicado a ello en el libro How to Think Like a Computer Scientist, donde se pone especial énfasis en la generación de fractales utilizando técnicas de programación recursiva.

Por cierto, la imagen al principio de la entrada la generé utilizando uno de los curiosos “poemas” sobre recursión desarrollado por Greg Tatum y liberado bajo la licencia GPL v3. Podéis ver el código y probarlo en su página de github.

Soy lo que digo o soy lo que hago

Jose Salgado - Lun, 10/03/2016 - 23:28

Dicen que las palabras se las lleva el viento y que no hay nada más ilustrativo que una acción en vez de cientos de mensajes. Es algo que todos hemos oido, por sus actos los conoceréis o el más maquiavélico, haz lo que digo no lo que hago.

Comunidad: RRHH

Tags: Especialista, Generalista, Eslogan

Esta entrada ha aparecido en Exelisis, haz click para leer Soy lo que digo o soy lo que hago

Páginas

Suscribirse a Fedora-es sindicador