Docker: conceptos principales y tutorial paso a paso

por:

Virtualización con Docker primeros pasos

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite desplegar programas en contenedores de software.

¿Qué es y cómo funciona Docker?

Como hemos comentado, Docker es un proyecto Open Source creado y liderado por Solomon Hykes que afronta el problema de la virtualización de servicios y programas. Este tema es muy importante, ya que se busca aprovechar al máximo el recurso disponible (un servidor) para ejecutar los servicios que necesitemos.

El funcionamiento de Docker es distinto a los métodos más comunes que se han utilizado anteriormente, ya que no necesita un sistema operativo invitado para ejecutar sobre él los servicios, sino que lo hace sin este intermediario. Esta tecnología se denomina de contenedores, siendo un contenedor un programa, servicio o sistema que queremos desplegar. Esta arquitectura se puede ver en la siguiente ilustración:

Contenedores de Docker

Al no utilizar máquinas virtuales es capaz de conseguir un mayor rendimiento, ya que el consumo de recursos es menor. Sin embargo, gracias al uso del kernel de Linux es capaz de aislar cada contenedor. Esta decisión también aporta otras características como una mayor seguridad (gracias a estar aislados) o un despliegue más rápido de los recursos.

Leer más

Procesamiento del lenguaje natural con ElasticSearch

por:

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es la realización de búsquedas textuales. Este problema se puede resolver con muchos enfoques, desde una búsqueda exacta como permiten la mayoría de los lenguajes de programación, hasta la utilización de algoritmos de procesamiento del lenguaje natural.

¿Qué es el procesamiento del lenguaje natural?

El procesamiento del lenguaje natural, conocido también por sus siglas en inglés NPL consiste en desarrollar y aplicar distintas técnicas, metodologías y algoritmos que utilizan como entrada y/o salida texto o voz. La complejidad de este campo, es que agrupa conceptos como:

  • El reconocimiento de voz (traducir la voz en texto).
  • La síntesis de voz (traducir el texto en voz).
  • La traducción en tiempo real.
  • La identificación del idioma del usuario.

Además, hay que tener en cuenta que mientras que la escritura por ordenador es siempre igual, en el caso de la voz cada usuario dependiendo de su lugar, sexo, edad, etc presenta características distintas.

¿Qué es ElasticSearch?

ElasticSearch es un proyecto basado en Apache Lucene, que nos permite tener un servidor para realizar búsquedas. El proyecto fue creado por Shay Banon y tiene como principales características la velocidad de búsqueda y la escalabilidad. Este software es ampliamente usado en buscadores, e-commerce y para tratar el lenguaje natural.

Leer más

¿Cómo usar agile para mejorar tu gestión de proyectos?

por:

¿Cómo usar agile para mejorar tu gestión de proyectos?

En los últimos tiempos y debido a la transformación digital de las empresas, cada vez la gestión de proyectos cobra más importacia. En este artículo te quiero enseñar como la metodología agile permite mejorar tu productividad.

¿Cómo era la gestión de proyectos antes de agile?

Como sabrás, antes de agile también se gestionaban proyectos y la manera de enfocarlo solía ser mediante una metodología en cascada. Esto consiste en una serie de fases, donde al finalizar cada una de ellas se logra una parte del proyecto y luego se salta a la fase siguiente. Un ejemplo podría ser el siguiente:

  1. Toma de requisitos mediante reuniones con el cliente
  2. Análisis del proyecto
  3. Diseño de la implementación
  4. Desarrollo del diseño propuesto
  5. Pruebas

Este modelo de gestión de proyectos tienen bastantes problemas:

  • Hasta finalizar el desarrollo, es imposible validar que lo que se ha hecho cumple con los objetivos principales
  • No se puede hacer pruebas con usuarios hasta mediados del punto 4
  • Poca flexibilidad y posibilidad de realizar cambios

Por todo ello, un grupo de personas se reunió para plantear una metodología mejor que se adaptase a la forma de ser de los proyectos software.

Leer más

5 libros técnicos que deberías leer este verano

por:

5 libros técnicos que deberías leer este verano

Llega agosto, un mes que clásicamente se ha asociado a vacaciones (si nos lees desde España), por ello os propongo unas lecturas para este periodo donde tenemos más tiempo libre. En la piscina, en la playa, en casa a la hora de la siesta…, nunca es mal momento para saborear un buen libro. Aunque, como no podria ser de otra forma, tratándose de una página sobre informática, os vengo a recomendar algunos libros técnicos imprescindibles.

