Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programación Web con Haskell (deprecated)

Programación Web con Haskell (deprecated)

Most if not all of the technologies mentioned here are irrelevant today, please don't pay attention.

febuiles

June 28, 2007
Tweet

More Decks by febuiles

Other Decks in Technology

Transcript

  1. Introducci´ on Acercamientos Ejemplo Conclusiones Programaci´ on Web con Haskell

    Federico Builes 28 de junio de 2007 Federico Builes Programaci´ on Web con Haskell
  2. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on Introducci´

    on 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´ on nos referimos a aplicaciones accesibles a trav´ es de un browser. Federico Builes Programaci´ on Web con Haskell
  3. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on Introducci´

    on 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´ on para el producto. Ejecuci´ on multi-plataforma desde el comienzo, sin requerimientos en el lado del cliente (s´ olo se necesita un browser medianamente moderno). Federico Builes Programaci´ on Web con Haskell
  4. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on La

    web como plataforma 335 millones de usuarios solo en el continente Americano. Federico Builes Programaci´ on Web con Haskell
  5. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on La

    web como plataforma 335 millones de usuarios solo en el continente Americano. Servicios, nada de software empaquetado. Federico Builes Programaci´ on Web con Haskell
  6. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on 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´ on Web con Haskell
  7. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on ¿Por

    qu´ e Haskell? Comodidad Productividad Correctitud Federico Builes Programaci´ on Web con Haskell
  8. Introducci´ on Acercamientos Ejemplo Conclusiones Introducci´ on Motivaci´ on ¿Por

    qu´ e Haskell? Comodidad Productividad Correctitud ACID, STM, Paralelismo, Concurrencia, Unit Testing, y una lista gigantesca de cosas horribles. Federico Builes Programaci´ on Web con Haskell
  9. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Diferentes formas

    de pensar Los ingenieros de software: Aplicaciones 3-tier, bases de datos, MVC, escalabilidad horizontal y vertical. Los acad´ emicos: Software Transactional Memory (STM), aplicaciones como servidores web, memoria compartida, sistemas de archivos virtuales. Federico Builes Programaci´ on Web con Haskell
  10. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP HAppS Haskell

    Application Server, un framework para desarrollar servicios web r´ apidamente, sin preocuparse por el pegante de las capas inferiores (servidores web, de correo, bases de datos, etc). Federico Builes Programaci´ on Web con Haskell
  11. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP 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´ e en un estado v´ alido antes y despu´ es de la transacci´ on. Isolation: Garantiza que todas las operaciones se ejecuten isoladas del resto. Durability: Garantiza que despu´ es de una operaci´ on exitosa, su valor se quedar´ a en el sistema por tanto tiempo como sea necesario (no desaparecer´ a del sistema en caso de 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´ on Web con Haskell
  12. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP 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´ omicas, y a trav´ es de MACID guarda un registro de estas. Se encarga de ordenarlas para hacer el manejo de concurrencia autom´ atico y garantiza la persistencia a trav´ es de checkpoints, de nuevo, usando MACID. Federico Builes Programaci´ on Web con Haskell
  13. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Un ejemplo

    de HAppS import HAppS helloWorld = respond "Hello World" main = stdHTTP (debugFilter : noState : [h () GET $ ok hello ]) Federico Builes Programaci´ on Web con Haskell
  14. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Network.CGI CGI

    (Common Gateway Interface) es una forma de comunicaci´ on 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´ es de su browser como un archivo HTML est´ atico. Todos los cambios din´ amicos se hacen dentro del ejecutable. Federico Builes Programaci´ on Web con Haskell
  15. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Network.CGI Esta

    librer´ ıa permite acceder a las variables usando los m´ etodos GET y POST, y al unirla con HaskellDB o HDBC se puede lograr una aplicaci´ on completa de tier-3. El transformador para la m´ onada CGI permite mantener una separaci´ on entre los datos que recibe la aplicaci´ on ( a trav´ es de IO()) y el programa en s´ ı. Soporta cookies, headers, ByteStrings, y FastCGI. Federico Builes Programaci´ on Web con Haskell
  16. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Network.CGI Esta

    librer´ ıa permite acceder a las variables usando los m´ etodos GET y POST, y al unirla con HaskellDB o HDBC se puede lograr una aplicaci´ on completa de tier-3. El transformador para la m´ onada CGI permite mantener una separaci´ on entre los datos que recibe la aplicaci´ on ( a trav´ es 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´ on de manera r´ apida y eficaz. Federico Builes Programaci´ on Web con Haskell
  17. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP 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´ on Web con Haskell
  18. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP HSP HSP

    (Haskell Server Pages) es una extensi´ on al Haskell regular donde, haciendo uso de XML y un DSL (Domain Specific Language) se puede incrustar c´ odigo Haskell dentro de p´ aginas HTML. Federico Builes Programaci´ on Web con Haskell
  19. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Inconvenientes Para

    empezar, la ´ ultima modificaci´ on al proyecto se hizo en mayo 2005. Este proyecto fue empezado por Niklas Broberg como tesis de Maestr´ ıa en Chalmers, as´ ı que toda la documentaci´ on y ejemplos solamente se encuentran en su 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´ odigo de la tesis, no soporta im´ agenes u otro tipo de contenido web. No tiene soporte para m´ etodos POST, sesiones o una documentaci´ on completa. Federico Builes Programaci´ on Web con Haskell
  20. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Traducci´ on

    En espa˜ nol, el proyecto no es medianamente ´ util, y sin que nadie lo tome y se encargue de trabajarlo, no lo ser´ a nunca. De todas formas, de los tres ejemplos, puede ser el mas eficaz a la hora de convertir adeptos a Haskell usando aplicaciones web. Federico Builes Programaci´ on Web con Haskell
  21. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP 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´ on Web con Haskell
  22. Introducci´ on Acercamientos Ejemplo Conclusiones HAppS Network.CGI HSP Bases de

    Datos La persistencia de los datos es tal vez la parte m´ as importante de todo este proceso, Haskell ofrece las siguientes posibilidades: HDBC : Capa de abstracci´ on entre programas y la base de datos por medio de una librer´ ıa, tiene drivers para MySQL, PostreSQL, SQLite y muchos m´ as. HaskellDB : Librer´ ıa para expresar querys y otras operaciones relacionales de manera declarativa, todo es procesado por medio de Haskell y no son necesarios querys SQL (poco mantenimiento). Federico Builes Programaci´ on Web con Haskell
  23. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR ¿D´ onde se esta usando? Federico Builes Programaci´ on Web con Haskell
  24. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR hPaste Federico Builes Programaci´ on Web con Haskell
  25. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR pass.net Federico Builes Programaci´ on Web con Haskell
  26. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR Hope Federico Builes Programaci´ on Web con Haskell
  27. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR HWS Federico Builes Programaci´ on Web con Haskell
  28. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR Flippi Federico Builes Programaci´ on Web con Haskell
  29. Introducci´ on Acercamientos Ejemplo Conclusiones hPaste pass.net Hope HWS Flippi

    HaXR HaXR HaXR es una librer´ ıa para escribir aplicaciones XML-RPC en Haskell. RPC (Remote Procedure Call) es una tecnolog´ ıa que permite llamar una funci´ on a trav´ es de la red, y usando XML se puede interactuar entre dos espacios de direcciones (memoria) totalmente diferentes. Esto permite la creaci´ on muy f´ acil de APIs para aplicaciones en Internet, sin tener que recurrir a SOAP o REST. Es la base de muchos de los servicios de Internet. Federico Builes Programaci´ on Web con Haskell
  30. Introducci´ on Acercamientos Ejemplo Conclusiones ¿D´ onde est´ an? ¿Qu´

    e hace falta? ¿D´ onde est´ an? Federico Builes Programaci´ on Web con Haskell
  31. Introducci´ on Acercamientos Ejemplo Conclusiones ¿D´ onde est´ an? ¿Qu´

    e hace falta? ¿Qu´ e hace falta? Federico Builes Programaci´ on Web con Haskell