Mostrando entradas con la etiqueta html 5. Mostrar todas las entradas
Mostrando entradas con la etiqueta html 5. Mostrar todas las entradas

sábado, 19 de julio de 2014

El infierno de Android Browser para nosotros los frontends




Si un amigo tuyo te dice :

" He probado mi aplicación en navegadores android y funciona perfecto ".

Lo que tienes que hacer es lanzar una risa malvada y mostrarle la siguiente presentación :




Personalmente por esta razón es que la gente le gusta desarrollar para iphone, este tipo de problemas  son poco frecuentes. Este tema de compatibilidad en android realmente se ha salido de control....

Si a esto sumas el nuevo mobile OS de firefox y el nuevo movil de amazon, esto deja de ser divertido.

Si quieres saber consejos muy buenos a tener en cuenta cuando desarrolles para android te aconsejo  leer el siguiente  articulo con muchos consejos sobre android y como afrontar estos problemas, este articulo se centro en putos muy importantes como por ejemplo:


  • Software
  • Hardware
  • Pantallas 
  • Drivers
  • chipset
  • etc
y en cada una de estos puntos hacen muy buenas recomendaciones sobre lo que necesitas saber para no tener problemas en el futuro. Como dije antes muy buen articulo


link: http://www.smashingmagazine.com/2014/10/02/what-every-app-developer-should-know-about-android/




Comparte tus Bookmark : http://unitedbookmark.com/

domingo, 6 de julio de 2014

Consejos para hacer tu web app super rapida...deja de hacer perder el tiempo a tus usuarios.

No es secreto que las redes moviles dejan mucho que desear, comparadas con la conexión de nuestro hogar. Y nada frustra mas a los usuarios de móviles que tiempos de espera de carga muy largooos, lo cual resulta en que piense que tu web app es una porquería por que les hace perder el tiempo.

El co-fundador de Instagram Mike Krieger dice : " ¿Quien quiere esperar mientras esta esperando? ".

Y eso es por lo general lo que la mayoría de las web apps hacer cuando están esperando confirmación de sus acciones. El proceso por lo general es el siguiente:

  1. El usuario hace algo en la aplicación.
  2. La aplicación envia una petición al server diciendo que algo paso.
  3. El server recibe la petición y realiza la acción correspondiente.
  4. La aplicación espera la respuesta del server y después actualiza la pantalla con el resultado.

Todos este proceso es mucho tiempo esperando, aunque sea el proceso normal de cualquier aplicación, y en redes móviles puede parecer una eternidad. La popular aplicación móvil Instagram usa unos trucos muy interesantes para generar la impresión de que la aplicación es super rápida , los cuales nosotros podemos emplear en las nuestras y tener a nuestros usuarios contentos.

A continuación les dejo una presentación donde Mike Krieger muestra las técnicas "secretas" que usan en Instragram para lograr esto. Muy recomendado que lo vean.




link: https://speakerdeck.com/mikeyk/secrets-to-lightning-fast-mobile-design
Comparte tus Bookmark : http://unitedbookmark.com/




martes, 27 de mayo de 2014

Los desafios de diseñar y programar para moviles por www.conectatutoriales.com

Hoy en http://firt.conectatutoriales.com/ hubo un stream sobre informacion general sobre  programacion en moviles, Si eres profesional o estás interesado en diseño o programación web, los móviles son un paso necesario para todos. En el siguiente video veras todo lo que necesitas saber incluyendo webs responsivas, rendimiento, emuladores y frameworks más usados.

Recomiendo verlo para saber como funciona este mundo de la programacion en moviles, no son conceptos dificil de entender, es mas un resumen muy bien hecho de todo lo que necesitas saber, muchas gracias a http://firt.conectatutoriales.com/ por este excelente material.




link : http://firt.conectatutoriales.com/

miércoles, 12 de marzo de 2014

Formularios html 5 y JavaScript validation API , descubre lo que puedes hacer con tus formularios

Gracias a HTML 5 ahora tenemos a nuestra disposición nuevas formas de validar y asegurar la integridad de los datos ingresados por el usuario,  a continuación veremos algunas de ellas :

Pattern Attribute : Con esta propiedad puedes especificar una expresión regular para validar el texto en un input. Podemos ver un ejemplo en la w3school sobre un input donde requiere que el dato ingresado sea 3 letras en mayúsculas, aqui el  ejemplo.

Mas información sobre aqui

Maxlenght :  Si queremos limitar la cantidad de información ingresada en un input podemos usar este atributo, aqui el ejemplo 

