Entradas con tag ‘programación’

Seminario HTML5 gratis

Publicado el: 3 comentarios

El próximo día 27 de septiembre impartiré un nuevo seminario gratuito de HTML5 en Córdoba. Una vez más el Grupo Alcántara lo hará posible con su apoyo e infraestructura. Hablaremos sobre semántica, multimedia, acceso a dispositivos, CSS, gráficos vectoriales, geolocalización y todo lo que hace de HTML5 un conjunto de tecnologías increíbles para crear la web.

Para todos aquellos que quieran asistir contactad con instituto@grupoalcantara.es. Las plazas son limitadas pero se emitirá online. Más info próximamente.

Actualización 25 septiembre 2012:

Finalmente el seminario se impartirá en el Instituto Alcántara, C/ Cruz Conde 19 1ª planta, y se podrá ver online a través de Webex.com.

Duración aproximada de 4 horas. la hora de inicio será:

  • 17:45 Madrid
  • 10:45 Bogotá – México – Lima
  • 11:45 Santiago de Chile – Caracas
  • 12:45 Buenos Aires

Trataremos de realizar grabación del evento para su posterior publicación.

Cartel Seminario Gratuito HTML5 en Córdoba

Cartel del seminario

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 10.0/10 (2 votes cast)

Sublime Text 2 – El mejor editor de código de 2012

Publicado el: 6 comentarios

Algo que nos caracteriza a los programadores es nuestro cariño por nuestro editor de código. Una vez te acostumbras a uno es como tu almohada: cuesta mucho cambiarla por otra.

Sin embargo debido a la buena crítica de la comunidad, recientemente instalé Sublime Text 2, el que según la opinión es el mejor editor de código del mercado. Tan buenas han sido mis impresiones que he decidido aparcar mi querido Komodo Edit y, como cientos de bloggers antes que yo, le voy a dedicar este artículo.
Leer entrada completa

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 10.0/10 (3 votes cast)

Sistema de pago por tweet con PHP

En este tutorial aprenderás a crear tu propio sistema de pago por tweet con PHP. El pago por tweet es una técnica de marketing por la cual restringimos el acceso a ciertos contenidos/descargas y sólo los hacemos accesibles si el usuario nos da permiso a publicar un tweet desde su cuenta.
Leer entrada completa

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 10.0/10 (1 vote cast)

Tutorial de LESS.js en español

Cómo anunciaba en la anterior entrada, el pasado día 13 de junio ofrecí un seminario gratuito de Less.js y responsive design. Espero que las tres horas que dedicamos a profundizar en estos temas fueran del agrado de los asistentes y que se lo pasasen igual de bien que yo. Desde luego con gente tan increíble se hace muy sencillo explicar cualquier cosa. Gracias a todos los que asististeis.

Con todos ellos como con todos los que no pudieron asistir me gustaría compartir la presentación – explicación – tutorial sobre Less.js. Si no me equivoco es el único tutorial completo de Less.js en español. En cuanto al tema de responsive, y ya que lo abordamos exclusivamente desde un caso práctico no puedo ofreceros material propio, pero si la recomendación de seguir a un auténtico maestro, Leonidas Esteban, que en su canal de youtube guarda unos más que completos tutoriales de diseño sensible.

Descargar presentación

Si os gustó, dedicadme un saludo en twitter (@ajnavajas) ;) .

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 7.0/10 (3 votes cast)

Geolocalización HTML5

Este tutorial muestra cómo usar la API de geolocalización combinada con la API de Google Maps para mostrar nuestra posición actual sobre un mapa con HTML5.

Nivel: Medio

¿Qué es la geolocalización?

Sin entrar en si forma parte o no de HTML5, podemos definir la geolocalización como una nueva API Javascript que nos permite conocer de forma fácil nuestras coordenadas desde un navegador.


Geolocalizacion html5

Conociendo nuestra posición

Esta API destaca por lo fácil que es usarla. Por ejemplo:

Código :

