¿Por qué actualizar WordPress?

¿Por qué actualizar WordPress?

Muchos usuarios nos preguntan por qué actualizar WordPress, en primer lugar siempre pensamos en la seguridad, sin embargo hay otros factores tan importantes como la seguridad.

Repasemos rápidamente: ¿ qué es WordPress ?

WordPress es un sistema de administración de contenidos muy extendido en los últimos tiempos, pertenece a las plataformas de código abierto, Licencia Pública General Gnu (GPL), tiene comunidades globales con millones de usuarios, programadores y mucha asistencia.

Sobre todo, WordPress se diferencia del resto de sistemas CMS gracias a la gran variedad de opciones de alojamiento, funcionalidades, plugins y gran cantidad de plantillas disponibles en el mercado, unas gratuitas y otras bajo compra.

Cabe destacar que según datos recogidos recientemente, cada día se crean más de 100.000 sitios nuevos en WordPress, ya sea en la propia plataforma wordpress.com o en otros hostings o alojamientos.

Si es tan popular, ¿ por qué actualizar WordPress me tiene que preocupar ?

Puesto que es un sistema totalmente abierto, en consecuencia el código está al alcance de todo tipo de usuarios, unos con fines encaminados a la mejora del popular CMS frente a otros programadores que prefieren trabajar más bien en buscar agujeros por donde insertar virus y provocar el caos.

Es una de las grandes diferencias entre un desarrollo a medida y uno bajo gestor de contenidos CMS.

Por qué actualizar WordPress

Qué hacer antes de actualizar WordPress

Si bien una actualización de WordPress no es complicada, esta puede resultar todo lo contrario e incluso llegar a ser una misión imposible.

Seguramente si hemos conocido desde el principio como está desarrollado el proyecto a actualizar, responderemos con más sencillez a por qué actualizar WordPress, comprobaremos si se separó correctamente el diseño de la lógica de funcionamiento, es decir, ¿se realizó un tema hijo de WordPress?

Si el tema a actualizar sufrió retoques o modificaciones sobre el tema original (padre), probablemente y casi con toda seguridad, una actualización afectaría al correcto funcionamiento. Por lo tanto, lo primero es separar el núcleo o Cuore de WordPress del diseño y otras funcionalidades extras.

LA SEGURIDAD

Cómo ya hemos comentado al principio, el motivo principal de por qué actualizar WordPress es precisamente la seguridad.

En este artículo no vamos a entrar en el detalle sobre cómo construir para seguridad o que plugin es el más adecuado ya que el tema que nos trae aquí es el por qué actualizar.

Cada nueva versión de WordPress que aparece está encaminada por un lado a mejorar el entorno de trabajo y sus funcionalidades y por otro a mejorar la seguridad del sistema según las nuevas tecnologías y mejoras en el programa.

Para asegurar que no perdemos datos, lo ideal si nuestro hosting no tiene un sistema robusto de backups, es realizar una copia de todo el sitio, tanto a nivel de archivos como de bases de datos.

Seguridad en WordPress

LOS PLUGINS

Antes de realizar una actualización de versión del tema hay que verificar minuciosamente que cada uno de los plugins que hay instalados, va a responder correctamente tras su instalación.

Es necesario comprobar que cada plugin será compatible en la nueva versión, no hay un sistema automático que indique esto, por lo tanto hay que acceder al sitio web de cada plugin y comprobar que sus desarrolladores han validado el correcto funcionamiento para la última versión de WordPress.

En consecuencia a lo anteriormente dicho, realizaremos la actualización de los plugins de uno en uno y comprobando el funcionamiento después de cada uno.

Lenguajes de desarrollo web

Lenguajes de desarrollo web

Introducción al desarrollo web

El desarrollo web es el conjunto de técnicas, tecnologías y habilidades, orquestadas por un programador, y aplicadas para la obtención de nuevos sitios web.

Todo desarrollo de aplicaciones web está apoyado con un lenguaje de programación orientado a internet. Dependiendo del lenguaje elegido para el proyecto, éste podrá ser estructurado u orientado a objetos, si bien ambos tipos pueden convivir en su ejecución, es importante definir el proyecto  desde el origen en uno u otro sentido.

