• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Servidor y cliente iOS en 45min
 

Servidor y cliente iOS en 45min

on

  • 2,604 views

Presentación utilizada en la charla "Servidor web y cliente iOS en 45 minutos"

Presentación utilizada en la charla "Servidor web y cliente iOS en 45 minutos"

Statistics

Views

Total Views
2,604
Views on SlideShare
1,057
Embed Views
1,547

Actions

Likes
0
Downloads
5
Comments
0

7 Embeds 1,547

http://nscoder-mad.tumblr.com 1384
http://www.zinkinapps.com 98
http://javimoreno.me 27
http://javi.zinkinapps.com 23
http://www.tumblr.com 10
http://localhost 4
http://jmoreno.github.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • Seguro que en algún momento nos hemos planteado la necesidad de disponer de un servicio web propio para alimentar alguna de nuestras aplicaciones (actualización de datos, gestión de InApp Purchases, notificaciones, etc). \nActualmente hay muchos servicios on-line que nos permiten gestionar estas necesidades con facilidad (Amazon Web Services, iCloud, Azure, Parse, MaaSive). Es conveniente, al menos, echar un vistazo a cada uno de ellos para saber que utilidad podemos sacar de ellos pero creo que también es conveniente hacer un acto de valentía y plantearnos el hacer nuestro propio servicio web. \nEl objetivo que nos hemos marcado para esta sesión de 45 minutos es grande: no solo nos basta con un servicio que alimente nuestra aplicación. También queremos una web que de soporte a los mismos datos y entre el maremagnun de opciones que hay disponibles para hacer esto nos hemos decantado por Ruby on Rails.\n
  • Ruby on Rails es una forma de designar a un framework llamado Rails que dota al lenguaje de programación Ruby de toda la funcionalidad para hacer aplicaciones web. En realidad es como si los que hacemos aplicaciones para iOS dijeramos que las hacemos en Objective-C on Cocoa Touch... no suena tan guay.\nRuby y rails arrastran esa maldición de ser “guays” lo que provoca también un rechazo/celos entre los fanaticos de otras plataformas. Ruby tiene fama de ser un lenguaje bonito, con el que da gusto programar. Algún “fanático” decidió que ya que el nombre del lenguaje era una gema, porque no llamar a las diferentes librerias gemas también... y por esa razón mientras que los abigarrados programadores de php utilizan librerias los finos y elegantes programadores de ruby utilizan gemas. Rails es una gema, quizá la más famosa, que se apoya en otras gemas muy famosas y envidiadas para hacer aplicaciones web de una forma muy sencilla.\nRuby on Rails respeta al 100 % el patrón de arquitectura Modelo-Vista-Controlador, seguramente sea uno de los frameworks para el desarrollo de aplicaciones web más puristas en este sentido.\nTambién es muy escrupuloso con el cumplimiento del principio Don´t Repeat Yourself. Esto es muy agradable sobre todo a la hora de hacer cambios en el modelo... algo que hacemos continuamente mientras desarrollamos y que se puede convertir en un dolor de cabeza al pasar a producción. Gracias a esto, las migraciones en ruby son muy sencillas... mucho más que con Core Data.\nEl paradigma llamado Convention over configuration también está en las raices de este framework y de la comunidad ruby en general. Ya veremos en nuestro ejemplo como es muy sencillo navegar por el código de nuestra aplicación ya que si la clase que conecta una entidad del modelo con la base de datos se llama List, la tabla se llamará lists, el controlador se llamará lists_controller, etc... \n
  • Dale una oportunidad... seguro que tampoco sabías Objective-C y estás aquí. Como vamos a ver a continuación, hacer algo básico es muy muy sencillo. Ya habrá tiempo de ir profundizando en el lenguaje más adelante.\nDesde luego, lo que vamos a hacer nosotros se puede hacer con otros frameworks y otros lenguajes de programación... busca el que sea más agradable para ti.\n
  • ¿Que necesitamos para hacer nuestra aplicación? Nuestro mac, que ya vendrá con ruby instalado. Lo mejor sería actualizar a la última versión ya que como es la primera aplicación que vamos a hacer no tenemos problemas de versiones. En este enlace nos cuentan una forma de actualizar ruby, instalar rails y hacer una aplicación sencilla. Son los pasos que he seguido yo para hacer la instalación de rails en mi mac y el el ejemplo que vamos a ver es tan sencillo como el que viene en esa página.\n\n
  • ¿Que queremos hacer? una aplicación web que llamaremos MegaLists. Al introducir por terminal rails new MegaLists, rails nos crea todo proyecto de la aplicación... ya tenemos la aplicación creada. Si arrancamos el servidor la podemos ver en funcionamiento...\nEl servidor... cuando lo has instalado?, como sabe donde está alojado el proyecto? magia... las gemas tienen poderes y se encargan de estas cosas. Igual que no tenemos que preocuparnos por la base de datos, ya que rails gestiona las conexiones por nosotros, también incluye un pequeño servidor que nos permitirá hacer nuestras pruebas. Cuando se despliegue la aplicación en producción si que será necesario configurar un servidor apache, instalar y configurar una base de datos, etc pero para desarrollo no necesitamos nada más que escribir tres palabras mágicas en el terminal\n\n
  • Lo único que necesita nuestra aplicación es una tabla donde almacenar los elementos que vamos a listar. Si hemos decidido llamar a la tabla List (es importante que nosotros también hayamos interiorizado la Convention over configuration) y nos basta con un par de campos las palabras mágicas son estas. \nAl pedirle a rails que nos genere un andamio (scaffold) este nos crea todo lo que necesitamos para disfrutar de nuestra nueva web y de los servicios que nuestra app va a consumir.\n\n
  • Si queremos, podemos llenar unos datos de prueba a través de unos ficheros de forma muy sencilla. Los mortales usamos text en lugar de emacs\n\n
  • Y ya está. Volvemos a arrancar el servidor, comprobamos que nuestra nueva página web existe, que cumple con los prefectos del CoC y que, aunque es un poco fea, es totalmente funcional.\n\n
  • La wikipedia lo explica muy bien. Se utiliza la potencia de http de contener en la llamada toda la información necesaria para comprender la petición. Cada recurso es definido univocamente por su URI y a través de las operaciones http GET, POST, PUT y DELETE podemos crear (Create), leer (Read), actualizar (Update) y borrar (Delete). Todo esto nos lo incluye rails al hacer el scaffold.... como pone ahí: gratis.\n\n
  • \n
  • \n
  • Lo primero que hacemos es echar un vistazo a storyboard. Cambiamos el label de la vista de detalle por un textview.\n
  • Editamos el modelo y haciendo un poquito de Convention over Configuration ponemos los mismos nombres que le dimos a la tabla de la aplicación web. Además, incluiremos el campo id, que aunque no se lo hemos pedido lo ha hecho el ActiveRecord por nosotros.\nLuego, volvemos al storyboard para incluir los nuevos campos en el detailviewcontroller. name se lo pondremos al title y notes al texto del textview.\n
  • Creamos MegaLists.h e incluimos dos constantes, una con la url del servicio web y otra con el timeout que queremos fijar.\nIncluimos esta header en el prefix.\n
  • \n
  • \n
  • \n