novalidate : Este atributo es usado para indicar que un formulario no sera validado, no puedo imaginar un caso de uso para este atributo pero es bueno saber que existe, aquí el ejemplo 

Constraint Validation

Antes de que los datos de un formulario sean enviados al servidor, el navegador verifica los inputs para confirmar si son correctos con una serie de algoritmos y si encuentra algún error en ellos mostrara el siguiente error:


Existe algo llamado  "Constraint API" que son una serie de métodos y propiedades DOM de las cuales podemos hacer uso para un mayor control de nuestros formularios. 

willValidate : Este método nos indica si un input sera validado o no cuando el formulario sea enviado. Ejemplo : 

<input type="text" id="name" />
<script>
   
document.getElementById('name').willValidate; //true
</script>

Validity: Devuelve un objecto javascript con propiedades útiles para determinar si un input es valido como: 
  • patternMismatch : Devuelve true si el valor del input no concuerda con la expresion regular en el attributo pattern.
<input id="bar" pattern="[0-9]{4}" value="ABCD" />
<script>   
   
document.getElementById('bar').validity.patternMismatch; //true
</script>
  • rangeOverflow : Devuelve true si el valor del input es max alto que su atributo max.
<input id="bar" type="number" max="2" value="3" />
<script>
   
document.getElementById('bar').validity.rangeOverflow; //true
</script>
  • rangeUnderflow: Devuelve true si el valor del input esta por debajo de su atributo min.
<input id="bar" type="number" min="2" value="1" />
<script>
   
document.getElementById('bar').validity.rangeUnderflow; //true
</script>
  • typeMismatch :  Devuelve true si el valor del input no es del mismo tipo del especificado en el atributo type.
<input id="bar" type="url" value="foo" />
<input id="bar2" type="email" value="bar" />
<script>
   
document.getElementById('bar').validity.typeMismatch; //true
   
document.getElementById('bar2').validity.typeMismatch; //true
</script>
  • valueMissing: Devuelve true si el input es tiene el atributo required y no tiene ningún valor
<input id="foo" type="text" required value="foo" />
<input id="bar" type="text" required value="" />
<script>
   
document.getElementById('foo').validity.valueMissing; //false
   
document.getElementById('bar').validity.valueMissing; //true
</script>
  • stepMismatch: devuelve true si el valor del input no es acorde con el especificado en el atributo step.
  • tooLong: Devuelve true si el valor del input es mayor que el especificado en el atributo maxlength, una cosa interesante aqui es que los navegadores no permiten que esto pase por efecto.
  • valid : Devuelve true si todas las condiciones anteriores son false.
<input id="valid-1" type="text" required value="foo" />
<input id="valid-2" type="text" required value="" />
<script>
   
document.getElementById('valid-1').validity.valid; //true
   
document.getElementById('valid-2').validity.valid; //false
</script>



validationMessage : Esta propiedad contiene el mensaje que se muestra cuando un input no cumple con las validaciones del formulario.


<input type="text" id="foo" required />
<script>
   
document.getElementById('foo').validationMessage;
   
//Chrome  --> 'Please fill out this field.'
   
//Firefox --> 'Please fill out this field.'
   
//Safari  --> 'value missing'
   
//IE10    --> 'This is a required field.'
   
//Opera   --> ''
</script>

checkValidity : Este es un método que devuelve true si un elemento de formulario contiene datos validos.(input, textarea, ect)

<form id="form-1">
   
<input id="input-1" type="text" required />
</form>
<form id="form-2">
   
<input id="input-2" type="text" />
</form>
<script>
   
document.getElementById('form-1').checkValidity();  //false
   
document.getElementById('input-1').checkValidity(); //false
   
document.getElementById('form-2').checkValidity();  //true
   
document.getElementById('input-2').checkValidity(); //true
</script>

Cada vez que un elemento de formulario es verificado con "checkValidity" y falla, un evento "invalid" es disparado en ese elemento. Podemos usar este evento para hacer cualquier cosa que queramos. También como no existe el evento "valid" en su lugar se usa "change".

<form id="form-1">
   
<input id="input-1" type="text" required />
</form>
<script>
document.getElementById('input-1').addEventListener('invalid', function() {//you code here, whatever you wnat here
},
false);

document.getElementById('input-1').addEventListener('change', function(event) {
   
if (event.target.validity.valid) {
       
//Field contains valid data.
   }
else {
       
//Field contains invalid data.
   }
},
false);

</script>

Datalist : Es un elemento para sugerencias muy al estilo de autocompletado, ejemplo.

autocomplete : Con este atributo puedes desactivar el autocompletado del navegador, ejemplo.

