SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
www.interlat.co	
  –	
  info@interlat.co	
  -­‐	
  	
  h2p://www.facebook.com/interlat	
  -­‐	
  www.twi2er.com/interlat	
  -­‐	
  PBX:	
  57(1)	
  658	
  2959	
  	
  -­‐	
  Bogotá	
  -­‐	
  Colombia	
  
Aula	
  Virtual:	
  h2p://www.interlat.co/moodle/
Conferencista:	
  
Carlos Alonso Pérez	
  
País: España
Módulo IV:	
  
Móvil Apps Desarrollo con
HTML5
Índice	
  de	
  contenidos
• La	
  Web	
  
• Caso	
  prácPco	
  de	
  desarrollo	
  
• jQuery	
  Mobile	
  
• HTML5
La	
  web:	
  Evolución
• Inicialmente:	
  Herramienta	
  para	
  visualizar	
  archivos	
  remotos	
  
que	
  cambiaban	
  muy	
  ocasionalmente.	
  
• El	
  contenido	
  se	
  genera	
  dinámicamente	
  en	
  los	
  servidores.	
  
• Se	
  añade	
  interacPvidad	
  a	
  los	
  siPos	
  web.	
  
• Pasan	
  unos	
  años	
  en	
  blanco...	
  
• Se	
  permite	
  comunicar	
  a	
  la	
  web	
  con	
  los	
  servidores	
  sin	
  
necesidad	
  de	
  recargar	
  la	
  página	
  al	
  completo.	
  
• Se	
  añade	
  soporte	
  naPvo	
  y	
  estándar	
  para	
  muchas	
  
caracterísPcas	
  mulPmedia	
  y	
  de	
  gráficos.	
  Se	
  aumentan	
  las	
  
prestaciones	
  con	
  caracterísPcas	
  como	
  geolocalización,	
  
almacenamiento	
  local	
  de	
  datos,	
  etc...
La	
  web
• La	
  web	
  es	
  un	
  entorno	
  completo	
  de	
  programación	
  de	
  
aplicaciones	
  que	
  uPliza:	
  
• HTML	
  para	
  definir	
  su	
  estructura	
  
• CSS	
  para	
  definir	
  la	
  presentación	
  
• JS	
  para	
  la	
  lógica
Desarrollo	
  web:	
  Evolución
• El	
  desarrollo	
  es	
  simplemente	
  maquetación.	
  
• Se	
  añade	
  interacPvidad	
  con	
  JS,	
  pero	
  solo	
  como	
  elemento	
  
“decoraPvo”,	
  nada	
  importante.	
  Nadie	
  se	
  plantea	
  que	
  JS	
  valga	
  para	
  
otra	
  cosa.	
  
• Aparecen	
  DOM	
  y	
  AJAX.	
  Las	
  páginas	
  web	
  ya	
  pueden	
  comunicarse	
  con	
  
servidores	
  sin	
  recargar	
  la	
  página.	
  Son	
  mucho	
  más	
  usables	
  y	
  úPles.	
  
• 2007:	
  Aparece	
  Google	
  Gears:	
  Extensión	
  para	
  navegadores	
  que	
  
añadía	
  capacidades	
  como	
  almacenamiento	
  local,	
  threads	
  en	
  
background,	
  etc...	
  
• Actualmente	
  podemos	
  desarrollar	
  aplicaciones	
  web	
  prácPcamente	
  
como	
  si	
  se	
  tratase	
  de	
  aplicaciones	
  de	
  escritorio.
Aplicaciones	
  Web:	
  Ventajas
• Para	
  el	
  usuario:	
  
– No	
  Pene	
  necesidad	
  de	
  instalar	
  la	
  aplicación	
  ni	
  desinstalarla	
  si	
  no	
  
le	
  gusta.	
  
– Actualizaciones	
  transparentes.	
  
• Para	
  el	
  desarrollador:	
  
– Ventajas	
  de	
  sus	
  usuarios:	
  
• No	
  hay	
  que	
  escribir	
  código	
  de	
  instaladores/desinstaladores	
  
• Desarrollar	
  una	
  aplicación	
  con	
  pequeños	
  incrementos	
  y	
  saber	
  
que	
  todos	
  los	
  usuarios	
  estarán	
  actualizados	
  siempre.	
  
– La	
  web	
  es	
  mulPplataforma,	
  por	
  tanto,	
  las	
  aplicaciones	
  web	
  son	
  
mulPplataforma.
Aplicaciones	
  Web:	
  Desventajas
• Se	
  ejecuta	
  en	
  el	
  navegador	
  
• Los	
  datos	
  se	
  deben	
  descargar	
  
del	
  servidor.
Rendimiento
Caso	
  PrácPco
• ObjePvos	
  
• Problemas	
  
• Soluciones	
  
• Viabilidad	
  
• Decisión	
  final
ObjePvos:	
  Triunfar
ObjePvos:	
  Triunfar
¿Qué	
  hace	
  falta	
  para	
  triunfar?
¿Qué	
  hace	
  falta	
  para	
  triunfar?
¿Qué	
  hace	
  falta	
  para	
  triunfar?
¿Qué	
  hace	
  falta	
  para	
  triunfar?
Y ...
Llegar	
  a	
  todos	
  los	
  públicos
Fragmentación
Fragmentación	
  en	
  
Sistemas	
  OperaPvos
Fragmentación	
  en	
  pantallas
Fragmentación	
  método	
  de	
  entrada
Fragmentación	
  hardware
Fragmentación	
  errores	
  soqware
Fragmentación	
  conclusión
Equilibrio
Capacidades utilizadas
Clientes Potenciales
vs
Solución:	
  Desarrollo	
  
mulPplataforma
Solución:	
  Tecnologías
Viabilidad
• Geolocalización	
  (GPS)	
  
• Reproducción	
  mulPmedia	
  
• Sensores	
  de	
  movimiento	
  
• Almacenar	
  datos	
  locales	
  
• Acceso	
  offline
• Otros	
  sensores	
  
• Cámara	
  
• NoPficaciones	
  
• Web	
  GL	
  
• Alto	
  rendimiento
h2p://mobilehtml5.org/
SI NO
Decisión	
  final
jQuery-­‐Mobile
• MulPplataforma,	
  mulPdisposiPvo	
  y	
  mulPnavegador	
  
