slide1

Alt1040. Noticias acerca de Internet, diseño, música, cine, opiniones, weblogs y medios

Es uno de los weblogs de tecnología más seguidos de la blogosfera hispana.

slide2

Bitelia. Blog de software, internet y servicios web

Software y aplicaciones para mejorar tu vida, guías de uso, trucos, listas, noticias y todo sobre tecnología.

slide3

Xataka. Publicación de noticias sobre gadgets y tecnología.

Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc.

slide4

Wwwhatsnew. Aplicaciones, marketing y noticias en la web.

Servicios que os pueden ser útiles para dibujar, gestionar tareas, hacer amigos, encontrar restaurantes...

slide5

Fayerwayer. Discusiones y opiniones de lo ultimo en tecnología y gadgets

Con secciones dedicadas a Internet, Software o Redes Sociales es un referente a nivel de tecnología en español.

13 de junio de 2016

Gestión de proyectos software con Git y Github

Desde su nacimiento en 2005, Git ha evolucionado y madurado para ser fácil de usar, es tremendamente rápido, completamente distribuido, muy eficiente con grandes proyectos como el núcleo de Linux (manejo eficiente de velocidad y tamaño de los datos) y tiene un increíble sistema de ramificación (branching) para desarrollo no lineal (miles de ramas paralelas).

GIT

GIT es un gestor de proyectos software desarrollado por Linus Torwalds para Linux y diseñado para desarrollo distribuido.

Cada desarrollador trabaja de forma independiente en su propio repositorio y sincroniza el repositorio con otro cuando lo necesita.
Uno de los repositorios puede utilizarse como repositorio de referencia.

Tutorial Web y eBook: http://git-scm.com/book/es

Proyecto, directorio y versión


El directorio del proyecto

  • Un proyecto se suele gestionar en un directorio (o carpeta): el directorio contiene todos los ficheros del proyecto.
  • Explorador de ficheros: muestra el contenido de un directorio gráficamente.
    Hacer clic sobre un objetos gráfico ejecuta un comando predefinido.
  • Terminal de comandos: ejecuta comandos en directorio de trabajo.
    El directorio de trabajo asociado es la base de las rutas (paths) relativas y los objetos se identifican con rutas (paths) absolutas o relativas.
Historia de un proyecto

  • Historia de un proyecto: es la historia de cambios en el directorio del proyecto.
  • Versión (Commit): punto de la historia del proyecto que puede ser restaurado (reconstruido).
  • Se debe consolidar versión en los puntos del desarrollo que deseemos poder volver atrás en el futuro.
  • Versiones frecuentes facilitan el mantenimiento y la legibilidad de un programa.
Árbol de versiones

  • La rama principal del proyecto se denomina master: es la historia de cambios en el directorio del proyecto.
    Una rama suele realizar un desarrollo separado.
  • Las ramas se suelen integrar en master, una vez acabadas.
Repositorio y Versión

  • Un repositorio git es un "directorio donde gestionar versiones".
    Se puede guardar o restaurar versiones. Las versiones se guardan en el directorio oculto .git
  • Versión (commit): directorio (proyecto) congelado en un momento determinado, incluyendo todos sus ficheros y subdirectorios.
Identificador de versión (SHA1)

  • Cada versión generada por GIT se identifica con un número aleatorio único (clave SHA1).
    Ejemplo: 973751d21c4a71f13a2e729ccf77f3a960885682.
  • GIT permite equipos de desarrollo distribuidos: los repositorios se pueden clonar sin problemas (ninguna versión en ningún otro repositorio utilizará el mismo identificador).
Colaboración y Firma

  • GIT esta pensado para trabajar en grupo: toda operación va firmada por su autor.
    Al configurar GIT se da el nombre y email del autor.
  • Un usuario puede copiar o clonar otro repositorio y continuar el desarrollo por su cuenta sobre la copia.
  • Dos repositorios pueden volver a sincronizarse.

Configurar GIT

# El comando "git config" permite manejar opciones de configuración. 

# Las opciones configuradas pueden afectar a distintos ámbitos (proyectos): 
#    - Para todos los proyectos en el sistema.  
#       Usar opción --system. La configuración se guarda en /etc/gitconfig
#    - Para todos los proyectos del usuario.  
#       Usar opción --global. La configuración se guarda en ~/.gitconfig
#    - Sólo para el proyecto actual.  
#       Sin opción. La configuración se guarda en .git/config 

# Consultar todas las opciones existentes: git help config

# Para firmar correctamente contribuciones y versiones debemos configurar:
$ git config --global user.name "Pedro Ramirez" 
$ git config --global user.email pramirez@dit.upm.es

# Consultar el valor de todas las opciones configuradas:
$ git config --list  
user.name=Pedro Ramirez 
user.email=pramirez@dit.upm.es
color.ui=true 

# Consultar el valor de una opción:
$ git config user.name  
Pedro Ramirez

Ayuda

# Ayuda en línea de comandos: 

$ git help          # Muestra lista con los comandos existentes 

$ git help comando  # Ayuda sobre comando especificado 

$git help add       # Ayuda sobre el comando add

$ git add --help    # Equivalente a anterior
$ man git-add       # Equivalente a anterior


# Manual de referencia, chuletas, videos, otros enlaces: 

http://git-scm.com/doc

http://ndpsoftware.com/git-cheatsheet.html 

https://na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf 

GITHUB

GITHUB es el portal de repositorios GIT: https://github.com

Ofrece un enfoque social y colaborativo: red social para compartir proyectos software.

Los repositorios públicos son gratis, los privados de pago: cuenta con más de 20M (Linux, Eclipse, jQuery, RoR, etc)