autofocus: puedes usar este atributo para que un elemento de formulario tome el foco apenas la vista sea cargada, pero solo puedes asignarlo a uno que sera el que por defecto sera el primero a llenar, ejemplo.

stepUp: Método que incrementa al siguiente valor logico en inputs date y numeric.
stepDown : Método que decrementa al siguiente valor lógico en inputs date y numeric.

document.getElementById('date').stepUp()document.getElementById('date').stepDown()

valueAsNumber: Propiedad que devuelve el valor de un input como numero, para no tener que usar a cada momento parseInt() o parseFloat().

document.getElementById('date').valueAsNumber

valueAsDate: Propiedad que devuelve el valor como un objecto date, ejemplo.

Existen casos donde algunas veces tenemos que agregar valores adicionales al formulario, pero que no se tienen que mostrar al usuario, lo mas común es usar un "input hidden", pero ahora puedes usar el nuevo objecto formData como lo describen en el siguiente link :


Básicamente seria de la siguiente manera sin usar inputs hidden :

var formElement = document.getElementById("myFormElement");
formData =
new FormData(formElement);
formData.append(
"serialnumber", serialNumber++);

Con el mismo objecto formData puedes crear formularios al vuelo y enviar los datos al servidor por ajax sin que exista el formulario en el DOM. puedes ver el ejemplo en el link anterior.

Propiedades y metodos adicionales en los siguientes links.




sábado, 12 de octubre de 2013

Una App en HTML 5 es igual de rapida que una APP nativa en moviles

Interesante articulo que he encontrado de los chicos de Sencha donde demuestran con un vídeo que las App desarrolladas sobre HTML 5 son tan rápidas como los App nativas en móviles. Y que algunas veces es el mal uso de la tecnología que algunos programadores hacen de HTML 5.

Parece que todo comenzó cuando Mark Zuckerberg dijo que HTML 5 no estaba listo, en respuesta sobre las quejas de que la App de facebook era muy lenta. Eso llevo a que los chicos de Sencha se pusieran manos a la obra y crearon un prototipo de una App de facebook sobre HTML 5.

Tuvieron que hacer algunos cambios sobre su framework actual pero en el proceso  crearon un interesante componente que ellos llaman : "Infinite List Component", que maneja un numero desconocidos de items. En el proceso solo un pequeño set de DOM es creado para mostrar en la área visible de la pantalla,  de esta manera están constantemente reciclando los elementos  cuando los datos son requeridos.

Aquí el vídeo de la demostración de la App:




y el articulo completo sobre el proceso de creación :

http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story




lunes, 21 de enero de 2013

Diferencia entre Fixed, Fluid, Adaptive, y Responsive Web Design

Bueno una pregunta valida que merece la pena ser respondida con un buen video , aunque esta en ingles creo que se da por entendido solo.



Si no quedastes claro con el video visita esta pagina web: http://liquidapsive.com/

Link : http://blog.teamtreehouse.com/whats-the-difference-between-fixed-fluid-adaptive-and-responsive-web-design-treehouse

miércoles, 14 de noviembre de 2012

Responsive images ya era hora !!

Con la llegada de HTML 5 , llego el responsive design como resultado nuestra aplicacion web puede adaptarse a la resolucion de cualquier dispositivo y entregar al usuario una agradable experiencia de navegacion.

Para manejar las imagenes en un diseño responsive usamos los nuevos poderes de CSS 3 y las media queries para seleccionar que imagenes deben cargar deacuerdo con la resolucion del dispositivo. Pero una vez escuche a un tipo decir que deberia de haber un servicio de responsive images osea en lugar de usar css o media queries , tu deberias de subir tu imagen full HD una sola vez y luego tu aplicacion hace la peticion  que necesita esa imagen y el servicio decuerdo a la resolucion del dispositivo te entrega tu imagen redimensionada con las dimensiones necesarias .

Esto te permite ahorrar velocidad de carga en tu aplicacion y siempre tener la imagen adecuada segun la resolucion que necesite tu visitante , bueno esa fue la historia que escuche hace como 5 meses atras y siempre me estuvo dando vueltas en la cabeza .

Hasta hoy por que he encontrado un plugin Jquery que cumple con este objetivo , dotar a tu aplicacion con responsive images , aunque segun la web por ahora usa PHP para hacer las redimensiones de tu imagenes , seguro que en futuro se extendera. Segun la web del plugin dicen que el script PHP crea la imagen que solicitada al vuelo solo la primera vez .

Les dejo el link del plugin para que hagan sus pruebas , en el futuro mas herramientas como estan en camino.

link : http://responsiveimg.com/