• Interfaz	
  opPmizada	
  para	
  disposiPvos	
  tácPles	
  
• Diseño	
  comletamente	
  personalizable	
  
• HTML5	
  no	
  intrusivo	
  
• Carga	
  contenido	
  dinámico	
  a	
  través	
  de	
  AJAX	
  
• Construido	
  sobre	
  el	
  ya	
  conocido	
  jQuery	
  
• Ligero	
  
• Mejora	
  progresiva	
  
• ...
Probando	
  nuestras	
  aplicaciones
• Apache	
  HTTP	
  Web	
  Server	
  
+	
  
• DisposiPvos	
  
• DisposiPvos	
  reales	
  
• Navegadores	
  remotos	
  
• h2p://www.deviceanywhere.com	
  
• Emuladores	
  y	
  Simuladores	
  
• Amigos
Construyendo	
  una	
  app	
  
mulPplataforma
• h2p://diplomado-­‐test.herokuapp.com/demos
Primeros	
  pasos
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Your Title</title>
<link rel="stylesheet"
href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css"/>
<script src="http://code.jquery.com/jquery-1.8.2.min.js">
</script>
<script type="text/javascript"
src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js">
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
</body>
</html>
Primeros	
  pasos
<!DOCTYPE html>
<html>
<head>
...
<meta name="viewport"
content="width=device-width, initial-scale=1">
...
</head>
<body>
</body>
</html>
• Inicialmente	
  no	
  debería	
  estar	
  escalado	
  ni	
  ser	
  más	
  
ancho	
  que	
  el	
  disposiPvo.
Arquitectura
• Unidad	
  básica:	
  page	
  
• Cada	
  página	
  es	
  un	
  div	
  con	
  un	
  role	
  específico	
  
• Un	
  documento	
  HTML	
  puede	
  contener	
  varias	
  páginas,	
  
pero	
  sólo	
  una	
  será	
  visible.
Arquitectura
• Cada	
  página	
  está	
  compuesta	
  de	
  otras	
  secciones	
  
• Cada	
  sección	
  es	
  un	
  div	
  con	
  un	
  role	
  específico
Role Descripción Role Descripción
page Define	
  una	
  página header Cabecera	
  de	
  página
content Contenido	
  de	
  página footer Pie	
  de	
  página
navbar Barra	
  de	
  navegación. button Un	
  botón
controlgroup Un	
  componente collapsible
Panel	
  de	
  contenido	
  
colapsable
collapsible-set
Grupo	
  de	
  paneles	
  
colapsables fieldcontain
Contenedor	
  de	
  campos	
  de	
  
formulario
listview Una	
  lista dialog Cuadro	
  de	
  diálogo
slider Control	
  de	
  valores	
  booleanos
La	
  página
• La	
  única	
  sección	
  obligatoria	
  es	
  content
<body>
<div data-role="page">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<p>Content</p>
</div>
<div data-role="footer"
data-position="fixed">
<h4>Footer</h4>
</div>
</div>
</body>
Navegación
• Se	
  uPlizan	
  enlaces	
  HTML	
  <a>
• Tipos	
  de	
  enlaces:	
  
• A	
  otra	
  página	
  del	
  mismo	
  documento	
  
• A	
  una	
  página	
  en	
  otro	
  documento	
  
• Absolutos,	
  a	
  otra	
  página	
  web	
  
• Especiales	
  (SMS,	
  llamada,	
  etc...)	
  
• jQuery	
  Mobile	
  se	
  encarga	
  de	
  manejar	
  el	
  historial	
  para	
  
poder	
  volver	
  atrás.
Navegación
• Enlace	
  a	
  otra	
  página	
  del	
  mismo	
  documento
<body>
<div data-role="page" data-title="Pagina 1">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<p>Go to page <a href="#page2">2</a></p>
</div>
<div data-role="footer"
data-position="fixed">
<h4>Footer</h4>
</div>
</div>
<div data-role="page" id="page2" data-title="Pagina 2"
data-add-back-btn="true" data-back-btn-text="Previous">
<div data-role="header">
<h1>Header</h1>
</div>
<div data-role="content">
<p>Content of page 2</p>
</div>
<div data-role="footer"
data-position="fixed">
<h4>Footer</h4>
</div>
</div>
</body>
Navegación
• El	
  enlace	
  una	
  otra	
  página	
  de	
  otro	
  documento	
  es	
  un	
  enlace	
  normal,	
  
el	
  framework	
  detectará	
  que	
  se	
  trata	
  de	
  un	
  documento	
  jQM	
  y	
  lo	
  
usará	
  como	
  tal.	
  
• jQM	
  descarga	
  el	
  nuevo	
  documento	
  con	
  AJAX.	
  
• Reglas:	
  
• El	
  desPno	
  del	
  enlace	
  debe	
  ser	
  un	
  documento	
  jQM	
  
• El	
  desPno	
  debe	
  estar	
  alojado	
  en	
  el	
  mismo	
  dominio.	
  
• El	
  desPno	
  debe	
  ser	
  un	
  documento	
  jQM	
  de	
  una	
  sola	
  página.	
  
• El	
  enlace	
  no	
  debe	
  declarar	
  atributo	
  target.	
  
• jQM	
  permite	
  precargar	
  (prefetch)	
  enlaces	
  con	
  alta	
  probabilidad	
  
de	
  ser	
  visitados	
  para	
  reducir	
  Pempos	
  de	
  espera.
<a href=‘page2.html’ data-prefetch>Go to page 2</a>
Navegación
• Enlaces	
  a	
  páginas	
  externas	
  a	
  nuestra	
  aplicación.	
  
• Reglas:	
  
• Añadiendo	
  el	
  atributo	
  data-­‐rel=”external”	
  al	
  elemento	
  <a>	
  
• Definiendo	
  el	
  atributo	
  target=”_blank”	
  al	
  elemento	
  <a>	
  
• Cuando	
  el	
  dominio	
  enlazado	
  es	
  disPnto	
  al	
  de	
  nuestro	
  documento.
<a href=‘http://www.google.com’ data-rel=”external”>Go to Google</a>
<a href=‘http://www.google.com’ target=”_blank”>Go to Google</a>
<a href=‘http://www.google.com’>Go to Google</a>
Navegación
• Enlaces	
  especiales	
  son	
  enlaces	
  que	
  desencadenan	
  acciones	
  