Gestión de organizaciones y proyectos software:

  • Soporta equipos de desarrollo distribuidos, abiertos o privados.
  • Uso y acceso muy sencillo a versiones, tareas, bugs, ...
  • Herramientas para desktop (MAC y Windows)
  • Incluye muy buenos tutoriales.

GITHUB: registro y ayuda

#   Lo primero es crear una cuenta y una vez creada, debemos seguir sus instrucciones para:

#  1) Configurar y conectar con GITHUB nuestro GIT local:

https://help.github.com/articles/set-up-git/

#  2) Instrucciones para crear y clonar repositorios:

https://help.github.com/articles/create-a-repo
 
#  3) Instrucciones para colaborar en proyectos software distribuidos:

https://help.github.com/articles/be-social/


Subir un repositorio local a GITHUB

# Para subir un repositorio local a GITHUB debemos:
 
#  1) Crear un repositorio vacío en GITHUB con New Repository

#  2) Configurar repo. remoto origin con repositorio vacío

$ git remote add origin https://github.com/pepe/proy1

#  3) Hacer push de rama master local a origin

$ git push -u origin master # -u "tracking reference"

Fork: Copiar un proyecto en GITHUB

# Fork permite copiar un repositorio (proyecto) en nuestra cuenta en GITHUB
# 
#  -> Una vez copiado (clonado) tenemos acceso a él y podemos evolucionarlo

Contribuir a un proyecto GITHUB

# La forma habitual de contribuir a un proyecto en GITHUB es seguir estos 4 pasos: 

#  1) Crear una copia del repositorio original en GITHUB con "Fork" en la cuenta propia 

#  2) Clonar la rama creada en nuestra cuenta en nuestro ordenador local 

p1> git clone https://github.com/pepe/proy1

#  3) Modificar el proyecto local, realizar commit y "push" a nuestra copia en GITHUB 

p1> ...........
p1> git add ... 
p1> git commit -m '.........'
p1> git push origin master 

#  4) Hacer "Pull Request" desde nuestra cuenta en GITHUB pidiendo al administrador del 
# repositorio original que introduzca nuestros cambios 

GITHUB App for MAC & for Windows


GITHUB App es una herramienta gráfica muy eficaz para gestionar proyectos git localmente en el PC. Solo está soportada para MAC y para Windows.

  • Permite ver y gestionar el directorio de trabajo del proyecto y los cambios realizados,
  • Ver las versiones de un proyecto (historia) y los cambios realizados en cada versión.
  • Ver y gestionar las ramas de un proyecto y su sincronización con repositorios remotos.
Descargar (e instalar) GITHUB para MAC: https://mac.github.com
Descargar (e instalar) GITHUB para Windows: https://windows.github.com


Extracto del curso "Desarrollo de servicios en la nube con HTML5, Javascript y node.js" impartido a través de la plataforma online MiríadaX.
El curso incluye también el despliegue de servicios de servidor en la nube e introduce técnicas básicas de ingeniería software.



6 de junio de 2016

Alojar páginas web con Google Drive no será posible a partir del 31 de agosto de 2016

Google lo lleva anunciando desde hace cerca de un año: "la función de alojamiento de páginas web desde Google Drive dejará de estar disponible a patir de agosto de 2016".
En su blog oficial, explica las razones y ofrece la posibilidad de compra de un dominio a través de su plataforma Google Domains.


Llevo haciendo uso de este servicio desde que Google lo anunció y me ha sido de mucha utilidad para compartir de forma pública algunos de los casos prácticos que expongo en los artículos de mi blog.

Y como no es conveniente dejar los deberes para el último momento, me he puesto manos a la obra y he migrado todos estos proyectos a otro repositorio de carácter público.

Como ya indicaba en el post de principios de 2014 ¿sabías que Google Drive permite alojar páginas web?:
"para la publicación de un sitio web lo ideal es disponer de hosting y dominio propios pero para compartir ficheros o páginas estáticas a modo de ejemplos, existen numerosos servicios gratuitos que cubren perfectamente esta funcionalidad".

Finalmente me he decantado por el servicio de alojamiento de repositorios de software GitHub porque cubre sobradamente mis necesidades.

Algunas razones de peso son:

  • GitHub es totalmente gratuito para alojar código open source, siendo estos repositorios de visibilidad pública.
    No obstante, cuenta con un plan de precios para los repositorios privados.
  • es el servicio elegido por proyectos de software libre como Linux, Eclipse, jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ClickToFlash, Erlang/OTP, CakePHP, Redis, y otros muchos.
  • algunas de las grandes empresas de Internet, como Facebook, alojan ahí sus desarrollos públicos, tales como el SDK, librerías, ejemplos, etc.
  • dispone de un visor de código mediante el cual, a través del navegador, podremos consultar en un instante el contenido de un determinado fichero

¿cómo configurar Git?

Documentación de usuario: Set Up Git

