SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
hPaste
          Introducci´n
                    o      pass.net
         Acercamientos     Hope
               Ejemplo     HWS
          Conclusiones     Flippi
                           HaXR


hPaste




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


pass.net




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


Hope




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


HWS




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


Flippi




         Federico Builes   Programaci´n Web con Haskell
                                     o
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
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
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

Weitere ähnliche Inhalte

Ähnlich wie Programacion Web con Haskell

Front end developer
Front end developerFront end developer
Front end developerSkynet Erp
 
Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Alex Espinoza
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webCartagena, Bolivar
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webCartagena, Bolivar
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosSimoney Llamas
 
Lenguajes de programacion web
Lenguajes de programacion webLenguajes de programacion web
Lenguajes de programacion webinfobran
 
IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformabetabeers
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Ionic: el framework para crear aplicaciones-hibridas-multiplataforma
Ionic: el framework para crear aplicaciones-hibridas-multiplataformaIonic: el framework para crear aplicaciones-hibridas-multiplataforma
Ionic: el framework para crear aplicaciones-hibridas-multiplataformaQuasarMaximus
 
Fundamentos tecnologías web
Fundamentos tecnologías webFundamentos tecnologías web
Fundamentos tecnologías webDavid Hurtado
 
sintaxis de las estructuras de programacion
sintaxis de las estructuras de programacionsintaxis de las estructuras de programacion
sintaxis de las estructuras de programacionCARLOSL_GARCIA71
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPJuan Belón Pérez
 
Herramientas de Desarrollo de Software Bajo Web
Herramientas de Desarrollo de Software Bajo WebHerramientas de Desarrollo de Software Bajo Web
Herramientas de Desarrollo de Software Bajo WebJosé Medina
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo webEvelioHdez
 

Ähnlich wie Programacion Web con Haskell (20)

Front end developer
Front end developerFront end developer
Front end developer
 
Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.
 
Qué es php
Qué es phpQué es php
Qué es php
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la web
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la web
 
EclipseFP
EclipseFPEclipseFP
EclipseFP
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datos
 
Lenguajes de programacion web
Lenguajes de programacion webLenguajes de programacion web
Lenguajes de programacion web
 
Lenguajes de programacion web
Lenguajes de programacion webLenguajes de programacion web
Lenguajes de programacion web
 
IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataforma
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Ionic: el framework para crear aplicaciones-hibridas-multiplataforma
Ionic: el framework para crear aplicaciones-hibridas-multiplataformaIonic: el framework para crear aplicaciones-hibridas-multiplataforma
Ionic: el framework para crear aplicaciones-hibridas-multiplataforma
 
Fundamentos tecnologías web
Fundamentos tecnologías webFundamentos tecnologías web
Fundamentos tecnologías web
 
Lenguajes poo
Lenguajes pooLenguajes poo
Lenguajes poo
 
sintaxis de las estructuras de programacion
sintaxis de las estructuras de programacionsintaxis de las estructuras de programacion
sintaxis de las estructuras de programacion
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
 
Herramientas de Desarrollo de Software Bajo Web
Herramientas de Desarrollo de Software Bajo WebHerramientas de Desarrollo de Software Bajo Web
Herramientas de Desarrollo de Software Bajo Web
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 

Kürzlich hochgeladen

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 

Kürzlich hochgeladen (20)

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 

Programacion Web con Haskell

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR hPaste Federico Builes Programaci´n Web con Haskell o
  • 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. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Hope Federico Builes Programaci´n Web con Haskell o
  • 27. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR HWS Federico Builes Programaci´n Web con Haskell o
  • 28. hPaste Introducci´n o pass.net Acercamientos Hope Ejemplo HWS Conclusiones Flippi HaXR Flippi Federico Builes Programaci´n Web con Haskell o
  • 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. 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. 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