especiales	
  dependiendo	
  del	
  protocolo	
  que	
  uPlizan.
Acción Protocolo Ejemplo
Llamada	
  telefónica tel <a	
  href=”tel:+18002233544”>...</a>
Llamada	
  facePme facetime <a	
  href=”facePme:101010”>...</a>
Llamada	
  Skype skype <a	
  href=”skype:skype_user?call”>...</a>
Mandar	
  email mailto <a	
  href=”mailto:a@example.com”>...</a>
Mandar	
  SMS sms <a	
  href=”sms://+18002233544”>...</a>
h2p://www.iana.org/assignments/uri-­‐schemes.html
Navegación
• Podemos	
  decidir	
  con	
  qué	
  transición	
  se	
  cambiará	
  de	
  página.	
  
• jQM	
  implementa	
  las	
  transiciones	
  usando	
  CSS3,	
  que,	
  en	
  la	
  mayoría	
  
de	
  los	
  disposiPvos	
  está	
  acelerado	
  por	
  hardware,	
  si	
  está	
  disponible.	
  
• jQM	
  aplicará,	
  por	
  defecto,	
  la	
  animación	
  inversa	
  para	
  el	
  evento	
  de	
  
vuelta	
  atrás.
• Creamos	
  una	
  página	
  para	
  cada	
  sección	
  y	
  las	
  enlazamos	
  desde	
  la	
  
página	
  principal.	
  
• Cada	
  página	
  Pene	
  un	
  script	
  .js	
  asociado,	
  que	
  se	
  enlaza	
  desde	
  la	
  
página	
  principal.
Navegación
...
<script src="js/storage.js"></script>
<script src="js/canvas.js"></script>
<script src="js/video.js"></script>
</head>
<body>
<div data-role="page" id="main-menu">
<div data-role="header">
<h1 id="header-title">HTML 5 Catalog</h1>
</div>
<div data-role="content">
<a href="#geolocation">Geolocation</a>
<a href="pages/canvas.html">Canvas</a>
<a href="pages/storage.html">Offline Storage</a>
<a href="pages/video.html">Video Player</a>
</div>
...
Componentes
Componentes
Componentes
Componentes
Componentes
<div data-role="page" id="main-menu">
<div data-role="header">
<h1 id="header-title">HTML 5 Catalog</h1>
</div>
<div data-role="content">
<ul data-role="listview">
<li><a href="#geolocation">Geolocation</a></li>
<li><a href="pages/canvas.html">Canvas</a></li>
<li><a href="pages/storage.html">Offline Storage</a></li>
<li><a href="pages/video.html">Video Player</a></li>
</ul>
</div>
<div data-role="footer" data-position="fixed">
<h1>&nbsp;</h1>
</div>
</div>
• El	
  enlace	
  a	
  geolocaPon	
  es	
  interno,	
  porque	
  en	
  algunos	
  navegadores	
  
no	
  funciona	
  la	
  geolocalización	
  si	
  se	
  enlaza	
  de	
  forma	
  externa.
Javascript	
  API:	
  Eventos
• Del	
  document	
  (aplicación):	
  
• mobileinit,	
  ready,	
  load,	
  orientaPonchange	
  	
  
• De	
  cada	
  página:	
  
• pagebeforecreate,	
  pagecreate,	
  pageinit,	
  pageremove	
  
• pagebeforeload,	
  pageload,	
  pageloadfailed	
  +	
  argumento	
  
• De	
  cada	
  elemento	
  del	
  DOM	
  
• tap,	
  taphold,	
  swipeleq,	
  swiperight
<script>
$(document).bind("mobileinit", function(){
// Place for global configuration of jQM
});
</script>
Javascript	
  API:	
  UPlidades
• UPlidades	
  data-*	
  
• Filtro	
  :jqmData	
  
• Métodos	
  jqmData	
  y	
  jqmRemoveData	
  
• UPlidades	
  de	
  página	
  
• $.mobile.activePage	
  referencia	
  la	
  página	
  (div)	
  acPva	
  
• $.mobile.pageContainer	
  referencia	
  la	
  div	
  content	
  de	
  la	
  página	
  
acPva.	
  
• $.mobile.changePage()	
  cambio	
  de	
  página	
  programáPcamente	
  
• $.mobile.loadPage()	
  carga	
  una	
  página,	
  pero	
  no	
  la	
  muestra
Javascript	
  API:	
  Contenido	
  dinámico
• Debemos	
  indicar	
  a	
  jQM	
  que	
  vamos	
  a	
  añadir	
  contenido	
  para	
  que	
  
aplique	
  los	
  esPlos	
  CSS,	
  transiciones,	
  etc...	
  necesarios.	
  
• Creación	
  
