Javascript, parte VI. APIs de HTML5. Algunos ejemplos



Documentos relacionados
Javascript parte II: AJAX

Manual de guía para Clientes Sistema MoTrack

Parte III: AJAX y REST

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

MANUAL DE USO DE LAS ESTADÍSTICAS GENERADAS POR WEBALIZER

Curso de HTML5 y CSS3

Resumen de la Tesina. Autor: Adrià Batet López. Tutor: Víctor Pascual Ayats

Botón de Pago Instapago versión 1.1 TECNOLOGÍA INSTAPAGO C.A.

Instalar y configurar W3 Total Cache

Anexo B. Comunicaciones entre mc y PC

Aplicaciones en Tiempo Real con node.js Por: Oscar Gracia. Aplicaciones en tiempo real con node.js. Marzo

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

Direcciones IP y máscaras de red

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW):

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Ubuntu Server HOW TO : SQUID. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar servidor proxi Squid.

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

TUTORIAL. Configuración de cuentas de correo electrónico

Para este caso vamos a suponer que son los siguientes:

POPCORN.JS: GOOGLE MAPS

PUBLICAR EN LA RED. Ponente: Javier Paricio Rodríguez

Escritorio remoto y VPN. Cómo conectarse desde Windows 7

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

Modelos de gestión de contenidos

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

COMO INSTALAR Y CONFIGURAR UN SERVIDOR DNS

Aplicación para Dispositivos Móviles Android para el Registro, Visualización e Intercambio de Etiquetas Geolocalizadas

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Acceder a correo de 1000tentaciones.com a través de web.

Manual CMS Mobincube

Configuración de DNS seguros

MANUAL BASICO DE WEBEX

QUE ES UN SERVIDOR DNS POR: ING-ESP PEDRO ALBERTO ARIAS QUINTERO. Este Es un documento donde se comentan algunos aspectos de un servidor DNS

Si quieres saber cuál es tu IP, escribe en Google: cuál es mi IP. Escribe en el buscador Google: cuál es mi ip

MANUAL DE CREACIÓN DE CARPETAS PARA ACCESO POR FTP DE CLIENTES EN UN NAS

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

Introducción...2. Primeros pasos...3. Monitorizar las métricas clave...4. Obtén métricas sobre la forma en que la gente usa tu Página...

Introducción al desarrollo para plataformas móviles con Phonegap

Creación de páginas Web FrontPage

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Su uso conlleva una serie de ventajas y desventajas propias del uso de estas herramientas.

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Parte IIIb: Seguridad en APIs REST

Juan Ramón Pérez Pérez

MANUAL DE USUARIO CREACIÓN DE UNA GYMKHANA

TELEFÓNICA VIDEOCONFERENCIA WEB

Manual de uso de la página Web en la zona restringida

ENTORNO DE DESARROLLO MICROSOFT.NET 2010

Manual del Programa Conecta 3V Para Teléfonos Móviles.

PLATAFORMA EDUCATIVA DE LA JCYL ENLACES A TUTORIALES DE INTERÉS:

JavaScript toma su sintaxis de los lenguajes de programación más conocidos, fundamentalmente C/C++, aunque también algo de Pascal.

INSERTAR UNA GALERÍA DE FOTOS REALIZADA EN UNA WEB EXTERNA COMO SLIDE EN UNA PÁGINA O SECCIÓN DE LA WEB

Tema 6: Comparativa CORBA/Servicios Web

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Tema 1 HTTP y aplicaciones web

BANNERS CÍCLICOS CON JAVASCRIPT

GUÍA BÁSICA USUARIO MOODLE 2.6

Guía de instalación de la carpeta Datos de IslaWin

DOCUMENTO DE AYUDA PARA LA INTRODUCCIÓN DE LAS COORDENADAS EN FUENTES Y MANANTIALES

Configuración de correo en Mozilla Thunderbird

Ejemplos básicos de webmathematica para profesores

En el presente capítulo se describe la programación del instrumento virtual y cómo

UNIVERSIDAD DE SALAMANCA

Guía de inicio rápido a

Tecnologías De La Información Y Comunicación I. Firewall Y Proxy. Integrantes: Héctor Duran. Katherine Zumelzu

MANUAL DE ACTUALIZACIÓN DEL DEA. Versión del DEA del 10/04/2012

Servidor DNS. DNSmasq. Rocío Alt. Abreu Ortiz

para jóvenes programadores

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

Aplicateca API Validador de Móviles Certificados SMS -

Práctica 3: Estudio de los protocolos HTTP, SMTP, POP3 e IMAP mediante un analizador de red: Wireshark

Cómo capturar páginas web con el programa GNU Wget

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

BREVE TUTORIAL SOBRE MANEJO DE MAPSOURCE Y TRANSMISIÓN DATOS A GPS

Taller de Introducción

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

Novedades PhotoGestion 5

