Introducci´n
                 o
      Acercamientos
            Ejemplo
       Conclusiones




Programaci´n Web con Haske...
Introducci´n
                                     o
                          Acercamientos    Introducci´n
              ...
Introducci´n
                                     o
                          Acercamientos    Introducci´n
              ...
Introducci´n
                                   o
                        Acercamientos    Introducci´n
                  ...
Introducci´n
                                   o
                        Acercamientos    Introducci´n
                  ...
Introducci´n
                                   o
                        Acercamientos    Introducci´n
                  ...
Introducci´n
                                 o
                      Acercamientos     Introducci´n
                     ...
Introducci´n
                                  o
                       Acercamientos     Introducci´n
                   ...
Introducci´n
                                     o
                                            HAppS
                    ...
Introducci´n
                                    o
                                           HAppS
                      ...
Introducci´n
                                   o
                                          HAppS
                        ...
Introducci´n
                                   o
                                          HAppS
                        ...
Introducci´n
                               o
                                      HAppS
                    Acercamiento...
Introducci´n
                                    o
                                          HAppS
                       ...
Introducci´n
                                   o
                                          HAppS
                        ...
Introducci´n
                                   o
                                          HAppS
                        ...
Introducci´n
                               o
                                      HAppS
                    Acercamiento...
Introducci´n
                                   o
                                          HAppS
                        ...
Introducci´n
                                  o
                                         HAppS
                       Ace...
Introducci´n
                                     o
                                           HAppS
                     ...
Introducci´n
                               o
                                      HAppS
                    Acercamiento...
Introducci´n
                                     o
                                            HAppS
                    ...
hPaste
                    Introducci´n
                              o      pass.net
                   Acercamientos    ...
hPaste
          Introducci´n
                    o      pass.net
         Acercamientos     Hope
               Ejemplo  ...
hPaste
            Introducci´n
                      o      pass.net
           Acercamientos     Hope
                 E...
hPaste
        Introducci´n
                  o      pass.net
       Acercamientos     Hope
             Ejemplo     HWS
 ...
hPaste
       Introducci´n
                 o      pass.net
      Acercamientos     Hope
            Ejemplo     HWS
     ...
hPaste
          Introducci´n
                    o      pass.net
         Acercamientos     Hope
               Ejemplo  ...
hPaste
                         Introducci´n
                                   o      pass.net
                        Ac...
Introducci´n
                           o
                Acercamientos     ¿D´nde est´n?
                                ...
Introducci´n
                              o
                   Acercamientos     ¿D´nde est´n?
                          ...
Upcoming SlideShare
Loading in...5
×

Programacion Web con Haskell

3,750
-1

Published on

Programacion Web con Haskell para el grupo de Eafit en Programacion Funcional

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

No Downloads
Views
Total Views
3,750
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
73
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Programacion Web con Haskell

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 13. Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Un ejemplo de HAppS import HAppS helloWorld = respond quot;Hello Worldquot; main = stdHTTP (debugFilter : noState : [h () GET $ ok hello ]) Federico Builes Programaci´n Web con Haskell o
  14. 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
  15. 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
  16. 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
  17. 17. Introducci´n o HAppS Acercamientos Network.CGI Ejemplo HSP Conclusiones Ejemplo CGI import Network.NewCGI import Text.XHtml page :: Html page = body << h1 << quot;Hello World!quot; cgiMain :: CGI CGIResult cgiMain = output $ renderHtml page main :: IO () main = runCGI $ handleErrors cgiMain Federico Builes Programaci´n Web con Haskell o
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 24. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR hPaste Federico Builes Programaci´n Web con Haskell o
  25. 25. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR pass.net Federico Builes Programaci´n Web con Haskell o
  26. 26. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Hope Federico Builes Programaci´n Web con Haskell o
  27. 27. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR HWS Federico Builes Programaci´n Web con Haskell o
  28. 28. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Flippi Federico Builes Programaci´n Web con Haskell o
  29. 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
  30. 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
  31. 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
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×