Servidor y cliente iOS en 45min Servidor y cliente iOS en 45min Presentation Transcript

  • Web y cliente iOS en 45 min. Javier Moreno (@jmoreno78) Jorge Ortiz (@jdortiz)
  • Agenda★ Web + WS ๏ Ruby on Rails ‣ Generación de la aplicación ‣ Andamios★ Cliente movil ๏ Storyboards ๏ NSURLConnection 2
  • Ruby on Rails★ Aplicaciones webs simples y bien hechas. ๏ MVC ๏ DRY ๏ Convention over configuration. 3
  • ¿Y si no sé Ruby?★ Da igual. Ponte que es fácil. ๏ Antecedentes de perl, python...★ Buscaalgo similar (ej.Django)★ Lo básico es trivial. 4
  • Punto de partida ★ Ruby instalado (1.9+) ★ Rails instalado (3.2+)http://pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-mac 5
  • El servidor★ Nueva aplicación de rails$ rails new MegaLists$ cd MegaLists$ rails server 6
  • Aplicación de listas ★ Lista ๏ Nombre ๏ Descripción$ rails generate scaffold Listname:string notes:string$ rake db:migrate 7
  • Datos de prueba★ seeds.db$ emacs (edit) db/seeds.rb$ rake db:seed 8
  • La interfaz web★ Arrancamos el servidor$ rails serverhttp://localhost:3000/listshttp://localhost:3000/lists.json 9
  • API REST★ Representational State Transfer.★ Verbos CRUD~ PUT, GET, POST, DELETE★ Gratis.★ JSON esuna representación de un recurso (los datos). 10
  • Probar con curl★ Leer (R)$ curl -v -X GET -H -H “Accept:application/json” -H “Content-Type:application/json” http://localhost:3000/lists.json 11
  • El cliente iOS★ Nueva aplicación 12
  • Características★ Storyboards, CoreData 13
  • Modificar el modelo 14
  • Modificar el modelo 14
  • Adaptando la plantilla★ ORGANIZACIÓN!!!! Un header para las constantes.★ En el MasterViewController hacer un poco de limpieza ๏ Quitar el insert y su botón ๏ Cambiar el fetchedResultsController 15
  • Llamando al servicio★ NSURLConnection y sus delegados.★ Cargarel contenido en el managedObjectContext★ Disfrutar★ Si da tiempo... borrar 16
  • ¿Y ahora?★ Funcionalidad★ Interfaz★ Diseño★ Pruebas unitarias★ ...★ 5 estrellas 17
  • Bibliografía★ Engineering Long-Lasting Software ๏ Armando Fox y David Patterson★ Agile Web Development with Rails ๏ Sam Ruby 18