Unidad 4. Principios básicos de internet

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido

ATAQUE CON SLOWLORIS A SERVIDORES APACHE VULNERABLES

Payslip for SAP Provide HCM People

Qué necesito saber para tener mi sitio web en Internet?

Cómo acceder a Google Drive? Tiene más funcionalidades una cuenta de Google?

CÓMO INSERTAR UN LIBRO ELECTRÓNICO DESDE UN PDF, DOC, PPT, FOTOS CREADO EN UNA WEB EXTERNA COMO SCRIBD EN UNA PÁGINA O SECCIÓN PARA VERLO ON-LINE

SUBIR ARCHIVOS CON FTP. TRABAJAR EN UN SERVIDOR REMOTO. CREAR UNA PÁGINA WEB CON PROGRAMACIÓN PHP. (CU00814B)

Roles y Características

2.- Utilizar el administrador de contenidos, para modificar el contenido de cualquier página o producto.

Servicio de Mapas. Portal Inteligente Medellín Documentación de la Arquitectura de Software

Iptables, herramienta para controlar el tráfico de un servidor

TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR

Introducción Delicious Algunas características: Sitio para acceder a esta herramienta Qué es Delicious?...

Transcripción:

Javascript, parte VI APIs de HTML5 Algunos ejemplos

1 Introducción APIs de HTML5 2

Por qué lo llaman HTML cuando quieren decir Javascript? 3 La parte más interesante de HTML5 son los APIs Javascript, más que el HTML en sí Los nuevos APIs abren la puerta a cosas hasta ahora imposibles en la web (sin usar plugins) Gráficos 2D/3D Acceso al hardware: micrófono/cámara, GPS, estado de la batería,... Conectividad bidireccional en tiempo real... Además de los estándares (W3C), otras organizaciones desarrollan nuevos APIs (p.ej. Mozilla) https://wiki.mozilla.org/webapi

2 Gráficos APIs de HTML5 4

Gráficos 2D: Canvas 5 Canvas: zona rectangular en la que se puede dibujar en 2D a base de primitivas geométricas sencillas (líneas, arcos, curvas de Bézier, rectángulos,...) <canvas id="canvas" width="150" height="150"> </canvas> <script> var canvas = document.getelementbyid("canvas") var ctx = canvas.getcontext("2d"); ctx.fillstyle = "rgb(200,0,0)"; ctx.fillrect (10, 10, 55, 50); ctx.fillstyle = "rgba(0, 0, 200, 0.5)"; ctx.fillrect (30, 30, 55, 50); </script> https://developer.mozilla.org/es/docs/canvas_tutorial

Gráficos 2D: Canvas (II) 6 También se pueden dibujar imágenes, hacer transformaciones 2D (rotación, escalado, traslación,...),... function draw() { var ctx = document.getelementbyid('canvas').getcontext('2d'); var img = new Image(); img.src = 'images/rhino.jpg'; img.onload = function(){ for (i=0;i<4;i++){ for (j=0;j<3;j++){ ctx.drawimage(img,j*50,i*38,50,38); } } } } images/rhino.jpg Canvas resultante

Gráficos 2D: Canvas (y III) 7 En resumen, las primitivas de dibujo son de muy bajo nivel, aunque hay numerosas librerías de terceros que facilitan la tarea de hacer por ejemplo gráficos de tipo estadístico, animaciones y juegos Genéricas: Kinetic.js, Fabric.js, Easel.js, Paper.js,... Listado de algunas librerías que usan Canvas Para juegos: Jaws, Cocos2D, Akihabara,... https://github.com/bebraw/jswiki/wiki/game-engines (atención, no todos usan canvas)

3 Acceso al dispositivo APIs de HTML5 8

Device APIs 9 APIs que permiten el acceso a ciertas características del hardware o del entorno Hay un grupo de trabajo del W3C: http:// www.w3.org/2009/dap/ Algunos ejemplos: Battery Status API Media Capture and Streams (hay un API y una extensión del <input type= file >) Vibration API Algunos no están directamente relacionados con el hardware: Web Intents (compartir datos con otras apps) GPS: Geolocation (no está técnicamente incluído en el DAP)

Media Capture API 10 Acceder a cámara/micrófono es sencillo: getusermedia Por ahora hay que usar un prefijo en la implementación: webkitgetusermedia, mozgetusermedia,... <video id="mivideo" autoplay></video> HTML //en la realidad habrá que poner webkitgetusermedia, etc navigator.getusermedia({video: true, audio: true}, function(stream) { var video = document.getelementbyid('mivideo'); video.src = window.url.createobjecturl(stream); }, function(error) { console.log(error);} ); Javascript