• $(‘#new_page’).page();
• $(‘#new_a’).button();
• Actualización	
  
• $(‘#checkbox’).val(‘true’).checkboxradio(‘refresh’);
• $(‘#list’).listview(‘refresh’);
• $(‘#changed_page’).trigger(‘create’);
E3quetas	
  semán3cas
Acceso	
  Hardware
Almacenamiento	
  local
Conec3vidad
Mul3media
Gráficos
Acceso	
  Hardware:	
  Geolocalización
• El	
  API	
  de	
  Geolocalización	
  permite	
  a	
  los	
  programas	
  JS	
  acceder	
  a	
  la	
  posición	
  en	
  el	
  
mundo	
  del	
  usuario.	
  
• Los	
  navegadores	
  que	
  soportan	
  geolocalización	
  definen	
  el	
  objeto	
  
navigator.geolocation,	
  que	
  Pene	
  tres	
  métodos:	
  
• getCurrentPosition():	
  Solicita	
  la	
  posición	
  del	
  usuario	
  
• watchPosition():	
  Solicita	
  la	
  posición	
  del	
  usuario	
  y	
  monitoriza	
  los	
  cambios	
  
• clearWatch():	
  Indica	
  que	
  quiere	
  dejar	
  de	
  monitorizar	
  la	
  posición	
  del	
  usuario.	
  
• El	
  navegador	
  puede	
  acceder	
  a	
  la	
  posición	
  de	
  tres	
  maneras:	
  
• Sensor	
  GPS	
  
• IP	
  
• WIFI	
  
• Cualquier	
  método	
  requiere	
  comunicación	
  con	
  servidores	
  o	
  satélites,	
  por	
  tanto,	
  este	
  
API	
  será	
  siempre	
  asíncrono.
Acceso	
  Hardware:	
  Geolocalización
<script src="http://maps.googleapis.com/maps/api/js?sensor=true">
</script>
$('#geolocation').live('pageinit', function(){
navigator.geolocation.getCurrentPosition (function(pos) {
var lat = pos.coords.latitude;
var lng = pos.coords.longitude;
var latlng = new google.maps.LatLng (lat, lng);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var $content = $("#geolocation div:jqmData(role=content)");
$content.height (screen.height - 100);
var map = new google.maps.Map ($content[0], options);
new google.maps.Marker ({
map: map,
animation: google.maps.Animation.DROP,
position: latlng
});
}, function(e) {
alert("Error: " + e.message);
}, {maximumAge: 30000, timeout: 30000, enableHighAccuracy: true});
});
Gráficos
$('#canvas').live('pageinit', function() {
var context = $('#theCanvas')[0].getContext('2d');
context.beginPath();
context.rect(20, 20, 200, 100);
var grd = context.createLinearGradient(20, 20, 220, 120);
grd.addColorStop(0, '#8ED6FF');
grd.addColorStop(1, '#004CB3');
context.fillStyle = grd;
context.fill();
context.stroke();
context.beginPath();
context.arc(70, 200, 50, 0, 2 * Math.PI, false);
grd = context.createLinearGradient(30, 150, 120, 250);
grd.addColorStop(0, '#000000');
grd.addColorStop(1, '#BC2920');
context.fillStyle = grd;
context.fill();
context.stroke();
});
Almacenamiento	
  local
• localStorage	
  y	
  sessionStorage	
  son	
  objetos	
  JS	
  persistentes	
  que	
  guardan	
  
datos	
  serializados	
  (cadenas)	
  
• localStorage	
  guarda	
  los	
  datos	
  hasta	
  que	
  se	
  borran	
  explícitamente,	
  
sessionStorage	
  hasta	
  que	
  el	
  navegador	
  se	
  cierra	
  
• Same-­‐origin	
  policy
var name = localStorage.username;
if (!name) {
localStorage.username = “Carlos”;
}
var point = { x: 1, y: 2 };
localStorage.point = JSON.stringify(point);
var readPoint = JSON.parse(localStorage.point);
delete localStorage.point;
Almacenamiento	
  local
<script>
$('#storage').bind('pageinit', function(){
refreshList();
$('#add_btn').bind('click', function() {
var $input = $('#item');
if (!$input.val()) {
alert("You have to add some text!");
} else {
var arr = localStorage.items
? JSON.parse(localStorage.items) : [];
arr.push($input.val());
localStorage.items = JSON.stringify(arr);
}
refreshList();
});
});
function refreshList() {
var $list = $("#storage ol:jqmData(role=listview)").empty();
var arr = localStorage.items
? JSON.parse(localStorage.items) : [];
if (arr.length) {
$.each(arr, function(index, value) {
var $li = $('<li>').text(value);
$list.append($li);
});
}
$list.listview("refresh");
}
</script>
...
<div data-role="content">
<input type="text" id="item"
placeholder="Add Item..." value=""/>
<input type="button" id="add_btn"
value="Add Item" data-icon="plus" data-inline="true"/>
<ol data-role="listview" data-inset="true">
<ol>
</div>
MulPmedia
$('#video').live('pageinit', function(){
var player = $('#theVideo');
var status = $('#status');
player.bind('loadStart', function(event) { status.val("Loading..."); });
...
$('#play_btn').bind('click', function() {
var video = $('#theVideo').get(0);
var playables = VIDEO_RESOURCES.filter(function(videoObj) {
return video.canPlayType(videoObj.type);
});
if (playables.length) {
video.src = playables[0].path;
video.load();
video.play();
} else {
alert("No compatible video format provided!");
}
});
});
var VIDEO_RESOURCES = [
{type: 'video/mp4', path: '/html5catalog/resources/141.mp4' },
{type: 'video/webm', path: '/html5catalog/resources/movements_ES.webm' },
{type: 'video/ogg', path: '/html5catalog/resources/movements_ES.ogg' }
];
• Dependiendo	
  de	
  cada	
  navegador	
  y	
  plataforma	
  se	
  soportará	
  un	
  
formato	
  de	
  vídeo	
  u	
  otro,	
  por	
  tanto	
  debemos	
  proporcionar	
  varios.
www.interlat.co	
  –	
  info@interlat.co	
  -­‐	
  	
  h2p://www.facebook.com/interlat	
  -­‐	
  www.twi2er.com/interlat	
  -­‐	
  PBX:	
  57(1)	
  658	
  2959	
  	
  -­‐	
  Bogotá	
  -­‐	
  Colombia	
  
Aula	
  Virtual:	
  h2p://www.interlat.co/moodle/
Gracias!
Carlos Alonso Pérez
Developer
Twitter: @calonso
LinkedIn: mrcalonso
Mail: info@mrcalonso.com

Más contenido relacionado

La actualidad más candente

Presentación html5
Presentación html5Presentación html5
Presentación html5aydimdagam
 
Internacionalización y multilingüismo en WordPress
Internacionalización y multilingüismo en WordPressInternacionalización y multilingüismo en WordPress
Internacionalización y multilingüismo en WordPressDani Reguera Bakhache
 
Curso WPO - Web Performance Optimization 2013
Curso WPO - Web Performance Optimization 2013Curso WPO - Web Performance Optimization 2013
Curso WPO - Web Performance Optimization 2013Pablo Martinez Fernandez
 
Seminario html5
Seminario html5Seminario html5
Seminario html5UDECI
 
Presentacion Wp Versión PDF
Presentacion Wp Versión PDFPresentacion Wp Versión PDF
Presentacion Wp Versión PDFJosé Fonseca
 
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDesarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDarío BF
 
Sitios web multingües con WordPress
Sitios web multingües con WordPressSitios web multingües con WordPress
Sitios web multingües con WordPressDani Reguera Bakhache
 
Wordpress como framework - DarioBF en WordCamp Barcelona
Wordpress como framework - DarioBF en WordCamp BarcelonaWordpress como framework - DarioBF en WordCamp Barcelona
Wordpress como framework - DarioBF en WordCamp BarcelonaDarío BF
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesHéctor Garduño Real
 
Ejemplos reales TPW
Ejemplos reales TPWEjemplos reales TPW
Ejemplos reales TPWYesenia_1226
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicMicael Gallego
 
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...Dámaso Velázquez Álvarez
 
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin Caratula
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin CaratulaEl Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin Caratula
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin CaratulaLuis Angel Galindo
 

La actualidad más candente (20)

Presentación html5
Presentación html5Presentación html5
Presentación html5
 
SWCbba_bootcamp_html5_2
SWCbba_bootcamp_html5_2SWCbba_bootcamp_html5_2
SWCbba_bootcamp_html5_2
 
Internacionalización y multilingüismo en WordPress
Internacionalización y multilingüismo en WordPressInternacionalización y multilingüismo en WordPress
Internacionalización y multilingüismo en WordPress
 
Curso WPO - Web Performance Optimization 2013
Curso WPO - Web Performance Optimization 2013Curso WPO - Web Performance Optimization 2013
Curso WPO - Web Performance Optimization 2013
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Presentacion Wp Versión PDF
Presentacion Wp Versión PDFPresentacion Wp Versión PDF
Presentacion Wp Versión PDF
 
wp-cli
wp-cliwp-cli
wp-cli
 
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDesarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
 
Sitios web multingües con WordPress
Sitios web multingües con WordPressSitios web multingües con WordPress
Sitios web multingües con WordPress
 
Wordpress como framework - DarioBF en WordCamp Barcelona
Wordpress como framework - DarioBF en WordCamp BarcelonaWordpress como framework - DarioBF en WordCamp Barcelona
Wordpress como framework - DarioBF en WordCamp Barcelona
 
PHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajesPHP, casos de éxito y comparativas con otros lenguajes
PHP, casos de éxito y comparativas con otros lenguajes
 
Ejemplos reales TPW
Ejemplos reales TPWEjemplos reales TPW
Ejemplos reales TPW
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
 
El internet
El internetEl internet
El internet
 
Maquetación web con html5
Maquetación web con html5Maquetación web con html5
Maquetación web con html5
 
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...
Ponencia en la WordCamp Madrid 2019: Migrando un portal en ASP.NET de 150.000...
 
Diseño web
Diseño webDiseño web
Diseño web
 
HTML5 y CSS3
HTML5 y CSS3HTML5 y CSS3
HTML5 y CSS3
 
HTML5 y CSS3
HTML5 y CSS3HTML5 y CSS3
HTML5 y CSS3
 
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin Caratula
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin CaratulaEl Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin Caratula
El Web 2.0 MóVil Caminando Hacia El Teleco 2.0 Sin Caratula
 

Destacado

Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Carlos Alonso Pérez
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?Carlos Alonso Pérez
 
Construyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaConstruyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaCarlos Alonso Pérez
 
Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16Carlos Alonso Pérez
 
Case Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developerCase Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developerCarlos Alonso Pérez
 
Cassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one dayCassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one dayCarlos Alonso Pérez
 
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)Carlos Alonso Pérez
 

Destacado (16)

Javascript - 2014
Javascript - 2014Javascript - 2014
Javascript - 2014
 
Enumerados Server
Enumerados ServerEnumerados Server
Enumerados Server
 
Swift and the BigData
Swift and the BigDataSwift and the BigData
Swift and the BigData
 
Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)Construyendo y publicando nuestra primera app multi plataforma (II)
Construyendo y publicando nuestra primera app multi plataforma (II)
 
Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5Aplicaciones móviles - HTML5
Aplicaciones móviles - HTML5
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?
 
Construyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataformaConstruyendo y publicando nuestra primera app multiplataforma
Construyendo y publicando nuestra primera app multiplataforma
 
iOS Notifications
iOS NotificationsiOS Notifications
iOS Notifications
 
Cassandra for impatients
Cassandra for impatientsCassandra for impatients
Cassandra for impatients
 
Javascript
JavascriptJavascript
Javascript
 
Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16Scalable data modelling by example - Cassandra Summit '16
Scalable data modelling by example - Cassandra Summit '16
 
iCloud
iCloudiCloud
iCloud
 
Case Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developerCase Study: Troubleshooting Cassandra performance issues as a developer
Case Study: Troubleshooting Cassandra performance issues as a developer
 
Cassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one dayCassandra Workshop - Cassandra from scratch in one day
Cassandra Workshop - Cassandra from scratch in one day
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
Sensors (Accelerometer, Magnetometer, Gyroscope, Proximity and Luminosity)
 

Similar a Desarrollo de Apps Móviles con HTML5

Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaJerilee Dueñas Rengifo
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaCommunity Managers Latam
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...Interlat
 
Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Fernando Puente
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.pptJ T "Tom" Johnson
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryGonzalo Chacaltana
 
Curso SharePoint 2013 overview
Curso SharePoint 2013 overviewCurso SharePoint 2013 overview
Curso SharePoint 2013 overviewVladimir Medina
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carreraBorja Merino
 
Drupalcamp 2014 reconstruir un medio digital idealista news
Drupalcamp 2014   reconstruir un medio digital idealista newsDrupalcamp 2014   reconstruir un medio digital idealista news
Drupalcamp 2014 reconstruir un medio digital idealista newsMartín .
 
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014Rodrigo Alfaro
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiGuillermo Nassi
 
Tienda Virtual.- Gygacom
Tienda Virtual.- GygacomTienda Virtual.- Gygacom
Tienda Virtual.- GygacomHikaiwaba
 

Similar a Desarrollo de Apps Móviles con HTML5 (20)

Backbeam
BackbeamBackbeam
Backbeam
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
 
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidadDrupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
 
HTML5
HTML5HTML5
HTML5
 
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt
#2-Revelar Algunos Tesoros de Web 2,0-(Esp)-Feb07.ppt
 
Mini curse
Mini curseMini curse
Mini curse
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-Memory
 
Cappuccino
Cappuccino Cappuccino
Cappuccino
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
Curso SharePoint 2013 overview
Curso SharePoint 2013 overviewCurso SharePoint 2013 overview
Curso SharePoint 2013 overview
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carrera
 
Drupalcamp 2014 reconstruir un medio digital idealista news
Drupalcamp 2014   reconstruir un medio digital idealista newsDrupalcamp 2014   reconstruir un medio digital idealista news
Drupalcamp 2014 reconstruir un medio digital idealista news
 
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
Tienda Virtual.- Gygacom
Tienda Virtual.- GygacomTienda Virtual.- Gygacom
Tienda Virtual.- Gygacom
 

Último

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTGestorManpower
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 

Último (20)

IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SST
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 

Desarrollo de Apps Móviles con HTML5

  • 1. www.interlat.co  –  info@interlat.co  -­‐    h2p://www.facebook.com/interlat  -­‐  www.twi2er.com/interlat  -­‐  PBX:  57(1)  658  2959    -­‐  Bogotá  -­‐  Colombia   Aula  Virtual:  h2p://www.interlat.co/moodle/ Conferencista:   Carlos Alonso Pérez   País: España Módulo IV:   Móvil Apps Desarrollo con HTML5
  • 2. Índice  de  contenidos • La  Web   • Caso  prácPco  de  desarrollo   • jQuery  Mobile   • HTML5
  • 3. La  web:  Evolución • Inicialmente:  Herramienta  para  visualizar  archivos  remotos   que  cambiaban  muy  ocasionalmente.   • El  contenido  se  genera  dinámicamente  en  los  servidores.   • Se  añade  interacPvidad  a  los  siPos  web.   • Pasan  unos  años  en  blanco...   • Se  permite  comunicar  a  la  web  con  los  servidores  sin   necesidad  de  recargar  la  página  al  completo.   • Se  añade  soporte  naPvo  y  estándar  para  muchas   caracterísPcas  mulPmedia  y  de  gráficos.  Se  aumentan  las   prestaciones  con  caracterísPcas  como  geolocalización,   almacenamiento  local  de  datos,  etc...
  • 4. La  web • La  web  es  un  entorno  completo  de  programación  de   aplicaciones  que  uPliza:   • HTML  para  definir  su  estructura   • CSS  para  definir  la  presentación   • JS  para  la  lógica
  • 5. Desarrollo  web:  Evolución • El  desarrollo  es  simplemente  maquetación.   • Se  añade  interacPvidad  con  JS,  pero  solo  como  elemento   “decoraPvo”,  nada  importante.  Nadie  se  plantea  que  JS  valga  para   otra  cosa.   • Aparecen  DOM  y  AJAX.  Las  páginas  web  ya  pueden  comunicarse  con   servidores  sin  recargar  la  página.  Son  mucho  más  usables  y  úPles.   • 2007:  Aparece  Google  Gears:  Extensión  para  navegadores  que   añadía  capacidades  como  almacenamiento  local,  threads  en   background,  etc...   • Actualmente  podemos  desarrollar  aplicaciones  web  prácPcamente   como  si  se  tratase  de  aplicaciones  de  escritorio.
  • 6. Aplicaciones  Web:  Ventajas • Para  el  usuario:   – No  Pene  necesidad  de  instalar  la  aplicación  ni  desinstalarla  si  no   le  gusta.   – Actualizaciones  transparentes.   • Para  el  desarrollador:   – Ventajas  de  sus  usuarios:   • No  hay  que  escribir  código  de  instaladores/desinstaladores   • Desarrollar  una  aplicación  con  pequeños  incrementos  y  saber   que  todos  los  usuarios  estarán  actualizados  siempre.   – La  web  es  mulPplataforma,  por  tanto,  las  aplicaciones  web  son   mulPplataforma.
  • 7. Aplicaciones  Web:  Desventajas • Se  ejecuta  en  el  navegador   • Los  datos  se  deben  descargar   del  servidor. Rendimiento
  • 8. Caso  PrácPco • ObjePvos   • Problemas   • Soluciones   • Viabilidad   • Decisión  final
  • 11. ¿Qué  hace  falta  para  triunfar?
  • 12. ¿Qué  hace  falta  para  triunfar?
  • 13. ¿Qué  hace  falta  para  triunfar?
  • 14. ¿Qué  hace  falta  para  triunfar? Y ...
  • 15. Llegar  a  todos  los  públicos
  • 25. Viabilidad • Geolocalización  (GPS)   • Reproducción  mulPmedia   • Sensores  de  movimiento   • Almacenar  datos  locales   • Acceso  offline • Otros  sensores   • Cámara   • NoPficaciones   • Web  GL   • Alto  rendimiento h2p://mobilehtml5.org/ SI NO
  • 27. jQuery-­‐Mobile • MulPplataforma,  mulPdisposiPvo  y  mulPnavegador   • Interfaz  opPmizada  para  disposiPvos  tácPles   • Diseño  comletamente  personalizable   • HTML5  no  intrusivo   • Carga  contenido  dinámico  a  través  de  AJAX   • Construido  sobre  el  ya  conocido  jQuery   • Ligero   • Mejora  progresiva   • ...
  • 28. Probando  nuestras  aplicaciones • Apache  HTTP  Web  Server   +   • DisposiPvos   • DisposiPvos  reales   • Navegadores  remotos   • h2p://www.deviceanywhere.com   • Emuladores  y  Simuladores   • Amigos
  • 29. Construyendo  una  app   mulPplataforma • h2p://diplomado-­‐test.herokuapp.com/demos
  • 30. Primeros  pasos <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Your Title</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css"/> <script src="http://code.jquery.com/jquery-1.8.2.min.js"> </script> <script type="text/javascript" src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"> </script> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> </body> </html>
  • 31. Primeros  pasos <!DOCTYPE html> <html> <head> ... <meta name="viewport" content="width=device-width, initial-scale=1"> ... </head> <body> </body> </html> • Inicialmente  no  debería  estar  escalado  ni  ser  más   ancho  que  el  disposiPvo.
  • 32. Arquitectura • Unidad  básica:  page   • Cada  página  es  un  div  con  un  role  específico   • Un  documento  HTML  puede  contener  varias  páginas,   pero  sólo  una  será  visible.
  • 33. Arquitectura • Cada  página  está  compuesta  de  otras  secciones   • Cada  sección  es  un  div  con  un  role  específico Role Descripción Role Descripción page Define  una  página header Cabecera  de  página content Contenido  de  página footer Pie  de  página navbar Barra  de  navegación. button Un  botón controlgroup Un  componente collapsible Panel  de  contenido   colapsable collapsible-set Grupo  de  paneles   colapsables fieldcontain Contenedor  de  campos  de   formulario listview Una  lista dialog Cuadro  de  diálogo slider Control  de  valores  booleanos
  • 34. La  página • La  única  sección  obligatoria  es  content <body> <div data-role="page"> <div data-role="header"> <h1>Header</h1> </div> <div data-role="content"> <p>Content</p> </div> <div data-role="footer" data-position="fixed"> <h4>Footer</h4> </div> </div> </body>
  • 35. Navegación • Se  uPlizan  enlaces  HTML  <a> • Tipos  de  enlaces:   • A  otra  página  del  mismo  documento   • A  una  página  en  otro  documento   • Absolutos,  a  otra  página  web   • Especiales  (SMS,  llamada,  etc...)   • jQuery  Mobile  se  encarga  de  manejar  el  historial  para   poder  volver  atrás.
  • 36. Navegación • Enlace  a  otra  página  del  mismo  documento <body> <div data-role="page" data-title="Pagina 1"> <div data-role="header"> <h1>Header</h1> </div> <div data-role="content"> <p>Go to page <a href="#page2">2</a></p> </div> <div data-role="footer" data-position="fixed"> <h4>Footer</h4> </div> </div> <div data-role="page" id="page2" data-title="Pagina 2" data-add-back-btn="true" data-back-btn-text="Previous"> <div data-role="header"> <h1>Header</h1> </div> <div data-role="content"> <p>Content of page 2</p> </div> <div data-role="footer" data-position="fixed"> <h4>Footer</h4> </div> </div> </body>
  • 37. Navegación • El  enlace  una  otra  página  de  otro  documento  es  un  enlace  normal,   el  framework  detectará  que  se  trata  de  un  documento  jQM  y  lo   usará  como  tal.   • jQM  descarga  el  nuevo  documento  con  AJAX.   • Reglas:   • El  desPno  del  enlace  debe  ser  un  documento  jQM   • El  desPno  debe  estar  alojado  en  el  mismo  dominio.   • El  desPno  debe  ser  un  documento  jQM  de  una  sola  página.   • El  enlace  no  debe  declarar  atributo  target.   • jQM  permite  precargar  (prefetch)  enlaces  con  alta  probabilidad   de  ser  visitados  para  reducir  Pempos  de  espera. <a href=‘page2.html’ data-prefetch>Go to page 2</a>
  • 38. Navegación • Enlaces  a  páginas  externas  a  nuestra  aplicación.   • Reglas:   • Añadiendo  el  atributo  data-­‐rel=”external”  al  elemento  <a>   • Definiendo  el  atributo  target=”_blank”  al  elemento  <a>   • Cuando  el  dominio  enlazado  es  disPnto  al  de  nuestro  documento. <a href=‘http://www.google.com’ data-rel=”external”>Go to Google</a> <a href=‘http://www.google.com’ target=”_blank”>Go to Google</a> <a href=‘http://www.google.com’>Go to Google</a>
  • 39. Navegación • Enlaces  especiales  son  enlaces  que  desencadenan  acciones   especiales  dependiendo  del  protocolo  que  uPlizan. Acción Protocolo Ejemplo Llamada  telefónica tel <a  href=”tel:+18002233544”>...</a> Llamada  facePme facetime <a  href=”facePme:101010”>...</a> Llamada  Skype skype <a  href=”skype:skype_user?call”>...</a> Mandar  email mailto <a  href=”mailto:a@example.com”>...</a> Mandar  SMS sms <a  href=”sms://+18002233544”>...</a> h2p://www.iana.org/assignments/uri-­‐schemes.html
  • 40. Navegación • Podemos  decidir  con  qué  transición  se  cambiará  de  página.   • jQM  implementa  las  transiciones  usando  CSS3,  que,  en  la  mayoría   de  los  disposiPvos  está  acelerado  por  hardware,  si  está  disponible.   • jQM  aplicará,  por  defecto,  la  animación  inversa  para  el  evento  de   vuelta  atrás.
  • 41. • Creamos  una  página  para  cada  sección  y  las  enlazamos  desde  la   página  principal.   • Cada  página  Pene  un  script  .js  asociado,  que  se  enlaza  desde  la   página  principal. Navegación ... <script src="js/storage.js"></script> <script src="js/canvas.js"></script> <script src="js/video.js"></script> </head> <body> <div data-role="page" id="main-menu"> <div data-role="header"> <h1 id="header-title">HTML 5 Catalog</h1> </div> <div data-role="content"> <a href="#geolocation">Geolocation</a> <a href="pages/canvas.html">Canvas</a> <a href="pages/storage.html">Offline Storage</a> <a href="pages/video.html">Video Player</a> </div> ...
  • 46. Componentes <div data-role="page" id="main-menu"> <div data-role="header"> <h1 id="header-title">HTML 5 Catalog</h1> </div> <div data-role="content"> <ul data-role="listview"> <li><a href="#geolocation">Geolocation</a></li> <li><a href="pages/canvas.html">Canvas</a></li> <li><a href="pages/storage.html">Offline Storage</a></li> <li><a href="pages/video.html">Video Player</a></li> </ul> </div> <div data-role="footer" data-position="fixed"> <h1>&nbsp;</h1> </div> </div> • El  enlace  a  geolocaPon  es  interno,  porque  en  algunos  navegadores   no  funciona  la  geolocalización  si  se  enlaza  de  forma  externa.
  • 47. Javascript  API:  Eventos • Del  document  (aplicación):   • mobileinit,  ready,  load,  orientaPonchange     • De  cada  página:   • pagebeforecreate,  pagecreate,  pageinit,  pageremove   • pagebeforeload,  pageload,  pageloadfailed  +  argumento   • De  cada  elemento  del  DOM   • tap,  taphold,  swipeleq,  swiperight <script> $(document).bind("mobileinit", function(){ // Place for global configuration of jQM }); </script>
  • 48. Javascript  API:  UPlidades • UPlidades  data-*   • Filtro  :jqmData   • Métodos  jqmData  y  jqmRemoveData   • UPlidades  de  página   • $.mobile.activePage  referencia  la  página  (div)  acPva   • $.mobile.pageContainer  referencia  la  div  content  de  la  página   acPva.   • $.mobile.changePage()  cambio  de  página  programáPcamente   • $.mobile.loadPage()  carga  una  página,  pero  no  la  muestra
  • 49. Javascript  API:  Contenido  dinámico • Debemos  indicar  a  jQM  que  vamos  a  añadir  contenido  para  que   aplique  los  esPlos  CSS,  transiciones,  etc...  necesarios.   • Creación   • $(‘#new_page’).page(); • $(‘#new_a’).button(); • Actualización   • $(‘#checkbox’).val(‘true’).checkboxradio(‘refresh’); • $(‘#list’).listview(‘refresh’); • $(‘#changed_page’).trigger(‘create’);
  • 50. E3quetas  semán3cas Acceso  Hardware Almacenamiento  local Conec3vidad Mul3media Gráficos
  • 51. Acceso  Hardware:  Geolocalización • El  API  de  Geolocalización  permite  a  los  programas  JS  acceder  a  la  posición  en  el   mundo  del  usuario.   • Los  navegadores  que  soportan  geolocalización  definen  el  objeto   navigator.geolocation,  que  Pene  tres  métodos:   • getCurrentPosition():  Solicita  la  posición  del  usuario   • watchPosition():  Solicita  la  posición  del  usuario  y  monitoriza  los  cambios   • clearWatch():  Indica  que  quiere  dejar  de  monitorizar  la  posición  del  usuario.   • El  navegador  puede  acceder  a  la  posición  de  tres  maneras:   • Sensor  GPS   • IP   • WIFI   • Cualquier  método  requiere  comunicación  con  servidores  o  satélites,  por  tanto,  este   API  será  siempre  asíncrono.
  • 52. Acceso  Hardware:  Geolocalización <script src="http://maps.googleapis.com/maps/api/js?sensor=true"> </script> $('#geolocation').live('pageinit', function(){ navigator.geolocation.getCurrentPosition (function(pos) { var lat = pos.coords.latitude; var lng = pos.coords.longitude; var latlng = new google.maps.LatLng (lat, lng); var options = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var $content = $("#geolocation div:jqmData(role=content)"); $content.height (screen.height - 100); var map = new google.maps.Map ($content[0], options); new google.maps.Marker ({ map: map, animation: google.maps.Animation.DROP, position: latlng }); }, function(e) { alert("Error: " + e.message); }, {maximumAge: 30000, timeout: 30000, enableHighAccuracy: true}); });
  • 53. Gráficos $('#canvas').live('pageinit', function() { var context = $('#theCanvas')[0].getContext('2d'); context.beginPath(); context.rect(20, 20, 200, 100); var grd = context.createLinearGradient(20, 20, 220, 120); grd.addColorStop(0, '#8ED6FF'); grd.addColorStop(1, '#004CB3'); context.fillStyle = grd; context.fill(); context.stroke(); context.beginPath(); context.arc(70, 200, 50, 0, 2 * Math.PI, false); grd = context.createLinearGradient(30, 150, 120, 250); grd.addColorStop(0, '#000000'); grd.addColorStop(1, '#BC2920'); context.fillStyle = grd; context.fill(); context.stroke(); });
  • 54. Almacenamiento  local • localStorage  y  sessionStorage  son  objetos  JS  persistentes  que  guardan   datos  serializados  (cadenas)   • localStorage  guarda  los  datos  hasta  que  se  borran  explícitamente,   sessionStorage  hasta  que  el  navegador  se  cierra   • Same-­‐origin  policy var name = localStorage.username; if (!name) { localStorage.username = “Carlos”; } var point = { x: 1, y: 2 }; localStorage.point = JSON.stringify(point); var readPoint = JSON.parse(localStorage.point); delete localStorage.point;
  • 55. Almacenamiento  local <script> $('#storage').bind('pageinit', function(){ refreshList(); $('#add_btn').bind('click', function() { var $input = $('#item'); if (!$input.val()) { alert("You have to add some text!"); } else { var arr = localStorage.items ? JSON.parse(localStorage.items) : []; arr.push($input.val()); localStorage.items = JSON.stringify(arr); } refreshList(); }); }); function refreshList() { var $list = $("#storage ol:jqmData(role=listview)").empty(); var arr = localStorage.items ? JSON.parse(localStorage.items) : []; if (arr.length) { $.each(arr, function(index, value) { var $li = $('<li>').text(value); $list.append($li); }); } $list.listview("refresh"); } </script> ... <div data-role="content"> <input type="text" id="item" placeholder="Add Item..." value=""/> <input type="button" id="add_btn" value="Add Item" data-icon="plus" data-inline="true"/> <ol data-role="listview" data-inset="true"> <ol> </div>
  • 56. MulPmedia $('#video').live('pageinit', function(){ var player = $('#theVideo'); var status = $('#status'); player.bind('loadStart', function(event) { status.val("Loading..."); }); ... $('#play_btn').bind('click', function() { var video = $('#theVideo').get(0); var playables = VIDEO_RESOURCES.filter(function(videoObj) { return video.canPlayType(videoObj.type); }); if (playables.length) { video.src = playables[0].path; video.load(); video.play(); } else { alert("No compatible video format provided!"); } }); }); var VIDEO_RESOURCES = [ {type: 'video/mp4', path: '/html5catalog/resources/141.mp4' }, {type: 'video/webm', path: '/html5catalog/resources/movements_ES.webm' }, {type: 'video/ogg', path: '/html5catalog/resources/movements_ES.ogg' } ]; • Dependiendo  de  cada  navegador  y  plataforma  se  soportará  un   formato  de  vídeo  u  otro,  por  tanto  debemos  proporcionar  varios.
  • 57. www.interlat.co  –  info@interlat.co  -­‐    h2p://www.facebook.com/interlat  -­‐  www.twi2er.com/interlat  -­‐  PBX:  57(1)  658  2959    -­‐  Bogotá  -­‐  Colombia   Aula  Virtual:  h2p://www.interlat.co/moodle/ Gracias! Carlos Alonso Pérez Developer Twitter: @calonso LinkedIn: mrcalonso Mail: info@mrcalonso.com