Un desarrollo web cuenta con dos zonas distintas y relacionadas entre sí, la parte del servidor y la parte del cliente. La primera se considera la fuente donde se produce la información en formato HTML y a la que el cliente va a acceder a través de un navegador web.

Un factor muy importante a tener en cuenta a la hora de escoger un ‘lenguaje web’ es cómo se produce la información del lado del servidor, y cómo se reproduce en la parte del cliente.

En las reuniones previas a la concepción del proyecto, es indispensable contar con la figura de un desarrollador web con experiencia que analice la clase de información a tratar en el proyecto así como la ‘lógica de negocio’, con el fin de asesorar qué lenguaje y sistema se va a implementar.

Por otro lado se deber realizar un estudio minucioso acerca de qué sistema de bases de datos va a convivir con el lenguaje de programación web elegido, atendiendo siempre a la funcionalidad del proyecto.

Cómo son los lenguajes de desarrollo web para internet

Muchas veces tendemos a enumerar los diferentes lenguajes que usamos tanto en diseño como en programación web confeccionando una lista rápida llena de acrónimos, HTML, JAVASCRIPT, PHP, ASP, C#,… Es importante clasificarlos según la función que realiza cada uno, si son estáticos o dinámicos, interpretados o compilados, etc.

No vamos a decir que unos son más importantes que otros, no obstante el programador web va a dedicar la mayor parte del trabajo, con diferencia, al lenguaje que está del lado del servidor, en lo que se denomina popularmente ‘back-end’. En este lado se realizan las labores para la futura administración del sitio web: altas, bajas, modificaciones, cómo se construye la presentación del contenido y tantas otras como necesite el proyecto.

Básicamente, el lenguaje del servidor genera la información en HTML que viajará por la red hasta llegar al navegador del cliente, y ese proceso tiene que ser lo más seguro y rápido posible con el fin de acercar al usuario final una experiencia positiva.

Lenguaje interpretado o compilado

Cómo ya hemos mencionado, no se trata de valorar si un sistema es mejor que otro, más bien se trata de decidir en función de la información a tratar, cómo se va generar ésta y cómo va a presentarse al cliente o internauta.

En un lenguaje compilado, cada vez que se produzca una actualización de contenido es necesario que el lenguaje genere un nuevo ‘paquete’ que será el que estará accesible al usuario, conlleva un tiempo de espera importante mientras se compila la información, pero una vez generado la máquina lo distribuye en tiempos ínfimos.

Leguajes de internet. Imagen

Encontramos que para un proyecto con numerosas actualizaciones, por ejemplo un periódico, blog, tienda online, no es recomendable. Normalmente este tipo de lenguajes están bajo licencia privada y tienen más demanda en plataformas empresariales.

En un lenguaje interpretado, la información no tiene que producir ningún paquete cada vez que hay una actualización, lo que hace el lenguaje es traducir cada instancia del código,  generando dinámicamente la última información de la que requiere, es ideal para sitios con actualizaciones frecuentes.

La norma general es que el código esté bajo licencia libre ‘Open Source’ con la ventaja de tener acceso a una enorme cantidad de recursos e información.

Autocomplete PHP

A estas alturas y con lo que hemos aprendido podemos deducir la importancia de tener un alojamiento web o hosting de calidad capaz de responder a las exigencias de nuestro proyecto,  que deseamos se ejecute con precisión y rapidez.

Rasmus Lerdorf, creador de PHP

Entrevista con el Creador de PHP Rasmus Lerdorf a cerca del futuro del OpenSource en el marco del sofware libre. El artículo tiene ya un tiempo, pero es muy interesante.

Cualidades ideales de un desarrollador web

Diseño web

  • Ser capaz de generar código limpio
  • Trabajar con programación orientada a objetos
  • Aplicar técnicas de programación seguras para la web
  • Utilizar estándares actuales como son los recomendados por el W3C
  • Está a la última en posicionamiento SEO técnico
  • Tener conocimientos de accesibilidad y usabilidad web
  • Emplear procedimientos que permitan la actualización o evolución del proyecto a futuras versiones del lenguaje empleado

¿Y qué pasa con el diseño web?