<script>
     function localizame() {
           navigator.geolocation.getCurrentPosition(coordenadas);
     }

     function coordenadas(){
           var latitud = position.coords.latitude;
           var longitud = position.coords.longitude;
     }
</script>

Con este código tan simple tenemos almacenados en las variables latitud y longitud la latitud y longitud de nuestra posición

Controlando errores

Es posible que obtengamos algún tipo de error a la hora de usar esta API. El más común para los usuarios desactualizados (vamos, los que usen IE) es que el navegador no soporte geolocalización. En ese caso controlaremos:

Código :

<script>
function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas);
            }else{
                alert('Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!');
            }
}
</script>

Existen además otros errores relacionados con los permisos sobre privacidad del usuario, tiempo de espera, etc. Para ello crearemos una función sencilla que muestre un mensaje según el código de error, y la llamamos en la función getCurrentPosition:

Código :

<script>
        function localizame() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert('Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!');
            }
        }

        function errores(err) {
            if (err.code == 0) {
              alert("Oops! Algo ha salido mal");
            }
            if (err.code == 1) {
              alert("Oops! No has aceptado compartir tu posición");
            }
            if (err.code == 2) {
              alert("Oops! No se puede obtener la posición actual");
            }
            if (err.code == 3) {
              alert("Oops! Hemos superado el tiempo de espera");
            }
        }
</script>

Combinando la API de geolocalización con la API de Google Maps

Veamos los pasos directamente sobre los comentarios del código:

Código :

<!DOCTYPE html>
<html>
<head>
    <title>Localizador</title>
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script> /*Usamos JQuery*/
    <style>
        body{
            font-family: "Helvetica Neue", "Helvetica", Arial, Verdana, sans-serif;
        }
    </style>
</head>
<body>
    <header>
        <h1>Localizador mediante HTML5</h1>
    </header>
    <section>
        <article>
            <div id='map_canvas' style='width:100%; height:400px;'></div>/*Esta capa hará de elemento contenedor del mapa*/
        </article>
    </section>

    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> /*Cargamos la API de Google Maps*/

    <script type="text/javascript">
        var map;
        var latitud;
        var longitud;

        $(document).ready(function() {
            localizame(); /*Cuando cargue la página, cargamos nuestra posición*/   
        });

        function localizame() {
            if (navigator.geolocation) { /* Si el navegador tiene geolocalizacion */
                navigator.geolocation.getCurrentPosition(coordenadas, errores);
            }else{
                alert('Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!');
            }
        }

        function coordenadas(position) {
            latitud = position.coords.latitude; /*Guardamos nuestra latitud*/
            longitud = position.coords.longitude; /*Guardamos nuestra longitud*/
            cargarMapa();
        }

        function errores(err) {
            /*Controlamos los posibles errores */
            if (err.code == 0) {
              alert("Oops! Algo ha salido mal");
            }
            if (err.code == 1) {
              alert("Oops! No has aceptado compartir tu posición");
            }
            if (err.code == 2) {
              alert("Oops! No se puede obtener la posición actual");
            }
            if (err.code == 3) {
              alert("Oops! Hemos superado el tiempo de espera");
            }
        }

        function cargarMapa() {
            var latlon = new google.maps.LatLng(latitud,longitud); /* Creamos un punto con nuestras coordenadas */
            var myOptions = {
                zoom: 17,
                center: latlon, /* Definimos la posicion del mapa con el punto */
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };/*Configuramos una serie de opciones como el zoom del mapa y el tipo.
            map = new google.maps.Map($("#map_canvas").get(0), myOptions); /*Creamos el mapa y lo situamos en su capa */

            var coorMarcador = new google.maps.LatLng(latitud,longitud); /Un nuevo punto con nuestras coordenadas para el marcador (flecha) */

            var marcador = new google.maps.Marker({
/*Creamos un marcador*/
                position: coorMarcador, /*Lo situamos en nuestro punto */
                map: map, /* Lo vinculamos a nuestro mapa */
                title: "Dónde estoy?" 
            });
        }
    </script>
</body>
</html>

Pincha aquí para ver el ejemplo completo.

