# Aplicación del clima (JavaScript)

Susanna Huhtanen
ihmis.suski@gmail.com 2012
Marta Maria Casetti
mmcasetti@gmail.com 2013
Cómo plantear una aplicación que usa llamadas asíncronas. Las llamadas asíncronas se presentarán mediante una aplicación de información meteorológica.
Daniel Mustieles
daniel.mustieles@gmail.com 2011 - 2014
Nicolás Satragno
nsatragno@gmail.com 2012 - 2013
Jorge González
jorgegonz@svn.gnome.org 2011

# Aplicación del clima

        En esta parte de la guía se construirá una aplicación del clima usando llamadas asíncronas. En este ejemplo, la información del clima se obtiene de geonames.org y la aplicación usa los códigos ICAO para responder a las peticiones. Para escribir y ejecutar todos los ejemplos de código necesita un editor de texto en el que escribir el código, una terminal y GNOME 3 o superior instalado en su equipo. En esta guía se verán las siguientes partes:

          Planificar la interfaz gráfica de usuario
          Llamadas asíncronas
          El archivo del programa principal
          Biblioteca local GeoNames
          «Autotools» e iconos

Después de leer este tutorial, debería ver esto en su pantalla:

# Planificar la interfaz gráfica de usuario

Estructurar una aplicación GNOME 3 significa que usará GTK+. Lo más importante es recordar que la ventana principal sólo aceptará un widget. Debe planificar su estructura de acuerdo a esto (este ejemplo usa una Gtk.Grid). Un método útil es dibujar la ventana principal y colocar dentro cada widget que necesite. Mirando la imagen de su futura aplicación es fácil definir las relaciones entre los widgets. Por ejemplo, Gtk.Grid coloca sus widgets en relación a otros widgets, por lo que después de colocar el primero, los demás se pueden colocar en relación al primero en la rejilla.

# Llamadas asíncronas

En muchos lenguajes de programación, todas las operaciones se ejecutan síncronamente: le ordena al programa que haga algo, y esperará hasta que esa acción se complete antes de seguir. Esto, sin embargo, es malo para interfaces gráficas de usuario, ya que la aplicación entera se detendrá mientras el programa espera a la operación. Ser asíncrono (async) ayuda en este caso. Con llamadas async, su IU no se bloqueará con ninguna petición. Las llamadas async hacen su aplicación más flexible y mejor equipada para manejar situaciones en las que las llamadas toman más tiempo de lo esperado o por alguna razón se bloquean. Las llamadas async pueden usarse, por ejemplo, para E/S del sistema de archivos y para cálculos lentos en segundo plano.

En este ejemplo, se deben obtener datos de geonames.org. Mientras se hace esto, se quiere que el resto del programa continúe. Si no obtuviéramos ninguna información de geonames.org por la falta de conexión a internet y esta fuera una aplicación síncrona, nunca se llegaría al punto en el que el main_quit() se procesa correctamente y habría que matar la aplicación desde una terminal.

# Las diferentes partes del programa