Beruflich Dokumente
Kultur Dokumente
on
Acercamientos
Ejemplo
Conclusiones
28 de junio de 2007
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Introduccion
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Introduccion
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 distribucion para el
producto.
Ejecucion 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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Federico Builes
Programaci
on Web con Haskell
Comodidad
Productividad
Correctitud
Introducci
on
Acercamientos
Ejemplo
Conclusiones
Introducci
on
Motivaci
on
Comodidad
Productividad
Correctitud
ACID, STM, Paralelismo, Concurrencia, Unit Testing, y una
lista gigantesca de cosas horribles.
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
HAppS
Federico Builes
Programaci
on Web con Haskell
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 este en un estado valido
antes y despues de la transacci
on.
Isolation: Garantiza que todas las operaciones se ejecuten
isoladas del resto.
Durability: Garantiza que despues de una operacion exitosa, su
valor se quedara en el sistema por tanto tiempo como
sea necesario (no desaparecera 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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Federico Builes
Programaci
on Web con Haskell
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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Network.CGI
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Network.CGI
Esta librera permite acceder a las variables usando los
metodos 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
separacion entre los datos que recibe la aplicacion ( a traves
de IO()) y el programa en s.
Soporta cookies, headers, ByteStrings, y FastCGI.
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Network.CGI
Esta librera permite acceder a las variables usando los
metodos 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
separacion entre los datos que recibe la aplicacion ( a traves
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 rapida y eficaz.
Federico Builes
Programaci
on Web con Haskell
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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
HSP
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Inconvenientes
Para empezar, la u
ltima modificaci
on al proyecto se hizo en
mayo 2005. Este proyecto fue empezado por Niklas Broberg
como tesis de Maestra en Chalmers, as que toda la
documentacion 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 u
ltimo existe en el
codigo de la tesis, no soporta imagenes u otro tipo de
contenido web.
No tiene soporte para metodos POST, sesiones o una
documentacion completa.
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Traduccion
En espa
nol, el proyecto no es medianamente u
til, y sin que nadie lo
tome y se encargue de trabajarlo, no lo sera 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
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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
HAppS
Network.CGI
HSP
Bases de Datos
La persistencia de los datos es tal vez la parte mas 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 librera, tiene drivers para
MySQL, PostreSQL, SQLite y muchos mas.
HaskellDB : Librera 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
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
hPaste
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
pass.net
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
Hope
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
HWS
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
Federico Builes
Programaci
on Web con Haskell
Flippi
Introducci
on
Acercamientos
Ejemplo
Conclusiones
hPaste
pass.net
Hope
HWS
Flippi
HaXR
HaXR
Federico Builes
Programaci
on Web con Haskell
Introducci
on
Acercamientos
Ejemplo
Conclusiones
D
onde est
an?
Qu
e hace falta?
Federico Builes
Programaci
on Web con Haskell
Donde estan?
Introducci
on
Acercamientos
Ejemplo
Conclusiones
D
onde est
an?
Qu
e hace falta?
Federico Builes
Programaci
on Web con Haskell