Si bien hasta ahora hemos hecho énfasis en la parte de desarrollo web, es cierto que el diseño es la parte que más va a captar la atención del internauta. En el diseño también se integran pequeños fragmentos de programación web con el fin de reproducir la información de forma dinámica.

La correcta distribución de la información así como su construcción es determinante a la hora de facilitar la usabilidad y proporcionar una experiencia satisfactoria al usuario.

En esta fase se destaca la importancia del correcto uso de las hojas de estilo css, que aportarán estética y funcionalidad, sobre todo a la hora de adaptar el contenido a los distintos dispositivos de las  versiones móviles (Smartphone y Tablet).

Lo ideal es contar siempre con un diseño web a medida, concebido desde los principios fundamentales del diseño web, ya que un sitio web mal construido no va a tener una repercusión optima en las analíticas, proporcionando unas tasas de rebote altas que son muy perjudiciales para el posicionamiento SEO, recuerda que una buena web no se consigue en una de esas plataformas que ofrecen crear tu página con solo unos clics, una web eficiente requiere de un trabajo serio.

¿Es importante la accesibilidad web?

El  W3C (World Wide Web Consortium) es el organismo a nivel mundial que define las reglas a aplicar a una web para que sea accesible y tenga un nivel usabilidad como mínimo aceptable.

Lo ideal es llegar al nivel: accesibilidad web AA, una calificación resultado de tener un sitio web que puede ser visitado sin limitaciones por cualquier usuario independientemente de su condición física o discapacidad. Este esfuerzo no queda sin premio, por lo que los buscadores premiarán el trabajo realizado con mejores calificaciones respecto a competidores que no han tenido en cuenta este factor dentro del diseño web.

Imagen del W3C

Si te ha gustado este artículo y buscas un desarrollo web en Madrid profesional, contacta con nosotros, estamos encantados de poder ayudarte, tenemos los conocimientos, pero sobre todo tenemos la experiencia para comprometernos a realizar el proyecto que necesitas.

Lista SELECT desde ARRAY (PHP)

Lista SELECT desde ARRAY (PHP)

ista SELECT dede ARRAY (php) es un ejemplo muy sencillo de cómo ‘alimentar’ una lista select a través de la información que le proporciona una variable tipo array. Este ejemplo nos servirá para mostrar en un desplegable los meses del año que estarían cargados en una variable definida como array.

Para conseguirlo vamos a

  • Definir el array.
  • Crear una función que construya el select.
  • Crear el formulario HTML correspondiente.

Vamos a suponer que necesitamos para un formulario mostrar un campo desplegable con los meses del año.

Código fuente para crear un select dinámico

<?php

$meses = array(‘enero’,’febrero’,’marzo’,’abril’,’mayo’,’junio’,’julio’, ‘agosto’,’septiembre’,’octubre’,’noviembre’,’diciembre’);

echo ‘<form name=»form1″ id=»form1″ method=»post» action=»»>’;

$nombre = ‘meses’; $resultado = lista($nombre, $meses); echo $resultado; echo ‘</form>’;

function lista($nombre, $meses){

$array = $meses; $txt= «<select name=’$nombre’ id=’$nombre’>»;

for ($i=0; $i<sizeof($array); $i++){

$txt .= «<option value=’$i’>». $array[$i] . ‘</option>’;

} $txt .= ‘</select>’; return $txt; }

?>calendarioHemos creado la variable tipo array $meses y le asignamos los meses del año, a continuación creamos la cabecera del formulario (para nuesto ejemplo dejamos el action vacio) y creamos una variable $nonbre que define el name y id del select que se construye en la función lista.

Creamos la función lista que se encarga de definir el select y completarlo con la información del array a través de un bucle for.

Autocomplete PHP, MySQL y Jquery.

Autocomplete PHP, MySQL y Jquery.

Este artículo es la continuación de ‘Tutorial para crear un buscador PHP para web muy sencillo’, debido en gran parte al gran número de peticiones donde nos preguntan cómo poder enriquecer dicho buscador con una función autocomplete en PHP, MySQL y Jquery.

Cierto es que los sistemas de autocompletado están presentes en la mayoría de INPUTS o cajas de entrada, además facilitan al usuario la gestión a realizar contribuyendo a una buena experiencia de usuario (usabilidad).

