• Software 24.03.2019 Comentarios desactivados

    Vivobook S14 de Asus, el portátil ultradelgado para una mejor experiencia de uso Variedad de colores

  • Software 23.03.2019 Comentarios desactivados

    En los años 80 hubo un tipo de microordenador que se hizo muy popular, el ZX Spectrum. En este ordenador muchos carcas de la informática dimos nuestros primeros pasos. Ahora voy a ejercer de abuelo cebolleta y os voy a contar cómo funcionaba dicho aparato y cómo podéis simularlo en vuestro GNU Linux o en Android.

    Seguir leyendo…

  • Software 23.03.2019 Comentarios desactivados

    IA NVIDIA 1

    Los pinceles inteligentes son algo muy viejo en las aplicaciones de dibujo y fotografía, pero lo que acaba de presentar Nvidia va un poco más allá de generar trazos de carboncillo, estrellitas o flores. Se trata de una IA que genera paisajes realistas a partir de simples trazos.

     

     

    La herramienta aún es un mero prototipo, pero su funcionamiento es realmente llamativo. Lo que el usuario ve es una interfaz de dibujo muy simple con tres herramientas (pincel, lápiz y relleno). En la parte inferior hay una serie de botones con componentes típicos de un paisaje natural como lago, colinas, árboles, nieve, rocas o arena.

    Por debajo de esa interfaz hay una serie de algoritmos de inteligencia artificial formados por una red generativa antagónica (una IA que aprende una tarea determinada de manera similar a los seres humanos). La IA analiza las manchas de color que vamos dibujando y las convierte en texturas naturales convincentes a partir de imágenes proporcionadas por sus creadores.

    La herramienta tiene sus limitaciones. No tiene problema en mostrar elementos desestructurados de una manera realista, pero no es tan hábil mostrando objetos que los seres humanos conocemos por su estructura definida como muebles o edificios. Hacer eso ya requeriría un esfuerzo extra de computación.

    Incluso a pesar de sus limitaciones, la herramienta es el sueño de cualquier arquitecto que necesite generar jardines alrededor de un edificio. Incluso podría resultar muy útil para diseñadores de videojuegos que necesitan generar entornos realistas. Nvidia la he creado precisamente con esa idea en mente. [Nvidia blog vía The Verge]

    Fuente

    En Río Gallegos: UnDelivery, en una aplicación toda la comida

  • Software 23.03.2019 Comentarios desactivados

    Los símbolos son muy utilizados en Ruby, pero poco comprendidos. Muchas veces confundimos o pensamos que es igual a un String, o podemos llegar a confundirlo con una variable; particularmente, yo creo que la confusión surge, primero, de la naturalidad con la que asumimos que es un String y , segundo, vemos en tantos lados el uso de símbolos que nunca nos plantemos a preguntarnos ¿qué son? Es por esto que voy a pasar a explicarlos.

    ¿Qué es un símbolo?

    Lo primero que tenemos que saber, es saber qué es exactamente un símbolo. Un símbolo es un objeto que se crea con el prefijo de dos puntos (:), donde la palabra seguida debería definir el significado de la variable. Una definición simplificada es que un símbolo es un String que es inmutable.

    El símbolo es inmutable

    Una característica importante de los símbolo es que una vez asignada un valor, este no puede cambiar. Esto se debe a que la clase Symbol no tiene ningún método para cambiar el valor.

    Un símbolo es único

    Otro aspecto importante de los símbolos es que estos son únicos, ya que Ruby mantiene una tabla donde se los pueden ver a todos listados. Es decir, que va haber un nombre por cada símbolo; por ejemplo si tenemos lo siguiente

    $ :name
    $ :name

    ambos son el mismo objetos y , en consecuencia, sus ids son iguales. Esta es una gran diferencia con los Strings, ya que estos últimos crean un objeto por cada uno; esto hace que si creamos diez strings, se van a crear 10 objetos y se van a destruir cada uno de ellos.

    ¿Cuándo usar un Símbolo o un String?

    Básicamente, debemos utilizar un símbolo, cuando el significado de este es importante, mientras que el String se utiliza para representar datos; por ejemplo, en un Hash el key es un símbolo y el valor es un String

    fruit = {name: "Apple"}  

    Otro caso donde se suele utilizar Símbolos, es para representar estados, ya que la importancia de este es el significado y no el valor asociado.

    Símbolos y String dinámicos

    En versiones anteriores a la 2.2 de Ruby, NUNCA no debemos utilizar los Símbolos con los Strings dinámicos, ya que los primeros no se desalojan de la memoria durante TODA la ejecución. Es por esto que en esta situación tendríamos un potencial memory bloat. Por ejemplo:

    value = param[:x]
    hashmap[:"my_#{value}_key"]

    por cada vez que esa linea se ejecuta, se crea un nuevo símbolo por cada valor distinto del parámetro. Por lo que si ejecutamos 10M de veces esa linea, vamos a tener muchos objetos del tipo símbolo en memoria.

    Conclusión

    Para redondear las ideas de todo esto, podemos listar cada una de las características de la siguiente manera:

    • Es inmutable
    • Son únicos
    • Son más eficientes
    • Se utilizan para representar conceptos