Siguiendo con el artículo de la Api de la EMT Madrid, vamos a ver cómo hacer un servidor de aplicaciones en Go para móvil.
Entorno de programación
Lo primero es configurar nuestro editor. En otros casos, yo he usado sublime text para editar Go. En este caso, he optado por eclipse y el plugin para go:
https://github.com/GoClipse/goclipse/blob/latest/documentation/Installation.md#installation
En el servidor de desarrollo, instalamos go:
wget -c https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz tar -C /usr/local -xzf go*.tar.gz echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile # DEBIAN: export PATH=$PATH:/usr/local/go/bin >> /etc/bash.bashrc
Crear la aplicación web
Recomiendo leer el tutorial de Google para comenzar a escribir aplicaciones web.
mkdir myproj mkdir myproj/src mkdir myproj/doc # Creamos el archivo con la aplicación web: touch myproj/src/busdm.go
Para compilar
go build myproj/src/busdm.go go run myproj/src/busdm.go
Para ver los resultados, si hemos usado el puerto 8080:
El algoritmo
El algoritmo es bastante sencillo suma a los autobuses el tiempo andando, y da el menor tiempo posible. Quita todos aquellos autobuses que llegarán a parada antes de que lleguemos andando.
Métodos:
- Decide: Devuelve la parada hacia la que hay que andar y el autobús
- GetStopTime (IdStop): devuelve el tiempo del menor autobús. Hace la llamada al servicio de la EMT, y devuelve una lista (IdStop, IdBus, Time).
- GetWalkingTime (IdStop): devuelve el tiempo que nos cuesta llegar andando.
GetStopTime
Estructura JSON
Desde el ejemplo, se puede sacar la estructura JSON para hacer el parsing http://json2struct.mervine.net/
GetWalkingTime