Slideshow transcript
Slide 1: Introducci´n o Acercamientos Ejemplo Conclusiones Programaci´n Web con Haskell o Federico Builes 28 de junio de 2007 Federico Builes Programaci´n Web con Haskell o
Slide 2: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones Introducci´n o Algo de Wikipedia para empezar: “In software engineering, a Web application or webapp is an application that is accessed via web over a network such as the Internet or an intranet” . Por aplicaciones web para esta presentaci´n nos referimos a o aplicaciones accesibles a trav´s de un browser. e Federico Builes Programaci´n Web con Haskell o
Slide 3: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones Introducci´n o Las aplicaciones web son populares gracias a: La posibilidad de tener el cliente en todos lados, en cualquier momento. La posibilidad de poder actualizar y modificar aplicaciones al instante, sin depender de una cadena de distribuci´n para el o producto. Ejecuci´n multi-plataforma desde el comienzo, sin o requerimientos en el lado del cliente (s´lo se necesita un o browser medianamente moderno). Federico Builes Programaci´n Web con Haskell o
Slide 4: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones La web como plataforma 335 millones de usuarios solo en el continente Americano. Federico Builes Programaci´n Web con Haskell o
Slide 5: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones La web como plataforma 335 millones de usuarios solo en el continente Americano. Servicios, nada de software empaquetado. Federico Builes Programaci´n Web con Haskell o
Slide 6: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones La web como plataforma 335 millones de usuarios solo en el continente Americano. Servicios, nada de software empaquetado. Word of Mouth = Publicidad efectiva y gratis. Federico Builes Programaci´n Web con Haskell o
Slide 7: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones ¿Por qu´ Haskell? e Comodidad Productividad Correctitud Federico Builes Programaci´n Web con Haskell o
Slide 8: Introducci´n o Acercamientos Introducci´n o Ejemplo Motivaci´n o Conclusiones ¿Por qu´ Haskell? e Comodidad Productividad Correctitud ACID, STM, Paralelismo, Concurrencia, Unit Testing, y una lista gigantesca de cosas horribles. Federico Builes Programaci´n Web con Haskell o
Slide 9: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Diferentes formas de pensar Los ingenieros de software: Aplicaciones 3-tier, bases de datos, MVC, escalabilidad horizontal y vertical. Los acad´micos: Software Transactional Memory (STM), e aplicaciones como servidores web, memoria compartida, sistemas de archivos virtuales. Federico Builes Programaci´n Web con Haskell o
Slide 10: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones HAppS Haskell Application Server, un framework para desarrollar servicios web r´pidamente, sin preocuparse por el pegante de las capas a inferiores (servidores web, de correo, bases de datos, etc). Federico Builes Programaci´n Web con Haskell o
Slide 11: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones ACID Atomicity: Garantiza que cada una de las transacciones sea exitosa (o en caso de fallo, que ninguna se realice). Consistency: Garantiza que el sistema est´ en un estado v´lido e a antes y despu´s de la transacci´n. e o Isolation: Garantiza que todas las operaciones se ejecuten isoladas del resto. Durability: Garantiza que despu´s de una operaci´n exitosa, su e o valor se quedar´ en el sistema por tanto tiempo como a sea necesario (no desaparecer´ del sistema en caso de a fallos). Esto es manejado por MACID (Monad ACID) que se encarga de mantener un log de todas las operaciones, desde donde puede reconstruir el estado del sistema). Federico Builes Programaci´n Web con Haskell o
Slide 12: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Persistencia, Concurrencia y ACID HAppS garantiza estas tres caracter´ısticas, integradas de base, as´ que el desarrollador no debe preocuparse por esto. ı HAppS trata todas las operaciones como transacciones at´micas, y a trav´s de MACID guarda un registro de estas. o e Se encarga de ordenarlas para hacer el manejo de concurrencia autom´tico y garantiza la persistencia a trav´s de a e checkpoints, de nuevo, usando MACID. Federico Builes Programaci´n Web con Haskell o
Slide 13: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Un ejemplo de HAppS import HAppS helloWorld = respond \"Hello World\" main = stdHTTP (debugFilter : noState : [h () GET $ ok hello ]) Federico Builes Programaci´n Web con Haskell o
Slide 14: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Network.CGI CGI (Common Gateway Interface) es una forma de comunicaci´n o entre aplicaciones y servidores web. Esta interfaz permite que cuando un usuario intente acceder a un sitio web, el servidor se encargue de ejecutar un programa, tomar la salida y devolverla al usuario a trav´s de su browser como un archivo HTML est´tico. e a Todos los cambios din´micos se hacen dentro del ejecutable. a Federico Builes Programaci´n Web con Haskell o
Slide 15: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Network.CGI Esta librer´ permite acceder a las variables usando los ıa m´todos GET y POST, y al unirla con HaskellDB o HDBC se e puede lograr una aplicaci´n completa de tier-3. o El transformador para la m´nada CGI permite mantener una o separaci´n entre los datos que recibe la aplicaci´n ( a trav´s o o e de IO()) y el programa en s´ı. Soporta cookies, headers, ByteStrings, y FastCGI. Federico Builes Programaci´n Web con Haskell o
Slide 16: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Network.CGI Esta librer´ permite acceder a las variables usando los ıa m´todos GET y POST, y al unirla con HaskellDB o HDBC se e puede lograr una aplicaci´n completa de tier-3. o El transformador para la m´nada CGI permite mantener una o separaci´n entre los datos que recibe la aplicaci´n ( a trav´s o o e de IO()) y el programa en s´ı. Soporta cookies, headers, ByteStrings, y FastCGI. Sigue el modelo tradicional de desarrollo para aplicaciones web, sin usar nada novedoso pero a la vez proporcionando todo lo que necesita un desarrollador experimentado con web para poder crear una aplicaci´n de manera r´pida y eficaz. o a Federico Builes Programaci´n Web con Haskell o
Slide 17: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Ejemplo CGI import Network.NewCGI import Text.XHtml page :: Html page = body << h1 << \"Hello World!\" cgiMain :: CGI CGIResult cgiMain = output $ renderHtml page main :: IO () main = runCGI $ handleErrors cgiMain Federico Builes Programaci´n Web con Haskell o
Slide 18: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones HSP HSP (Haskell Server Pages) es una extensi´n al Haskell regular o donde, haciendo uso de XML y un DSL (Domain Specific Language) se puede incrustar c´digo Haskell dentro de p´ginas o a HTML. Federico Builes Programaci´n Web con Haskell o
Slide 19: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Inconvenientes Para empezar, la ultima modificaci´n al proyecto se hizo en ´ o mayo 2005. Este proyecto fue empezado por Niklas Broberg como tesis de Maestr´ en Chalmers, as´ que toda la ıa ı documentaci´n y ejemplos solamente se encuentran en su o tesis. Para poder ejecutar un proyecto en HSP se necesitan plugins para un servidor web actual (no existen) o un servidor web modificado (como HWS). Aunque este ultimo existe en el ´ c´digo de la tesis, no soporta im´genes u otro tipo de o a contenido web. No tiene soporte para m´todos POST, sesiones o una e documentaci´n completa. o Federico Builes Programaci´n Web con Haskell o
Slide 20: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Traducci´n o En espa˜ol, el proyecto no es medianamente util, y sin que nadie lo n ´ tome y se encargue de trabajarlo, no lo ser´ nunca. De todas a formas, de los tres ejemplos, puede ser el mas eficaz a la hora de convertir adeptos a Haskell usando aplicaciones web. Federico Builes Programaci´n Web con Haskell o
Slide 21: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Ejemplo HSP <% import System.Time %> <html> <head><title>Pagina de Ejemplo</title></head> <body> <h1>Esto es HTML comun y corriente, nada magico. <br />Son las: <% getClockTime %> </body> </html> Federico Builes Programaci´n Web con Haskell o
Slide 22: Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Bases de Datos La persistencia de los datos es tal vez la parte m´s importante de a todo este proceso, Haskell ofrece las siguientes posibilidades: HDBC : Capa de abstracci´n entre programas y la base de o datos por medio de una librer´ tiene drivers para ıa, MySQL, PostreSQL, SQLite y muchos m´s. a HaskellDB : Librer´ para expresar querys y otras operaciones ıa relacionales de manera declarativa, todo es procesado por medio de Haskell y no son necesarios querys SQL (poco mantenimiento). Federico Builes Programaci´n Web con Haskell o
Slide 23: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR ¿D´nde se esta usando? o Federico Builes Programaci´n Web con Haskell o
Slide 24: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR hPaste Federico Builes Programaci´n Web con Haskell o
Slide 25: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR pass.net Federico Builes Programaci´n Web con Haskell o
Slide 26: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Hope Federico Builes Programaci´n Web con Haskell o
Slide 27: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR HWS Federico Builes Programaci´n Web con Haskell o
Slide 28: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Flippi Federico Builes Programaci´n Web con Haskell o
Slide 29: hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR HaXR HaXR es una librer´ para escribir aplicaciones XML-RPC en ıa Haskell. RPC (Remote Procedure Call) es una tecnolog´ que ıa permite llamar una funci´n a trav´s de la red, y usando XML se o e puede interactuar entre dos espacios de direcciones (memoria) totalmente diferentes. Esto permite la creaci´n muy f´cil de APIs para aplicaciones en o a Internet, sin tener que recurrir a SOAP o REST. Es la base de muchos de los servicios de Internet. Federico Builes Programaci´n Web con Haskell o
Slide 30: Introducci´n o Acercamientos ¿D´nde est´n? o a Ejemplo ¿Qu´ hace falta? e Conclusiones ¿D´nde est´n? o a Federico Builes Programaci´n Web con Haskell o
Slide 31: Introducci´n o Acercamientos ¿D´nde est´n? o a Ejemplo ¿Qu´ hace falta? e Conclusiones ¿Qu´ hace falta? e Federico Builes Programaci´n Web con Haskell o



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)