Taller de introducción a Google App Engine

3,124 views

Published on

Seminario interactivo de introducción a Google App Engine en 12+1 pasos.

Published in: Self Improvement
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,124
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
103
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Taller de introducción a Google App Engine

  1. 1. Taller de introducción a Google App Engine Manuel Martín Salvador 18/05/2009
  2. 2. 0. Características Entorno de desarrollo que proporciona: <ul><li>Servidor web
  3. 3. Base de datos (no relacional)
  4. 4. Escalabilidad y balanceo de carga automático
  5. 5. API para autenticar usuarios
  6. 6. Servidor de correo electrónico
  7. 7. Simulador Local
  8. 8. Programación en Python y Java
  9. 9. Es gratis: 500MB en disco y 5 millones de páginas vistas </li></ul>
  10. 10. 1. Registrar una cuenta http://appengine.google.com/
  11. 11. 2. Descargar el SDK http://code.google.com/intl/es/appengine/downloads.html
  12. 12. 3. Hola Mundo! Abrimos el Google App Engine Launcher y creamos una aplicación llamada “helloworld” en el directorio que queramos. Creamos el archivo helloworld.py en dicho directorio con el contenido: print 'Content-Type: text/plain' print '' print 'Hola Mundo!' Editamos el archivo de configuración app.yaml: application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: /.* script: helloworld.py
  13. 13. 3. Hola Mundo! (y 2) Para comprobar que funciona, arrancamos el servidor, bien con la interfaz gráfica o en la terminal con: dev_appserver.py helloworld Y accedemos a http://localhost:8080 donde nos debería aparecer “Hola Mundo!” en el navegador.
  14. 14. 4. El framework webapp Permite crear aplicaciones basadas en CGI de forma fácil y rápida. Editamos el archivo helloworld.py: from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app class MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hola Mundo con webapp!') application = webapp.WSGIApplication( [('/', MainPage)], debug=True) def main(): run_wsgi_app(application) if __name__ == &quot;__main__&quot;: main()
  15. 15. 5. Plantillas Creamos el archivo helloworld.html: <h1>Hola mundo!</h1> Y editamos el archivo helloworld.py: from google.appengine.ext.webapp import template class MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/html' self.response.out.write( template.render('helloworld.html', {})) Recargamos el navegador y vemos como ha cambiado.
  16. 16. 6. Formularios Editamos el archivo helloworld.html: <form action=&quot;&quot; method=&quot;post&quot;> <input type=&quot;text&quot; id=&quot;message&quot; name=&quot;message&quot; /> <input type=&quot;submit&quot; value=&quot;Enviar&quot; /> </form> Añadimos la siguiente función a la clase MainPage del archivo helloworld.py: def post(self): self.response.out.write(&quot;Enviado!&quot;)
  17. 17. 7. Base de Datos Editamos el archivo helloworld.py: from google.appengine.ext import db class Mensaje(db.Model): message = db.StringProperty(required=True) when = db.DateTimeProperty(auto_now_add=True) Y en la clase MainPage modificamos la función post: def post(self): mensaje = Mensaje(message=self.request.get('message')) mensaje.put() self.redirect('/') Recargamos el navegador y probamos a insertar un mensaje. Podemos ver que se ha guardado accediendo en http://localhost:8080/_ah/admin
  18. 18. 7. Base de Datos (y 2) Para mostrar los datos de la base de datos modificamos la función get de la clase MainPage: def get(self): mensajes = Mensaje.all().order(&quot;-when&quot;) self.response.headers['Content-Type'] = 'text/html' self.response.out.write( template.render('helloworld.html', {'mensajes': mensajes})) Y ahora en la plantilla helloworld.html: {% for m in mensajes %} <div>{{ m.message }}</div> {% endfor %}
  19. 19. 8. Servicio de Usuarios Editamos el archivo helloworld.py: from google.appengine.api import users En la clase Mensaje añadimos: author = db.UserProperty() Editamos la función get de la clase MainPage: user = users.get_current_user() if not user: self.redirect( users.create_login_url(self.request.uri)) Editamos la función post de la clase MainPage: user = users.get_current_user() mensaje = Mensaje(message=self.request.get('message'), author=user)
  20. 20. 8. Servicio de Usuarios (2) Editamos la plantilla helloworld.html: {% for m in mensajes %} <div> {% ifequal m.author None %} Pobrecito Hablador {% else %} {{ m.author }} {% endifequal %} dice: {{ m.message }} </div> {% endfor %} Ya podemos recargar el navegador para ver los cambios.
  21. 21. 9. Archivos estáticos Editamos el archivo de configuración app.yaml: application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: /static static_dir: static - url: .* script: helloworld.py Creamos el directorio static y un archivo llamado style.css con el siguiente contenido: body { font-family: Verdana, Helvetica, sans-serif; background-color: #DDDDDD; }
  22. 22. 9. Archivos estáticos (y 2) Añadimos a la plantilla helloworld.html: <head> <link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;/static/style.css&quot; /> </head> Recargamos el navegador y podemos ver el cambio.
  23. 23. 10. Subida de aplicaciones Entramos en http://appengine.google.com y creamos una aplicación (OJO! Luego no se puede borrar). Editamos el archivo app.yaml y cambiamos el nombre de application por el que hemos usado anteriormente. Subimos la aplicación: (nos pedirá usuario y contraseña de nuestra cuenta de Google) appcfg.py update helloworld Podemos comprobar si ha funcionado entrando en http://<tu_aplicacion>.appspot.com
  24. 24. 11. Más Ejemplos Ejemplos didácticos http://code.google.com/p/google-app-engine-samples/ Artículos http://code.google.com/intl/es/appengine/articles/ Ejemplos funcionando http://flickrsearchr.appspot.com/ http://www.cafesurvey.com/ http://www.congregar.com/ http://www.urlmetrix.com/ http://zchat.appspot.com http://www.jumbra.com/
  25. 25. 12. Documentación En Español http://code.google.com/intl/es/appengine/docs/ En Inglés (incluye la de Java) http://code.google.com/intl/en/appengine/docs/
  26. 26. 12+1. Fin Gracias

×