jueves, 28 de junio de 2012

Algunos bocetos

    Una parte fundamental en cualquier programa es que la interfaz sea
  • Funcional: que haga lo que debe lo más dignamente posible. En este apartado los programadores nos solemos defender bastante bien.
  • Agradable: o cómo percibe el usuario la interacción con el programa. Aquí entran en juego diversos aspectos como la sencillez de uso, el diseño visual, ergonomía, ... Por norma general, en este apartado los programadores no estamos muy especializados, lo descuidamos, o directamente hacemos agua. Desde el punto de vista de usuario, éste quizá sea el punto que más peso tiene. Esa percepción es la que hace que use, descarte, o recomiende un programa.

    Por esta razón, desde El Primer Post tenía claro que quería un diseñador en el proyecto. Así que, sin más preámbulos... Del creador de grandes éxitos como Rajoy Hood o El Grinch. Del ganador del concurso de carteles de fiestas Baraka-town 2012 (redoble de tambores), les presento a mi amigo y compañero Josu y unos bocetillos que ha propuesto para la ocasión.


lunes, 18 de junio de 2012

Eppur si muove

    Durante estas semanas he estado leyendo mucho y haciendo mis primeros pinitos con esto del Android. También me he leido un buen libro sobre Java del que ya hablaré - o no -. Incluso he estado jugando con C# sobre Mono. El asunto es que algo se ha movido. He de reconocer que tras diez años como programador en VB6, me encuentro inquieto. Junto a la pequeña satisfacción de ir avanzando, siento vértigo ante lo que intuyo que tengo por delante. Y más que miedo, es ansiedad por avanzar. Estoy maravillado con conceptos como el de interfaz, por poner un ejemplo. Supongo que cada cosa tiene un momento, y éste es el mio para apreciar las nociones de la programación orientada a objetos. Y de evolucionar como profesional. Estas semanas he recordado cuánto he disfrutado programando. Y vuelve a divertirme. Lo estoy notando en mi curva de aprendizaje, y en mi día a día en el trabajo.

    Y como el movimiento se demuestra andando, y el cariño cocinando, allá va un snippet de código que ya forma parte del esqueleto de la aplicación de los precios del combustible.



------------------------------------------------------------ Doblar por aquí ------------------------------------------------------------

package zoom.preciogasolina;

import android.util.Log;

public class Util {
    private final static String TAG="Util";
   
    public static Double getDistance(float lat1, float lon1, float lat2, float lon2) {
        /** Calcula distancia entre dos puntos de la superficie de una esfera */
        /* Fuente: http://www.tutiempo.net/p/distancias/calcular_distancias.html */
        Log.d(TAG,
                "getDistance: lat1=" + lat1 +  
                "; lon1=" + lon1 +
                "; lat2=" + lat2 +
                "; lon2=" + lon2);

        final double degtorad = 0.01745329;
        final double radtodeg = 57.29577951;
        double dlong = (lon1 - lon2);
        double dvalue = (Math.sin(lat1 * degtorad)
                * Math.sin(lat2 * degtorad))
                + (Math.cos(lat1 * degtorad)
                * Math.cos(lat2 * degtorad)
                * Math.cos(dlong * degtorad));
        double d = Math.acos(dvalue) * radtodeg;
        return d * 111.302;
    }

    public static float toFloat(CharSequence c) {
        try {
            float f = Float.valueOf(c.toString()).floatValue();
            Log.d(TAG, "toFloat = " +f);
            return f;
        } catch(NumberFormatException e) {
            Log.e(TAG, "toFloat:" + e.getMessage());
            return 0;
        }
    }
}

------------------------------------------------------------ Doblar por aquí ------------------------------------------------------------

domingo, 3 de junio de 2012

Documentación incial: libros (I)

    Parafraseando a Paco Umbral hoy he venido ha hablar de mi libro. Y éste es uno bueno. Iba a esperar a que sacaran la película, pero al final me lo he leido. No es otro que "Hello, Android. Introducing Google's Movile Development Platform, 2nd Edition".

Unos datos técnicos
  • Autor: Ed Burnette.
  • Año: 2009. 
  • Editorial: The Pragmatic Programmers.
  • Idioma: Inglés

Breve sinopsis
    Tras una breve introducción en la que explica quién debería leer el libro, cómo leerlo y algún apunte extra, está dividido en tres grandes partes:

  1. Introducción:
    • Cómo instalar las herramientas de trabajo, crear y ejecutar un programa.
    • Cómo está construido el sistema (ojo, spoilers):
      • En el nivel inferior hay un nucleo de Linux.
      • Sobre éste hay una serie de bibliotecas nativas compiladas para cada dispositivo ("surface manager", "Media Framework", "SQLite", "OpenGL", "FreeType", "WebKit", "SGL", "SSL" y "libc"). Existe la posibilidad de crear bibliotecas nativas utilizando el "Native Development Toolkit" (NDK). A este nivel se encuentra también el runtime de Android que incluye la máquina virtual Dalvik - una máquina virtual de Java optimizada para dispositivos móviles -, y el conjunto de bibliotecas de Java - que son distintas a las de la Standard Edition y a las de Movile Edition -.
      • Sobre las bibliotecas nativas y el runtime se encuentra una capa con un framework de aplicaciones. Viene preinstalado y es extensible con componentes propios si fuera necesario. Es con este nivel con el que se comunicarán nuestras...
      • ... aplicaciones y widgets, que forman la capa superior del sistema.
       
  2. Conceptos básicos de las aplicaciones. A través de la creación de un Sudoku, el autor nos introduce los siguientes conceptos:
    • Diseñar la interfaz de usuario (y depurar el programa a través usando logs y el debugger)
    • Gráficos 2D
    • Multimedia
    • Almacenar datos en local.
     
  3. Conceptos avanzados
    • Conexión a internet.
    • Uso de los distintos sensores de los dispositivos. En este caso nos muestra un ejemplo con el GPS.
    • Utilización de bases de datos: SQLite.
    • Gráficos con OpenGL.

Valoración
    El libro no se mete a fondo en los conceptos explicados, pero deja un cuadro lo suficientemente completo como para comprender el sistema en su conjunto. Como ya he dicho es un buen libro: fácil de seguir, bien explicado, con buenos ejemplos y dificultad creciente. En resumen: sin llegar a una profundidad excesiva, asegura los conceptos básicos, y es tan fácil de leer que hubo un momento en que me olvidé que era en Inglés. Altamente recomendable como toma de contacto con Android.