Ahora bien, es importante desarrollar sistemas rápidos y eficaces, éstos no deben de consumir demasiados recursos con el fin de evitar al usuario molestos tiempos de espera mientras los sistemas de autocompletado se resuelven.

Por un lado, recomendamos elegir la arquitectura adecuada para BBDD de MySQL y por otro minimizar los accesos a la BBDD, con esto ganaremos mucha velocidad.

Cómo en nuestro anterior artículo dedicado al buscador, vamos a seguir utilizando la base de datos de provincias de España y en esta ocasión nos vamos a apoyar en la potencia que nos ofrece la universal galería de Jquery, como dice su lema: ‘escribe menos, haz más’.

El código fuente está comentado con el fín de facilitar su uso. Puedes ver el funcionamiento en la siguiente demo.

Autocomplete PHP

Pasos para autocomplete PHP con MySQL y Jquery

1. CONEXIÓN CON LA BASE DE DATOS MYSQL

Al inicio del programa definimos la conexión para la base de datos, a diferencia de nuestro anterior post, aquí vamos a conectar siguiendo la directiva de la nueva versión de PHP 7

<?php// Primero definimos la conexión a la base de datos, para que se fácil 
cambiar los parámetros si procede.define('HOST_DB', 'localhost');
//Nombre del host, nomalmente localhostdefine('USER_DB', 'root');
//Usuario de la bbdddefine('PASS_DB', '');
//Contraseña de la bbdddefine('NAME_DB', 'spainprov'); //Nombre de la bbdd?>

2. FUNCIONES CONTECTAR Y DESCONECTAR

Una vez más, para facilitar las futuras acciones, defino las funciones para abrir o cerrar conexión con la BBDD, aunque para el ejemplo puede resultar escesivo, es una muy buena práctica para contribuir siempre a la seguridad.

<?php
// Definimos la conexión (versión PHP 7)
function conectar(){
    global $conexion; 
//Definición global para poder utilizar en todo el contexto    
$conexion = mysqli_connect(HOST_DB, USER_DB, PASS_DB, NAME_DB)    
or die ('NO SE HA PODIDO CONECTAR AL MOTOR DE LA BASE DE DATOS');    
mysqli_select_db($conexion, NAME_DB)    or die
('NO SE ENCUENTRA LA BASE DE DATOS ' . NAME_DB);}
function desconectar(){    
global $conexion;    
mysqli_close($conexion);}
?>

3. CREO UNA FUNCIÓN PARA REALIZAR LA BÚSQUEDA

En nuestro caso queremos completar o mejor dicho autocompletar la caja de búsqueda con las provincias a medida que vayamos tecleando, si se necesitasen usar otras tablas para otros campos o realizar un futuro cambio, tan solo tendríamos que volver a esta función y actualizarla.

<?php
function opciones() {
global $conexion; //Variable que contendrá el resultado de la búsqueda
$texto = '';
conectar();
mysqli_set_charset($conexion, 'utf8');
// para indicar a la bbdd que vamos a mostrar la info en utf8
//Contulta para recoger la información de todas las provincias
$sql = "SELECT * FROM provincia ORDER BY provincia";
$resultado = mysqli_query($conexion, $sql); //Ejecución de la consulta
//Si hay resultados...
if (mysqli_num_rows($resultado) > 0){
while($fila = mysqli_fetch_assoc($resultado)){
// se recoge la información según la vamos a pasar a la variable de javascript
$texto .= '"' . $fila['Provincia'] . '",';
}
}else{
$texto = "NO HAY RESULTADOS EN LA BBDD";
}
// Después de trabajar con la bbdd, cerramos la conexión
(por seguridad, no hay que dejar conexiones abiertas)
mysqli_close($conexion);
return $texto;}
?>

4. INICIAMOS EL TEXTO PARA  AUTOCOMPLETAR

Pasamos el resultado de la búsqueda que realizamos sobre el texto que nos interesa a una variable ‘llamando a la función opciones()’, en nuestro caso vamos a pasar las provincias que contiene nuestra tabla y le vamos a dar un formato válido para que se pueda utilizar en la parte de javaScript, quedando así: «Albacete», «Álava», …

$opciones = opciones();

5. MONTAMOS LA PARTE HTML

Definimos la cabecera con las llamadas a los correspondientes scripts y css.