Artículos que se han visto afectados por este cambio y cuyos ficheros públicos ya apuntan al nuevo directorio GitHub (ordenados de más reciente a más antiguo):

  • Como crear un índice para Blogger personalizable por Título o Categorías
    <div id="all-post" class="all-post"></div>
    <script>
    var conf = {
     sortBy:   'orderlabel',  // forma en que se muestran las artículos publicados
     lastPost: 10,            // últimos post (10) a los que les pongo una marca
     date:     1,             // 0:no aparece la fecha de publicación | 1:mostramos la fecha de publicación
     newPost: 'Nuevo!!',      // texto o marca que aparece en los últimos artículos
     newtab:   1              // 0:abre link en la misma ventana | 1:abre link en ventana nueva
    }
    </script>
    <script src="https://cdn.jsdelivr.net/gh/jmacuna/index-blogger@master/index-blogger.js"></script>
    <script src="[URL DE TU BLOG]/feeds/posts/default?max-results=9999&alt=json-in-script&callback=loadtoc"></script>
    

  • Calendario con todos los post publicados en Blogger
    <div id='calendar'><strong>Loading...</strong></div>
    <script>
    var conf = {
     bgcolor: '#1e4e7e', 
     newtab:  1,         // 0:abre link en la misma ventana | 1:abre link en ventana nueva
     tooltip: true,      // false:title por defecto | true:tooltip con css3
     start:   1,         // 0:Domingo | 1:Lunes
     days:    "Lunes|Martes|Miercoles|Jueves|Viernes|Sabado|Domingo",
     months:  "Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre",
     date:    "Ir al mes actual"
    }
    </script>
    <script src='https://cdn.jsdelivr.net/gh/jmacuna/calendar-widget@master/create-calendar.js' type='text/javascript'></script>
    <script src='https://www.tecnoblog.guru/feeds/posts/summary?max-results=1000&alt=json-in-script&orderby=published&callback=createCalendar' type='text/javascript'></script>
    
  • Gadget para aumentar tu número de suscriptores - Blogger
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jmacuna/subscription-feedburner@master/style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
    <script>
    idleTime = 0;
    $(document).ready(function(){
     $limit = 5; //seconds
     if ($.cookie('test_status') != '1') {
      function timerIncrement() {
       idleTime = idleTime + 1;
       if (idleTime > $limit) {
        $('html, body').css('overflow', 'hidden');
        $('.subs-popup ').fadeIn('slow');
        idleTime = 0;
       }
      }
      // Increment the idle time counter every second.
      var idleInterval = setInterval(timerIncrement, 1000); // 1 second
      // Zero the idle timer on mouse movement.
      $(this).mousemove(function (e) {
       idleTime = 0;
      });
      $(this).keypress(function (e) {
       idleTime = 0;
      });
      $.cookie('test_status', '1', { expires: 30 });
     }
     $('.email-close').click(function() {
      $('.subs-popup').fadeOut('slow');
      $('html, body').css('overflow', 'auto');
      $limit = 9999;
     });
    });
    </script>
    
    <div class="subs-popup">
     <div id="newsletter">
      <div class="email-close">X</div>
      <div class="newsletter-wrap">
       <h4>Suscríbete y recibe<br/>contenido exclusivo</h4>
       <p>Las últimas novedades del blog<br/>directamente a tu email.<br/><br/></p>
       <form action="http://feedburner.google.com/fb/a/mailverify?loc=es-ES&uri=[FEED_DE_TU_BLOG]" method="post" onsubmit="$('.email-close').click();window.open('about:blank', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow" novalidate="">
        <input name="uri" type="hidden" value="bloggertrix"/>
        <input name="loc" type="hidden" value="en_ES"/>
        <input type="email" value="" name="email" placeholder="Tu e-mail aqui..." required=""/><br/><br/>
        <input type="submit" value="Suscribirme" class="button-popup">
       </form>
      </div>
     </div>
    </div>
    
  • Comentarios con desplazamiento de texto para Blogger (efecto marquee)
    <table class="comments">
    <tr><td class="title">Últimos comentarios</td></tr>
    <tr><td><div class="scroller">
    <script type="text/javascript">
    var numComments  = 10,
        showAvatar  = true,
        avatarSize  = 40,
        roundAvatar = true,
        characters  = 40,
        showMorelink = false,
        moreLinktext = "More »",
        defaultAvatar  = "http://i.imgur.com/3QqaBeS.png",
        hideCredits = true;
    </script>
    <script src="https://cdn.jsdelivr.net/gh/jmacuna/comments-avatar@master/w2b_recent_comments_with_avatars.js"></script>
    <script src="[URL DE TU BLOG]/feeds/comments/default?alt=json&callback=w2b_recent_comments"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://www.jqueryscript.net/demo/jQuery-Plugin-For-Infinite-Any-Content-Scroller-scrollForever/scrollForever.js"></script>
    </div></td></tr>
    </table>
    <script type="text/javascript">$(document).ready(function({$(".scroller").scrollForever({dir:"top",container:"ul",inner:"li",speed:1000,delayTime:10,continuous:true,num:1});});</script>
    
Todos aquellos lectores del blog que utilicen alguno de los gadgets que comparto, deberán realizar ajustes para que las url públicas estén alojadas en https://cdn.jsdelivr.net en lugar de https://www.googledrive.com/host.


25 de abril de 2016

Metodologías ágiles para gestionar los proyectos y negocios del s. XXI

Cada vez son más los proyectos que siguen una metodología ágil (Scrum, XP, Crystal Clear, etc.).
Su crecimiento ha sido tal que este tipo de gestión es una práctica ya común en multitud de empresas y equipos de desarrollo software.
Los profesionales de la tecnología y del desarrollo software de hoy están obligados a conocer cómo se gestionan proyectos ágiles.


¿Qué es el desarrollo ágil de software?

El desarrollo ágil de software se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan con el tiempo según la necesidad del proyecto.
Así el trabajo es realizado mediante la colaboración de equipos auto-organizados y multidisciplinarios, inmersos en un proceso compartido de toma de decisiones a corto plazo.

Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, pruebas y documentación. Teniendo gran importancia el concepto de "Finalizado" (Done), ya que el objetivo de cada iteración no es agregar toda la funcionalidad para justificar el lanzamiento del producto al mercado, sino incrementar el valor por medio de "software que funciona" (sin errores). Fuente: Wikipedia

Construir software no es igual que construir un puente, un edificio o un coche.
Y ésto es así porque en ingeniería software, a diferencia de otras ingenierías tradicionales como la arquitectura, la industria o la ingeniería civil, no se puede separar tan claramente la fase de diseño de la de construcción.
Las ingenierías clásicas precisan mucho de un diseño previo a la construcción, el disponer de los planos del arquitecto siempre antes de empezar el edificio.
Los planos para construir son precisos y pocas veces varían, ya que la mayoría de los diseños de las ingenierías clásicas, arquitecturas, etc., pueden hacer un mayor uso de las matemáticas o la física.
Por tanto, existen dos actividades claramente diferenciadas: el diseño y la construcción.

Desde sus orígenes, la ingeniería del software intentó perseverantemente emular a las ingenierías clásicas.
Tener una fase de diseño muy separada de la codificación o lo que es lo mismo, que la codificación no comenzase hasta que terminase el diseño.
Que una vez que se hace un diseño éste no se modifique. De hecho, notaciones para "planos" como UML y ciclos de vida como el cascada puro (donde cada fase se hace una sola vez y no se pasa a la siguiente fase hasta que se termina la previa) nacieron con este objetivo.

En software, la experiencia nos dice que es muy difícil especificar los requisitos en una única y primera fase. Por la complejidad de muchas de las reglas de negocio que automatizamos cuando construimos software, es muy difícil saber qué software se quiere hasta que se trabaja en su implementación y se ven las primeras versiones o prototipos.

Otro aspecto a tener en cuenta es la diferente distribución de los costes del proyecto.

Por lo general, realizar un cambio en el producto final que construyen las ingenierías clásicas o la arquitectura es muy costoso en términos económicos.
Cambiar, por ejemplo, la posición de una columna en un edificio o realizar modificaciones a la estructura de un puente ya construido tiene un alto coste. Y de ahí que la arquitectura o las ingenierías clásicas pretendan lograr a toda costa diseños o planos de un alto nivel de detalle, que una vez que comience la fase de construcción no tengan que ser modificados.
Además, normalmente, en la arquitectura o en las ingenierías clásicas los costes de construir son muy elevados en comparación con los de diseñar. El coste del equipo de diseñadores es sustancialmente inferior al de la realización de la obra, del puente, edificio, etc.

Las anteriores pautas para costes no se comportan igual en el caso del software.
Por un lado, el software, por su naturaleza (y si se construye mínimamente bien), es más fácil de modificar. Cambiar líneas de código tiene menos impacto que cambiar los pilares de un edificio ya construido.
De ahí que existan numerosas propuestas que recomiendan construir rápido una versión software y modificarla evolutivamente (la técnica de refactorización trabaja sobre esta idea).
En software no existe esa división tan clara entre los costes del diseño y los de la construcción.

Diferenciar el cómo se construye software del cómo se construyen los productos físicos es uno de los pilares de las metodologías ágiles (M. Fowler, 2005).
Y es que en software, es frecuente que diseño y construcción muchas veces se solapen, y por ello se recomiende construir por iteraciones, por partes, y el uso de prototipos incrementales.

El ciclo de vida ágil es un ciclo de vida iterativo e incremental, con iteraciones cortas (semanas) y sin que dentro de cada iteración tenga porque haber fases lineales (tipo cascada).

Quizá el caso más popular es el de Scrum. Hace ya sus años, en el 85, y en la primera presentación oficial de Scrum, Ken Schwaber, uno de sus creadores, hablaba sobre el ciclo de vida de Scrum, y sus diferencias con los anteriores ciclos de vida.

Según comenta Ken Schwaber, el ciclo de vida en Cascada y el Espiral cierran el contexto y la entrega al inicio de un proyecto. La principal diferencia entre cascada, espiral e iterativo y los ciclos de vida ágiles, concretamente en Scrum, es que estos últimos asumen que el análisis, diseño, etc., de cada iteración o Sprint son impredecibles. Los Sprints, o iteraciones cortas, no son (o a priori no tienen porqué) lineales y son flexibles.
Pero cada metodología de las llamadas ágiles, FDD, Crystal, DSDM, XP, etc., matizará su ciclo de vida.

Un proyecto ágil lleva la iteración al extremo:

  • Se busca dividir las tareas del proyecto software en incrementos de una corta duración (según la metodología ágil, típicamente entre 1 y 4 semanas).
  • Cada iteración suele concluir con un prototipo operativo. Al final de cada incremento se obtiene un producto entregable que es revisado junto con el cliente, posibilitando la aparición de nuevos requisitos o la perfección de los existentes, reduciendo riesgos globales y permitiendo la adaptación rápida a los cambios.
Lo Principios Ágiles que diferencian un proceso ágil de uno tradicional son los siguientes:

  • La prioridad es satisfacer al cliente mediante entregas tempranas y continuas de software que le aporten valor.
  • Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una ventaja competitiva.
  • Entregar frecuentemente software que funcione desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible entre entregas.
  • La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.
  • Construir el proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo.
  • El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo.
  • El software que funciona es la medida fundamental de progreso.
  • Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante.
  • La atención continua a la calidad técnica y al buen diseño mejora la agilidad.
  • La simplicidad es esencial.
  • Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí mismos.
  • En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y según esto ajusta su comportamiento.






Extracto del curso "Agilidad y Lean. Gestionando los proyectos y negocios del s. XXI" impartido por Javier Garzás, profesor en la Universidad Rey Juan Carlos a través de la plataforma online MiríadaX

Certificado de participación: https://miriadax.net/files/10132/badge/66283a75-ef83-4738-915b-9a5a9244ed0f.pdf


14 de marzo de 2016

Introducción a los sistemas de Big Data o el nuevo paradigma de los datos masivos


El Big Data o Datos masivos es un concepto que hace referencia al almacenamiento de grandes cantidades de datos y a los procedimientos usados para encontrar patrones repetitivos dentro de esos datos. Fuente Wikipedia


¿cómo apareció el concepto de Big Data y qué problemas intentaba resolver?

A principios del siglo XXI surgen dos proyectos de ciencias, el primero de ellos relacionado con la astronomía conocido como el proyecto de Sloan Digital Sky Survey que intentaba identificar y cuantificar todos los objetos en el espacio.
Este proyecto generó más datos en unos pocos meses de vida que los que había generado toda la comunidad astronómica hasta ese momento.

También cobra relevanca el proyecto del genoma humano que trata de determinar la secuencia completa en alta definición del ADN humano. En cada uno de los individuos se generan alrededor de 100 gigabytes de información.

Ambos proyectos supusieron un salto incremental en el volumen de datos que se estaba gestionando.

Con la aparición de Internet, las Redes Sociales y más tarde el Internet Of Things, se produce un crecimiento exponencial en el volumen de datos generados a diario en todo el mundo.

Este hecho incidió en algunas de las principales empresas que trabajan en internet como Google, Yahoo, Amazon, etc, que se encontraron con tres problemas fundamentales para poder seguir realizando su actividad o negocio con garantías:

  • la gran cantidad de datos que acumulaban hacía inviable su procesamiento en una única máquina aunque ésta fuera un supercomputador.
  • la heterogeneidad de los datos dificultaba la necesidad de insertar, consultar y procesar información de distintos tipos o estructuras.
  • para estas compañías era imprescindible el procesamiento rápido de los datos. Por ejemplo, las queries del buscador web deben ser inmediatas o con resultados practicamente en tiempo real.
Hasta ese momento el modelo de análisis de datos se llamaba modelo de "causalidad" porque se partía de unas hipótesis, se escogían unas muestras aleatorias o distribuidas de distinta forma sobre el conjunto de datos total y a partir de aquí se intentaba verificar la hipótesis en cuestión.
Es lo que se conoce como modelo de causa-efecto: se busca ¿el por qué? de las cosas.

Este modelo dió paso al modelo de la "correlación" dado que se podía acceder a un conjunto muy grande de datos cercano al total de datos y yo no se intenta buscar el por qué, sino que se busca una correlación entre las variables que aparecen en este conjunto: que provoca qué sin importar el por qué.

Definición de Big Data

En el año 2001, el analista Doug Laney de META Group (ahora Gartner) utilizaba y definía por primera vez el término Big Data como:

"el conjunto de técnicas y tecnologías para el tratamiento de datos, en entornos de gran volumen, variedad de orígenes y en los que la velocidad de respuesta es crítica".

Esto es lo que se ha llamado el modelo de las tres uves del Big Data:

  • Volumen: crecimiento exponencial de los datos que ha superado el límite de confort de las bases de datos relacionales (gigabytes) y se empieza a trabajar con terabytes de información diaria.
  • Velocidad: tiempo de respuesta crítico (practicamente en tiempo real). Por ejemplo, el sistema de tráfico de vehículos.
    A su vez, se consideran dos tipos de velocidad:
    1. Velocidad de carga (procesos ETL).
    2. Velocidad de procesamiento.
  • Variedad: existen diferentes formatos y estructuras de los datos.
    1. Orígenes de datos estructurados: conocemos a priori el formato de los datos (Bases de datos, hojas de cálculo o ficheros CSV).
    2. Orígenes de datos semiestructurados: hay una organización interna que no conocemos a priori (Documentos XML o páginas web).
    3. Orígenes de datos no estructurados: no hay ningún tipo de estructura interna (Documentos de texto, audio, imágenes o vídeo).

Más tarde, la empresa americana IBM introduce una cuarta V en este modelo: la veracidad que se mide desde la exactitud del dato y desde la exactitud del cálculo.

La gran cantidad de datos y la diversidad de orígenes provoca que la veracidad deba ser considerada aunque no hay unanimidad en la comunidad de analistas de datos ya que algunos consideran que esta variable existe en los modelos tradicionales.

El Big Data en escenarios de Business Intelligence

¿cuándo podemos aplicar una solución de BI basada en Big Data?

Cuando exista un gran volumen de datos, alta velocidad de generación de datos o necesidad de tratar todo tipo de datos. No es necesario que se cumplan las tres condiciones.

¿puede Big Data aplicarse en cualquier proyecto BI?

¿Qué quiere decir Inteligencia de Negocio o Business Intelligence (BI)? “Usar datos de ayer y de hoy para tomar mejores decisiones para mañana”.

También podemos definirlo como "conceptos, procesos y herramientas (informáticas) que permiten obtener mejor información para dar soporte a la toma de decisiones".

Big Data puede utilizarse en cualquier escenario para analizar información obtenida de diferentes sistemas de información. No obstante, hay que tener en consideración el incremento de complejidad y coste respecto a una solución BI tradicional.

En muchos casos, lo que se hace es incorporar los sistemas de BI tradicional con estos nuevos paradigmas del Big Data.
Por ejemplo, podemos tratar nuestro sistema de datos estructurados con un volumen constante (sistema de compras por ejemplo) con un sistema de BI tradicional, mientras que si por otro lado estamos recogiendo información sobre nuestros posibles clientes en internet, en redes sociales y se trata de un volumen muy grande de datos, podemos utilizar un sistema de Big Data y finalmente juntar las dos fuentes de información en nuestro Data Wharehouse.

Por tanto, una solución Big Data debe utilizarse como complemento a un sistema BI tradicional.

Diferencias fundamentales entre BI tradicional y Big Data:

  • Naturaleza de los datos: Volumen, Variedad y Velocidad en Big Data.
  • Granularidad: en el BI tradicional los datos son almacenados en el DW en su mínima granularidad mientras que en el sistema de Big Data los datos almacenados son derivados o filtrados.
  • Tecnología: los ficheros de Big Data requieren de un sistema de cálculo distribuido que se pueden obtener a través de, por ejemplo, el framework Apache Hadoop y de bases de datos NoSQL mientras que en un sistema de BI tradicional optaremos por un Sistema de Gestión de Base de Datos Relacional (SGBDR) y una de las muchas herramientas que existen en el mercado para BI.




La demanda de profesionales BI:



Extracto del curso "Introducción al Business Intelligence y al Big Data" impartido por la Universitat Oberta de Catalunya (UOC) a través de la plataforma online MiríadaX

Certificado de participación: https://miriadax.net/files/10132/badge/13baf6ab-a4b4-42b2-979c-0bfabcdaa65c.pdf

22 de febrero de 2016

Universe2go: el planetario portátil

La realidad aumentada (RA) es el término que se usa para definir una visión de un entorno físico del mundo real por medio de un dispositivo tecnológico combinando elementos virtuales para la creación de una realidad mixta en tiempo real.
No sustituye la realidad física, sino que sobreimprime los datos informáticos al mundo real. Fuente Wikipedia


¿Qué es Universe2go?


Universe2go son unas gafas interactivas (o visor de estrellas) que funcionan a través de la realidad aumentada, ya que combina una visión real del cielo con la historia y la mitología.

universe2go

Para utilizarlas, simplemente tendrás que descargar la aplicación gratuita del marketplace e introducir tu smartphone en el visor de estrellas:

Una vez que hemos introducido nuestro smartphone en el dispositivo Universe2go, el control de la interfaz de la aplicación se realiza con los movimientos de la cabeza.
Simplemente mirando hacia el suelo con las gafas puestas, se activará un menú. Inclinando la cabeza podrás controlar prácticamente todas las funciones del menú.

Las gafas están compuestas por un visor delantero con una tapa protectora, dos oculares en la parte posterior y un paspartú para depositar nuestro dispositivo móvil. Funciona gracias al reflejo de la pantalla de nuestro smartphone con la aplicación de Universe2go en ejecución y la tecnología de realidad aumentada. Además, incluyen una correa para ajustar las gafas a la cabeza cuyo propósito es hacernos pasar largas horas mirando a las estrellas y espuma de poliuretano para ajustar los diferentes tamaños de smartphones.

La aplicación Universe2go es compatible con los modelos de smartphone más extendidos actualmente en el mercado con sistemas operativos Android en versión 4.2 o superior y Apple en versión 7.0 o superior (iPhone 4, 5 y 6, Samsung Galaxy S3, S4, S5 y S6 y muchos más). No obstante, el smartphone no puede tener medidas superiores a largo 147 x ancho 74 x alto 11mm.

Utiliza el GPS, la brújula y algunos sensores integrados en tu móvil como el acelerómetro (encargado de conocer la orientación del dispositivo) y el giroscopio (también permite cambiar o mantener la orientación).

Para un correcto uso de la aplicación es necesario realizar ajustes en nuestros dispositivos móviles:

  • Habilitar Calibración de la brújula.
  • Habilitar Calibración del desplazamiento.
La aplicación tiene dos tipos de calibrado:

  • Calibrado de la pantalla: sólo debe llevarse a cabo una vez.
  • Calibrado de las estrellas: debe realizarse cada vez que inicie la aplicación para que su smartphone sepa con precisión dónde se encuentran las estrellas. Si una noche quieres compartir tu Universe2go con varias personas, cada una debe realizar su propio calibrado de las estrellas. Por lo tanto, al darle las gafas a la siguiente persona, se debe iniciar de nuevo la aplicación.
Una vez completada la instalación, dispondrás de una función de planisferio (sin gafas de planetario). Para acceder a todas las funciones del modo "Planetario" necesitas un código de activación que obtendrás al adquirir las gafas de planetario Universe2go.

La app y las instrucciones están disponibles en Español, Inglés, Alemán e Italiano. La Audio-Guía, en Inglés, Alemán y Francés.

Características de Universe2go


  • realidad ampliada: podrás visualizar información digital a través de la imagen del cielo.
  • tres horas de material auditivo con información sobre constelaciones, estrellas, planetas y numerosas nebulosas y galaxias.
  • te ayuda a reconocer los planetas y las 88 constelaciones del firmamento.
  • en cuanto la Estación Espacial Internacional (ISS, por sus siglas en inglés) aparezca en el horizonte, Universe2go te avisará de inmediato.
  • disfrutarás de un viaje interestelar: dar un paseo por las galaxias, cúmulos estelares y nebulosas.
  • aprenderás historias interesantes sumergiéndonos en la mitología griega: conocerás a Orión, Pegaso y Casiopea.
  • ha sido desarrollado por astrónomos aficionados.
mythologie

El menú de la aplicación permite seleccionar distintas opciones:

  • principiante: la app reconocerá la constelación a la que estás apuntando y trazará las líneas que la unen. A continuación, aparecerá el nombre de la constelación y si te mantienes un par de segundos sobre el nombre, comenzará la explicación de audio.
  • explorar: al apuntar a una estrella con el círculo, aparecerá un recuadro con información relativa a este astro (distancia, brillo ...).
  • mitología: la aplicación te transportará a historias sobre héroes, reyes, monstruos y bellas doncellas, que los antiguos griegos relacionaban con las estrellas. Podrás reconocer las constelaciones, observar los dibujos antiguos y escuchar la información.
  • cielo profundo (Deep-Sky): descubre galaxias lejanas, preciosas nebulosas, magníficos cúmulos de estrellas y supernovas en explosión que no podrías ver a simple vista.
  • 3D: el modo 3D incrementa la sensación de inmersión en el espacio, el cielo se vuelve más profundo.
  • preguntas: pon a prueba tu conocimiento. La app te indicará una constelación elegida al azar para que trates de localizarla en el cielo. Dispones de tres intentos para encontrar cada constelación.
  • búsqueda: escoge la estrella, planeta, constelación, cometa, satélite u objeto del cielo cuya posición deseas encontrar y Universe2go te mostrará el camino al objetivo mediante flechas.
  • experto: desde aqui, tienes la posibilidad de establecer la configuración que prefieras. Puedes activar y desactivar los tipos de objeto, modificar la configuración para los nombres, la música de fondo y el grado de detalle de la información visualizada e incluso activar una cuadrícula para ajustar el azimut y el ecuador.
nebel

Agradecimientos


Para terminar, quería hacer mención especial al equipo de Universe2go y en particular a Ana Feria por su profesionalidad y por facilitarme el acceso a las gafas interactivas necesarias para entender el concepto de realidad aumentada y posibilitar la redacción del artículo.


visor


18 de enero de 2016

Emailing y las nuevas tendencias de márketing digital

La forma en la que la información se comparte en internet ha cambiado radicalmente y la rápida evolución de las nuevas tecnologías han transformado el modo de hacer negocios en el mercado digital.
El márketing online necesita ahora más que nunca adaptarse a las nuevas herramientas para seguir el ritmo que marcan las nuevas tendencias.

Algunas de las tendencias de márketing digital que han llegado para quedarse son:

Optimización móvil

Los móviles están cambiando los hábitos de compra de los usuarios y eso nos convierte en "clientes potenciales".

El consumo de Internet a través de dispositivos móviles se sitúa a la cabeza de los medios de conexión. De ahí surge la necesidad de una rápida adaptación para evitar pérdida de competitividad en el mercado.

La tendencia es más notable en las redes sociales, como Facebook, donde tres cuartas partes de los ingresos por publicidad en línea se generan a partir de los contenidos móviles.
Por tanto no es de extrañar que los sitios web así como las campañas publicitarias deban focalizar sus esfuerzos hacia las plataformas móviles.

Publicidad en vídeo

El consumo de contenido audiovisual online está experimentando un crecimiento importante como consecuencia de que los usuarios son cada vez más receptivos a este tipo de contenido multimedia bajo demanda.

Las mejoras de estas tecnologías como los vídeos en alta definición, la velocidad de conexión y la inmediatez de poder visualizar lo que se quiera y cuando se quiera, está convirtiendo a esta categoría como la preferida por muchas marcas para invertir en este tipo de anuncios.

Todo ello gracias a la explosión del consumo de vídeos a través de plataformas móviles y la proliferación de los dispositivos conectados a internet, como las Smart TV y las consolas de videojuegos.

Plataformas de publicidad como Facebook y Bing ya ofrecen a los anunciantes opciones de vídeo y Google ha apostado por campañas de vídeo TrueView desde la plataforma AdWords.

Tecnología Wearable

Estamos en la era de la tecnología 'llevable o ponible' (Wearable en inglés) cuyos artilugios o dispositivos nos introducen en el mundo virtual y real, dándonos muchas posibilidades de acceso a información en el modo 'manos libres'.

Las empresas de publicidad y marketing estudian formas de hacer llegar mensajes a las personas a través de esta tecnología, a pesar de que aún no se ha hecho masiva.

Uno de los dispositivos más conocidos, el Apple Watch, aterrizó en el mercado el pasado año, y ya ha sido precursor de muchos de estos cambios: hay que reinventar los contenidos, adaptarlos a las características del reloj inteligente.

Se trata de una revolución completa en los contenidos, en la forma de presentarlos y en definitiva en la estrategia publicitaria asociado a ellos.

Asistentes digitales por voz

Los asistentes de voz en los teléfonos inteligentes tienen como función principal mejorar y complementar la experiencia de usuario, así como la productividad de los consumidores.

El SEO (Search Engine Optimization) y el PPC (pago por clic) son dos estrategias altamente populares para conseguir que tu sitio web consiga miles de visitas pero el aumento de búsquedas por voz va a dar lugar a un nuevo tipo de optimización.

¿Cómo nos puede influir? por ejemplo, deberías asegurarte de que tu contenido de Facebook está en Facebook M (su asistente virtual integrado con Facebook Messenger) ya que ésta es la plataforma que guía al asistente inteligente.

Esto también podría incluir que el contenido de tus campañas SEO esté actualizado en Google Now con sugerencias como 'Popular en tu zona'.

Las marcas deberán ampliar su actividad para capturar este tráfico de búsqueda por voz mediante búsquedas de tipo conversacional como '¿Dónde puedo ...? ¿Cuál es la mejor ...? ¿Cómo comprar ...?'.

La clave para la optimización del nuevo formato consiste en asegurarse de que la información de tu actividad comercial es de fácil acceso para estos asistentes.

Big Data

El big data ofrece una infraestructura apoyada en la tecnología para que las compañías puedan almacenar, tratar y analizar grandes volúmenes de datos.

El big data permite la recolección de información para analizarla usando diferentes plataformas y así elaborar reportes y proyecciones que ayuden a definir estrategias a seguir de determinadas empresas.

Aprender a descifrar esta información, administrarla y dirigirla provee a la compañía de resultados muy favorables:

  • Impulsando nuevos productos o servicios y mejorando su calidad.
  • Mejorando la posición competitiva.
  • Dotando de mayor eficacia a las campañas de venta.

Emails creativos e interactivos

Algunas marcas han experimentado nuevas fórmulas en el diseño de correo electrónico como la creación de elementos de tipo carrusel, menús desplegables y otras características interactivas.

Los diseñadores expertos están tratando de incorporar las utilidades de HTML5 en este tipo de formatos, dando como resultado la experiencia de un pseudo-sitio web en un correo electrónico.

Aún así, este enfoque arroja ciertas dudas:

  • algunos de estos diseños inteligentes hacen más difícil el acceso a los contenidos ya que requieren clics adicionales, mientras que un diseño lineal simple muestra todo el contenido.
  • además, no todos los clientes de correo electrónico soportan la tecnología HTML5.
Lo que resulta incuestionable es que el Email Marketing entendido como el "conjunto de técnicas para llegar a un público objetivo utilizando como medio el correo electrónico", se ha convertido en el canal de comunicación y generación de resultados más eficiente en el mundo digital.

Como mencioné en el post Email markéting como estrategia en la fidelización de clientes, una de las herramientas más útiles e interesantes para este propósito es MailRelay logo_mailrelay

Algunas consideraciones:

  • La disolución del Safe Harbour que afecta de forma directa al email márketing en el tratamiento de datos personales, coloca a la empresa americana MailChimp en situación de ilegalidad. A finales de enero de 2016 se acaba el plazo para que las empresas migren a un proveedor con sus servidores en la Unión Europea.
    Toda la información en Safe Harbour y Mailchimp: evita los problemas legales migrando a Mailrelay
    Mailrelay dispone de sus servidores en Europa, con lo que tu lista de suscriptores no sale de la unión europea, cumpliendo así con las leyes de protección de datos establecidas en Europa.
  • Uno de los principales problemas en las migraciones de software es el coste económico: no obstante, la plataforma ofrece 6 meses gratis al pasar de Mailchimp a Mailrelay
  • Más información en Manuales sobre Email Marketing
Cómo crear una plantilla para tus newsletters en MailRelay con Max Camuñas Fernández (@maxcf)




11 de enero de 2016

HackerOne, conecta hackers con empresas

Creado por los líderes de seguridad de Facebook, Microsoft y Google, HackerOne es la primera plataforma de gestión de vulnerabilidades y recompensas de errores: todos los informes de vulnerabilidad en un solo lugar, administrados por el equipo de soporte de incidencias, proporcionando una fácil interacción entre los interesados ​​y recompensando a cualquier hacker en cualquier parte del mundo con un sólo clic.

En el año 2011, dos holandeses con 20 años de edad diseñaron una lista de objetivos de 100 empresas de alta tecnología que tratarían de hackear. En poco tiempo habían encontrado fallos de seguridad en Facebook, Google, Apple, Microsoft, Twitter y otras 95 empresas.

Cuando alertaron a los ejecutivos de esas empresas, alrededor de un tercio de ellos ignoraron el aviso. Otro tercio les dió las gracias pero nunca solucionaron las vulnerabilidades, mientras que el resto resolvió sus bugs de seguridad. Afortunadamente para los jóvenes hackers informáticos, nadie llamó a la policía.

Ahora Michiel Prins y Jobert Abma, se encuentran entre los cuatro co-fundadores de esta plataforma tecnológica ubicada en San Francisco que pretende convertirse en mediadora entre las empresas con problemas potenciales de ciberseguridad y hackers como ellos.
Esperan que su equipo, HackerOne, pueda persuadir a otros hackers para informar responsablemente de fallos de seguridad, en lugar de explotarlos, y conecte los "white hats" con empresas dispuestas a pagar una recompensa por sus hallazgos.

En el último año, la puesta en marcha ha convencido a algunos de los grandes de la tecnología - incluyendo Yahoo, Square y Twitter - y empresas como bancos y compañías petroleras se han puesto al servicio de esta iniciativa.
También han convencido a los inversores de capital riesgo que conocedores de los miles de millones de dispositivos móviles en línea y las vulnerabilidades inevitables, han visto en HackerOne un potencial muy lucrativo.
HackerOne recibe una comisión del 20 por ciento de cada una de las recompensas pagadas a través de su servicio.

Las compañías tecnológicas comenzaron a gratificar a los hackers hace cinco años cuando Google empezó a pagar a los hackers $3,133.70 por bugs (31337 es el código de la "élite" hacker). Desde entonces, Google ha llegado a pagar la cifra de $150,000 para una sola recompensa y ha repartido más de $4 millones a los hackers.

Cerca de 1.500 hackers forman parte de la plataforma HackerOne. Se han fijado alrededor de 9.000 bugs y recibido más de 3 millones de dólares en recompensas.

Para las empresas que están empezando a considerar el programa de errores, HackerOne les ofrece una comunidad de hackers de buena reputación y se encarga de los trámites de gestión, incluyendo los formularios de impuestos y pagos.

Además, han creado el programa Internet Bug Bounty cuyo panel premiará la investigación en las vulnerabilidades con graves consecuencias para la seguridad pública: aquellas que estén presentes en las implementaciones de múltiples proveedores o un proveedor con una cuota de mercado dominante y un gran número de usuarios finales.

El programa "Internet Bug Bounty" está formado por un grupo de voluntarios expertos en seguridad siendo responsables de la definición de las reglas del programa, la asignación de recompensas y mediar cualquier desacuerdo que pueda surgir:


¿Cómo funciona HackerOne? (english):





Algunas de las empresas que forman parte de la plataforma Hackerone:




Puedes ver el listado commpleto en Directory Report Vulnerabilities to Companies's Security Teams