Sobre los fallos de exactitud

La API de geolocalización no es más que una interfaz que nos entrega los datos de localización que nuestro dispositivo nos puede ofrecer. Esta es la clave: los que el dispositivo ofrece.

Si tu dispositivo es un pc sobremesa, casi seguro que la localización la realizará en base a la geolocalización IP, el más básico de los métodos, que puede incluso dar resultados a cientos de Km. Sin embargo si tenemos un smartphone, las coordenadas podrán responder a una triangulación en base a las redes móviles cercanas. En el mejor de los casos (wow, tengo un iPhone o cualquier otro smartphone Android de gama media / alta) el dispositivo dispondrá de GPS con lo cual la localización será casi perfecta (menos de 20m de exactitud).

Por otro lado el navegador es quien decide qué sistema de localización usar en base a su propia tabla de prioridades.

En resumen:
- Si quiero hacer una aplicación HTML5 para dispositivos móviles que me localize los restaurantes cercanos, la geolocalización es genial.
- Si quiero hacer una página que me corrobore que estoy delante del pc de mi casa, la geolocalización es una mierda.

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 7.8/10 (6 votes cast)

Twitter libera Bootstrap

Hace poco Twitter ha liberado bajo licencia Apache LicenseBootstrap, un “framework“ HTML y CSS para la creación de aplicaciones y sitios web.

Bootstrap es CSS orientado al uso de Less.

¿Qué es {Less}?

Less es una biblioteca de javascript desarrollada por Alexis Seiller que interpreta archivos en los que podemos codificar CSS de forma dinámica usando variables, anidando clases o creando funciones, como si de un lenguaje de programación se tratara.

Logo Less

¿Qué hace especial a Bootstrap?

Bootstrap ofrece una interfaz elegante y limpia de corte minimalista (el mismo usado para la nueva visual de Twitter) así como un recurso de maquetación rápido y fácil de aprender. Nos podremos beneficiar de tener pre-maquetados en CSS elementos como botones, ventanas modales, tooltips, pestañas, etc, que además no hacen uso alguno de elementos externos como imágenes, javascript o flash. Además incluye un sistema de grid por defecto de 16 columnas y plantillas que agilizan todavía más la maquetación.

Elementos visuales de Bootstrap
La combinación de los estilos predefinidos y el uso de Less hacen de este framework una potente herramienta para desarrolladores front-end que busquen una respuesta rápida y fácil de modificar.

Se puede descargar Bootstrap en Github.

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 10.0/10 (1 vote cast)

Crear juegos isométricos con AS3

Publicado el: Un comentario

Julio de Redribera nos obsequia con un tutorial para crear un motor isométrico en Flash AS3 basado en tiles. El blog ya contaba con un completo tutorial para crear juegos con tiles pero usaba Action Script 2, lenguaje que odio.

Aunque el tutorial no desarrolla un juego completo, si cubre los aspectos básicos:

  • Manejo de tiles.
  • Gestión de mapas de nivel.
  • Colisiones.
  • Profundidad.
  • Movimiento.
  • Scroll multidireccional.
Sin duda una buena base para crear juegos como el Fallout original o el Syndicate.
Fallout

 

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 10.0/10 (1 vote cast)

Animación 3D con WebGL

Han pasado tan sólo unos días desde el lanzamiento del último experimento de Chrome, Ro.me. Esta animación, mezcla de vídeo y 3D hace uso de la tecnología WebGl, que parece afianzarse cada día como es estándar definitivo para la aceleración 3D sobre navegador (habrá que ver que ofrece Adobe con su Molehill).

Experimento con WebGL

Experimento con WebGL

Investigando sobre el tema, me encuentro con la web de Hakim El Hattab, un desarrollador web muy creativo y con grandes dotes creativas. En su sección de experimentos muestra la potencia y versatilidad de WebGl, haciendo un uso impecable de código.

Sin duda una de esas páginas que no puedes dejar e ver.

VN:F [1.9.22_1171]
Valora esta entrada
Rating: 6.7/10 (3 votes cast)