Guardar video/foto 11 En principio también debería ser sencillo, a través de los métodos record() y stop() del stream... pero el soporte en los navegadores actuales es casi inexistente La solución compatible más extendida consiste en copiar el video frame a frame en un canvas oculto y guardarlo desde allí (por ejemplo https:// www.webrtc-experiment.com/recordrtc/). Este truco también sirve para capturar una imagen estática Ejemplo: capturar foto desde la webcam enviándola a canvas Tutorial: https://developer.mozilla.org/en-us/docs/webrtc/ Taking_webcam_photos Demo: http://jsfiddle.net/codepo8/agare/4/ Y luego cómo se sube al servidor?: con AJAX: http://stackoverflow.com/ questions/13198131/how-to-save-a-html5-canvas-as-image-on-a-server

Web RTC 12 El API anterior es parte de un estándar denominado Web RTC (Real Time Communication), que permite la comunicación audio/ video punto a punto entre navegadores Demo en http://www.webrtc.org/demo https://talky.io/

Geolocalización Geolocalización 13 Nos permite averiguar la posición geográfica del usuario (lat, lon) Hay métodos más precisos (GPS) y menos (a partir de la dirección IP o usando la red GSM) El método exacto por el que se está calculando la posición es transparente al desarrollador Javascript Lo único que nos da el API son las coordenadas. Necesitaremos algún servicio adicional dsi queremos dibujar un mapa con la posición, etc. (p.ej. Google Maps) Este API no funciona en Explorer 8 y anteriores. Se pueden usar librerías alternativas, como Google Gears (funciona, pero el API es distinto)

Ejemplo simple Geolocalización 14 Sin chequeo de errores ni opciones de localización navigator.geolocation.getcurrentposition() obtiene la posición: pero no la devuelve directamente. Hay que pasarle el nombre de una función que hará de callback (recibirá la posición en un parámetro) La posición recibida es un objeto con dos campos: coords (con info como latitud, longitud, etc) y timestamp Antes de obtener la posición el navegador va a pedir permiso al usuario. Si no se concede, el callback no se ejecuta navigator.geolocation.getcurrentposition(mostrarposicion); function mostrarposicion(pos) { alert("estás en (" + pos.coords.latitude + "," + pos.coords.longitude +")"); }

Gestión de errores Geolocalización 15 Se le puede pasar un segundo argumento a getcurrentposition: una función que se llamará si se ha producido algún error Por ejemplo el usuario no ha dado permiso, o no hay dispositivos de localización La función recibe un argumento que es un objeto con dos campos. El más interesante es code, un código de error: 1:permiso denegado, 2:No se puede calcular la posición, 3:Timeout, 0:Error desconocido navigator.geolocation.getcurrentposition(mostrarposicion, vererror); function mostrarposicion(pos) {... } function vererror(error) { if (error.code == 1) alert( No has dado permiso para ver tu posición ) }

Opciones de localización Geolocalización 16 Tercer parámetro (opcional) de getcurrentposition: objeto con tres campos: enablehighaccuracy (booleano): indica si queremos una localización de precisión (p.ej. GPS) o nos basta con una aproximada (p.ej. usando la red de móvil) timeout (nº en milisegundos) tiempo que estamos dispuestos a esperar que el dispositivo nos dé una posición. Pasado este tiempo se generará un error de timeout maximumage (nº en milisegundos) si el dispositivo tiene en cache una posición con una antigüedad inferior a esta, nos vale, no es necesario que calcule la actual. //queremos alta precisión //pero nos vale con la posición de hace un minuto navigator.geolocation.getcurrentposition(mostrarposicion, vererror, {enablehighaccuracy: true, maximumage:60000});

4 Conectividad APIs de HTML5 17

WebSockets 18 Con AJAX se pueden hacer peticiones con Javascript en cualquier momento Pero la iniciativa debe partir del cliente La única forma de comprobar si hay novedades en el servidor es el polling a intervalos regulares WebSockets: conectividad bidireccional en tiempo real El cliente puede solicitar algo al servidor en cualquier momento, pero también este notificarle algo en cualquier momento Perfecto para juegos online, chats,... Websockets es un protocolo específico, no va sobre HTTP. Así que necesitamos también una implementación de WebSockets en el lado del servidor.

API de Websockets en el navegador 19 Abrir un WebSocket var connection = new WebSocket('ws://www.loquesea.com') Enviar un mensaje al servidor //Enviar una cadena connection.send('hola servidor'); //Enviar un archivo como datos binarios //Suponemos que en el HTML hay un <input type= file id= archivo > var file = document.getelementbyid( archivo ).files[0]; connection.send(file); Recibir datos del servidor: onopen, onerror, onmessage connection.onmessage = function(mensaje) { console.log('el servidor dice: ' + mensaje.data); };

Referencias 20 Libros (en http://proquest.safaribooksonline.com/ accediendo desde la red de la UA) The modern Web Peter Gasston, No Starch, 2013 Learn HTML5 by creating fun games, Rodrigo Silveira, Packt, 2013 Webs: HTML5Rocks.com http://www.sitepoint.com/html/