Pero, ¿me tengo que formar en mi tiempo libre?, ante esta pregunta que muchas veces me han planteado, te respondería que sí y no. En mi opinión, lo divido en 3 supuestos:

  1. Si la formación es necesaria para realizar tu trabajo, tendría que dartela tu empresa en tiempo de trabajo
  2. Si son conocimiento que te van a ayudar a mejorar cómo haces tu trabajo, debería dartelo tu empresa, aunque podría que parte fuera en tu tiempo libre
  3. Si las enseñanzas no están relacionadas con tu puesto, tu empresa debería apoyarte con algún medio (tiempo, materiales, cursos…) pero caería más en tu tiempo libre

 

Clean code

El primero de todos es quizás el libro más conocido de programación, Clean Code, en español, Código Limpio. Este libro, que actualmente estoy leyendo es una recopilación de consejos, buenas prácticas y técnicas para que tu código sea de mayor calidad. A mí me gusta mucho decir, que un código que funciona es como sacar un 5 en un examen, es lo mínimo para pasar la prueba. Sin embargo, entre ese 5 (que funcione) y el 10 (que sea de gran calidad), hay mucho espacio por recorrer. Este libro justamente trata de eso, cómo coger un código de 5 y llevarlo lo más cercano posible al 10. Para ello aborda cuestiones como:

  • El estilo del código (identación, nombres, formatos)
  • Gestión de errores
  • Testing
  • Diseño de objectos y clases
  • Concurrencia

Mi recomendación, es que no es un libro que sea lea bien como una novela (leyendo decenas de páginas de seguido), sino que es mejor leer un capítulo cada día o semana, e ir aplicando e interiorizando lo que propone.

Leer más

¿Qué es LaTeX y cómo usarlo fácilmente?

por:

¿Qué es LaTeX y cómo usarlo fácilmente?

En este artículo te vengo a hablar de LaTeX, un sistema para la creación de documentos muy usado en el ámbito científico. Además me gustaría recomendarte un itinerario, para que te puedas adentrar en su uso de manera sencilla.

¿Qué es LaTeX?

LaTeX, como he esbozado anteriormente, es un sistema que permite la creación de documentos. Sin embargo, su funcionamiento difiere mucho del editor de texto por excelencia, Microsoft Word. Esto es debido a que LaTeX funciona de manera similar a HTML, teniendo un conjunto de etiquetas para dar formato y un software capaz de renderizarlo.

¿Qué ventajas tiene LaTeX?

Si bien es cierto que su curva de aprendizaje es bastante pronunciada, LaTeX cuenta con algunas ventajas importantes:

  • Consigue documentos que no pierden calidad al ser ampliados.
  • Facilita la introducción de fórmulas y el uso de la notación matemática.
  • Separa el estilo, del propio contenido.
  • Permite dividir un proyecto en distintos ficheros, que son compilados para obtener el resultado final.
  • Maneja bien la bibliografía, por defecto.

Como puedes apreciar, con las características arriba destacadas, LaTeX se ha convertido en el estándar de facto, para las publicaciones científicas y las obras que contienen simbología matemática.

Leer más

25 recursos para dominar el diseño web

por:

25 recursos para dominar el diseño web

Uno de los grandes aspectos abandonados en el desarrollo web ha sido el diseño y todas sus múltiples vertientes (tipografía, color, experiencia de usuario, etc.). Sin embargo, en los últimos años cada vez es más importante no sólo contar con abundante y compleja funcionalidad, sino con una plataforma llamativa, cómoda y que deslumbre e impresione al usuario. Por esta razón te presento 25 recursos que me han sido de gran utilidad para abordar el diseño web.

 

Elementos básicos del diseño web

En la siguiente sección están recogidos aquellos recursos relacionados con los elementos básicos del diseño web (color, tipografía e iconografía). Definir estos estos elementos es el punto de partida para plantear el aspecto de una web.

El color: el elemento principal del diseño

Desde mi punto de vista el color es el aspecto más relevante a la hora de plantear el diseño de una web. Esto es debido a que el mismo influirá en el público a la que está destinada y a la imagen de marca que posteriormente será creada. Para conocer más en profundidad cómo afecta la elección del color y distintas formas de elegirlos, me resultó de gran ayuda el siguiente recurso (en inglés): Teoría del Color.

Una vez conocido lo anterior, toca buscar inspiración, para ello últimamente estoy utilizando el siguiente recurso, el cual analiza las principales paletas de colores que presentan algunas de las webs más conocidas. Además de la web anterior, Colourlovers permite acceder a un gran conjunto de paletas de colores de gran calidad creadas por una extensa comunidad de diseñadores.

Otro de los recursos más utilizados en los últimos años ha sido el esquema de color propuesto dentro del lenguaje de diseño Material Design de Google. Este cuenta con un generador que te va a permitir elegir y probar cómo se comportan los colores seleccionados.