<!doctype html>
<html>
<head>
<meta charset=»utf-8″>
<title>Buscador web php autocompletado – WebReunidos</title>

// Parte correspondiente a Jquery

<link rel=»stylesheet» href=»//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css»>
<script src=»https://code.jquery.com/jquery-1.12.4.js»></script>
<script src=»https://code.jquery.com/ui/1.12.0/jquery-ui.js»></script>
<script>
$( function() {

// Variable que recoge el resultado de la consulta sobre la tabla Provincias, Jquery trabajará sobre este resultado para dinamizar el funcionamiento.
var availableTags = [<?php echo $opciones ?>];
$( «#buscador» ).autocomplete({
source: availableTags
});
} );
</script>
</head>

6. CUERPO DEL HTML

Por último incluimos el INPUT que va a realizar el trabajo para que sea autocomplete PHP.

<body>

<div class=»ui-widget»>
<label for=»buscador»>Buscador : </label>
<input id=»buscador»>
</div>

</body>
</html>

Con este código ya estamos en condiciones de optimizar el funcionamiento de nuestro buscador php, tal y como decíamos al principio de este artículo que esperamos os sea de mucha utilidad.

MyISAM vs InnoDB

MyISAM vs InnoDB

Base de datosEn este post, vamos a tratar de explicar las características mas importantes que hay a la hora de trabajar con bases de datos entre los motores Myisam vs Innodb, qué ventajas tiene Myisam  frente a Innodb o desventajas, así como las diferencias existentes, muy enfocado al desarrollo web.

A la hora de abarcar un proyecto web que sobre todo va a tener diversas ejecuciones o comunicaciones con bases de datos, es muy importante conocer las capacidades del servidor (alojamiento) que va a gestionar nuestro desarrollo, no solo en capacidad de almacenamiento sino también en cuanto a versión de software y base de datos que van a manejarlo.

Los motores más populares y usados en desarrollo web son MyISAM e InnoDB, su correcta elección definirá como se gestionarán los recursos en cuanto a velocidad, consumo de esos recursos y calidad de servicio.

Cada proyecto tiene su casuística, a la que debemos prestar atención, conociendo el número de usuarios que accederán o pueden acceder simultáneamente a realizar altas, bajas, etc., o bien si tenemos miles de accesos solamente a consulta.

En el presente artículo no vamos a entrar al detalle de que diseño de base de datos o sistema de desarrollo es más idoneo a la hora de manipular la información, evidentemente precisa de un capítulo a parte, pero ni que decir tiene que es un punto muy importante, el cual se ha de tratar con detenmiento.

Características de MyISAM:

  • Se establece por defecto cuando se crea una tabla, salvo que se indique lo contrario.
  • Soporta transacciones.
  • Realizar bloqueo de registros.
  • Soporta un gran número de consultas SQL, lo que se refleja en una velocidad de carga muy rápida para nuestra web.

Como desventaja, señalamos que no realiza bloqueo de tablas, esto puede ser un problema si como se ha mencionado anteriormente hay un acceso simultáneo al mantenimiento de registros por parte de varios usuarios.

Características de InnoDB

  • Bloqueo de registros. Importante para accesos múltiples al mantenimiento de tablas, es decir, ejecuciones de sentencias tipo INSERT o UPTATE, éstas ejecuciones tienen una velocidad optimizada.
  • Capacidad para soportar transacciones e integridad de datos, es decir previene el alta de datos no adecuados.
  • Aplica las características propias de ACID (Atomicity, Consistency, Isolation and Durability), consistentes en garantizar la integridad de las tablas.

Como desventaja, marcamos que al ser un tipo de motor que define un sistema más complejo de diseño de tablas, reduce el rendimiento en velocidad para desarrollo que requieren de un elevado número de consultas.

Base datos archivosRECOMENDACIONES

Un solo gestor de mantenimiento para una plataforma que requerirá muchas consultas o visitas: MyISAM

Necesitas velocidad y mínimo consumo de recursos en servidor, espacio, RAM, etc.: MyISAM

Varios o muchos gestores de mantenimiento: InnoDB

Desarrollo donde se prioriza el diseño relacional de bases de datos: InnoDB