En el caso de que tu objetivo sea realizar interfaces compuestas principalmente por gráficos, te recomendaría probar la siguiente herramienta para la elección de los colores. Otra de las herramientas que considero imprescindible es Coolors, la cual permite configurar de manera rápida una paleta de colores. Una alternativa a la anterior es Color wheel, creada por Adobe, proporciona múltiples opciones para crear rápidamente paletas de colores.

Leer más

Cursos gratis de informática en LinkedIn

por:

Cursos gratis de informática en LinkedIn

Desde Somos Binarios, una de las cosas que siempre nos gusta publicar son conjuntos de tutoriales para aprender sobre diversos temas relacionados con la tecnología, de forma gratuita. Esta semana nos sumamos al evento que está desarrollando esta semana la plataforma LinkedIn, ofreciendo acceso a todos sus cursos de formación de manera gratuita.

Duración y acceso al evento

Para acceder al evento, el cual dura hasta el 30 de octubre, deberéis tener una cuenta en esta red social empresarial y seguir este enlace. Los cursos que nos ofrece LinkedIn están en Inglés, pero cuentan con subtítulos en este mismo lenguaje, para un mejor seguimiento.

Cursos gratuitos destacables

Entre la multitud de cursos que nos ofrecen, he estado investigando algunos y a continuación, os indico los que considero más destacables:

Cursos de iniciación

Una categoría importante de cursos, son aquellos destinados a principiantes, como pueden ser:

  • Curso esencial de C (+7 horas)
  • Curso esencial de C++ (+7 horas)

Leer más

Primeros pasos con Docker Compose

por:

Instala servicios complejos mediante Docker Compose

En esta entrada, la cual es continuación de nuestro manual de Docker, os enseñamos como montar vuestro propio entorno de producción con Docker Compose.

¿Qué es Docker Compose?

Docker compose es una herramienta creada por Docker, que permite crear un stack de contenedores intercomunicados, partiendo de distintas imágenes en un único equipo.

Como se ha comentado en entradas anteriores, Docker utiliza la tecnología de contenedores para desplegar imágenes. Estas imágenes suelen contener un servicio concreto, por ejemplo un sistema de bases de datos, un servidor web, un compilador específico etc. El gran problema que presenta este sistema es que, normalmente, vamos a necesitar de múltiples de estos servicios para poder hacer funcionar nuestro software. Un ejemplo de lo anterior es WordPress, el cual requiere de un servidor web con soporte para PHP y un sistema de bases de datos, para almacenar todos los datos de la página (usuarios, entradas, categorías, etc). La propuesta de Docker para resolver este tipo de configuraciones que requieren de servicios que están en diversas imágenes, es Docker Compose.

 

Ejemplo de uso de Docker Compose

Lo primero que debemos hacer es instalar esta tecnología, para ello lo mejor es que sigáis el propio manual de los creadores.

Para este ejemplo he decidido utilizar MyBB, un excelente sistema de foros que usábamos antiguamente en Somos Binarios, el cual viene junto con un servidor web en una imagen. Pero como requisito presenta la necesidad de tener que utilizar una base de datos, así que vamos a utilizar la imagen de MySQL. Si buscaís un ejemplo de WordPress podéis utilizar el de la documentación oficial.

Leer más

Desplegando contenedores Docker fácilmente con Kitematic

por:

Desplegando contenedores Docker facilmente con Kitematic

Esta entrada es la continuación de la entrada Virtualización con Docker: primeros pasos, os invitamos a visitarla, si no conocéis Docker.

Quizás uno de los “problemas” que uno nota al usar Docker es que necesita, para su gestión, un uso intensivo de la terminal. Esto dependiendo de lo acostumbrados que estemos a usarla puede sernos un problema, aunque para muchos administradores de servidores es toda una ventaja.

Kitematic o cómo desplegar contenedores Docker fácilmente

Kitematic la forma mas sencilla de desplegar contenedores Docker

Kitematic surge para ayudar a todos aquellos que busquen usar Docker de una manera visual, sin necesidad alguna de utilizar la línea de comandos. Este proyecto está desarrollado bajo la filosofía Open Source y está disponible para Mac OS  y Windows.

Leer más

Cómo es un móvil por dentro

por:

como es un movil por dentro la cabecera

Casualmente he tenido la oportunidad de tener un móvil, no muy antiguo, que se estropeó de forma súbita y sin arreglo, lo cual he aprovechado para escribir este artículo sobre cómo es un móvil por dentro.

Telefono desmontado para ver cómo es por dentro

Empezando por la parte trasera tenemos:

  1. La carcasa de la batería
  2. La estructura posterior de plástico
  3. La placa base del teléfono
  4. La pantalla y la estructura delantera del teléfono
  5. El protector de la pantalla, el cual suele ser de cristal o de algún tipo de plástico

Como se puede apreciar las partes más interesantes son la 3 y la 4 ya que en las mismas están los componentes que consiguen darle vida al teléfono.

Leer más