Independientemente del sistema que se elija, hay que hacer un buen diseño de la estructura y funcionalidad de la base de datos, si bien este tema requiere un capítulo aparte, os damos unas nociones a tener en cuenta.

La información o datos no deben almacenarse de cualquier manera. Hay que buscar el mayor aprovechamiento de los recursos que tenemos a nuestra disposición, tanto a nivel de almacenamiento como de rendimiento.

Hay que mantener la consistencia de la información durante todo el ciclo de vida de la base de datos, más aún si los datos que se manejan son críticos, por ejemplo los salarios de una organización.

Los primeros factores que realizará el analista, serán el análisis del sistema que servirá de modelo, la observación de los elementos que lo componen y la descomposición en partes mucho más pequeñas.

Cuando se consiga un modelo sólido, estaremos en condiciones de pasar a la parte de Qué es el desarrollo web.

Si te ha gustado este artículo y estás buscado una empresa de diseño y desarrollo web profesional para un proyecto importante, te recomendamos que confíes siempre en programadores con experiencia.

YouTube responsive video

YouTube responsive video

Video YouTube

En este tutorial te enseñamos a incluir en tu web un video YouTube responsive, con el fin de que se vea correctamente en monitores de escritorio, tablets y dispositivos móviles.

Cada ve más, Google tiene más en cuenta las páginas web que tienen una versión móvil correcta y por lo tanto están siendo premiadas.

Una de las complicaciones con las que un diseñador web se puede encontrar está en cómo adaptar un vídeo de YouTube para que se visualice correctamente en todos los dispositivos. En este tutorial, no vamos a crear una versión móvil sino que vamos de una manera muy sencilla a explicar cómo se puede adaptar un vídeo para que sea líquido, y por lo tanto se ajuste correctamente a cualquier tamaño.

Como todos sabemos la inclusión del vídeo pasa por utilizar una etiqueta llamada <iframe>, que si bien no es buena para la accesibilidad, es necesaria para el funcionamiento de códigos externos, lo más normal es que no tengamos acceso al control de lo que se está ejecutando dentro de ese marco, sin embargo si tenemos la oportunidad de manejar las características de iframe.responsive web para youtube

Definición de etiquetas y CSS

Aunque no es obligatorio, sí es recomendable la inclusión de la etiqueta viewport con el fin de que se vea correctamente en dispositivos Tablet y móviles.

<meta name="viewport" content="width=device-width, user-scalable=no"> 
<!-- opcional -->

El código CSS para este ejemplo es muy simple

<style>#video {	
width: 100%;
height:1%;
min-height:380px;
overflow:hidden;
float:left;
margin-bottom: 30px;
margin-top: 7px;
}
#video iframe {
width: 100%;
min-height:360px;
}
</style>

Para el cuerpo de nuestro código solo nos queda tener la url del  vídeo que queremos incluir, luego cada uno maquetará a su gusto.

<body>
<h1>YouTube responsive video: Demo</h1>
<div id="video">
<iframe src="https://www.youtube.com/embed/ELDTyQj_UL4?autoplay=1" frameborder="0"
allowfullscreen></iframe>
</div>
<p>Tutorial desarrollado por: <a href="https://webreunidos.es"
title="Diseño Web Madrid: WebReunidos" target="_self">WebReunidos</a></p>
</body>

Aquí tenéis una Demo de YouTube responsive video de cómo funciona este código tan simple.

Como siempre os dejo el código completo.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no">
<!-- opcional --><title>Documento sin título</title>
<style>
#video {
width: 100%;
height:1%;
min-height:380px;
overflow:hidden;
float:left;
margin-bottom: 30px;
margin-top: 7px;
}
#video iframe {
width: 100%;
min-height:360px;
}
</style>
</head>
<body>
<h1>YouTube responsive video: Demo</h1>
<div id="video">
<iframe src="https://www.youtube.com/embed/ELDTyQj_UL4?autoplay=1" frameborder="0"
allowfullscreen></iframe>
</div>
<p>Tutorial desarrollado por: <a href="https://webreunidos.es"
title="Diseño Web Madrid: WebReunidos" target="_self">WebReunidos</a></p>
</body>
</html>

Creo que con este tutorial se ha demostrado que tener un YouTube responsive video es simple.