Tecnologías‎ > ‎

Seaside

Seaside es un framework que permite construir aplicaciones web en lenguaje Smalltalk.
Smalltalk trabaja de la siguiente manera:
  • tiene un ejecutable (diferente para cada sistema operativo)
  • tiene un archivo "imagen" (el ambiente, donde están todos los objetos con los cuales se trabaja)
  • tiene un archivo de cambios (changes), donde se registra cada una de las modificaciones que se realizan sobre el ambiente, como respaldo ante un cierre inesperado de la imagen.

Instrucciones de instalación

  • Descargar el Pharo, que es una versión open source y gratuita de Smalltalk. Para ello ir a la página http://www.pharo-project.org/pharo-download, y bajarse el ejecutable (Virtual Machines) del sistema operativo deseado, sea MacOS, Windows o Linux. Van a ver que aparece para descargar las versiones OneClick y las comunes: no hace falta bajarse ninguna imagen del Pharo, solamente el ejecutable. Ejemplo: si tenés una máquina Windows, descargás el archivo PharoVM-Win32-4.0.2-bin.zip (link Windows 4.0.2 del párrafo Virtual Machines) y lo instalás en una carpeta cualquiera, como C:\Archivos de programa\Seaside
  • Descargar los fuentes del Pharo, en la misma página, en el párrafo Source Files: PharoV10.sources.zip
  • En la página de download descargar la versión estable más reciente, una opción posible es Seaside-3.0-final.zip
  • Descomprimir ambos archivos zip en el mismo directorio donde instalaste la VM
  • Levantar el Pharo, esto se hace de cualquiera de estas maneras:
    • Llamando al ejecutable (en Windows es Pharo.exe), seleccionando el archivo .image que descomprimiste antes
    • Haciendo doble click sobre el archivo .image 
    • Arrastrando el archivo .image sobre el ejecutable (drag & drop)
  • Una vez que estás en el Pharo, te movés a través de estas herramientas:
    • el Seaside Control Panel, donde aparece el estado del web server que corre en tu máquina
    • el Class Browser: donde codificás el código de cada clase
    • el Workspace: un lugar donde podés crear objetos y enviarles mensajes línea por línea sin necesidad de escribir un método main
    • el Inspector: donde podés ver el valor interno de los atributos de un objeto.
  • Para más información consultar este tutorial de Pharo, también es muy bueno el libro interactivo Pharo By Example
  • El Web Server ya está levantado en http://localhost:8080, pueden probarlo en un browser
  • Para ver el listado de aplicaciones: http://localhost:8080/browse

Material de Lectura

Instrucciones para descargar los ejemplos

  • Bajar el archivo .st a una carpeta
  • Ir al File Browser: botón izquierdo sobre el world (el fondo gris), Tools > File Browser
  • Seleccionar el archivo .st en la carpeta donde se haya bajado, y dar click sobre Install en la barra de herramientas, o bien botón derecho "install into new change set". Esto agregará una nueva categoría con las clases de ejemplo.
  • Para registrar la aplicación en el web server, abrir un worskpace y escribir: WAAdmin register: clase principal de la app asApplicationAt: url principal del browser (entre comillas simples dado que es un string, cada app sugiere un nombre pero pueden cambiarlo al que les guste a uds.)
  • Para probarlo, van a http://localhost:8080/browse que mostrará las aplicaciones instaladas en el web server o directamente http://localhost:8080/urlDelBrowser

Listado de ejemplos

  • Calculadora, tenés las clases WACalculadora3Pages ('calculadora.3pages') y WACalculadoraForm ('calculadora.form'). La primera sirve para mostrar un ejemplo de continuation (tres líneas terminan convirtiéndose en tres páginas web html para mostrar el resultado de sumar dos números). La segunda clase arma un formulario HTML que bindea contra dos variables de instancia, cuando el usuario presiona el botón sumar eso dispara como callback la sumatoria de ambas variables. Descargá el ejemplo acá.
  • Actualización de libros de una biblioteca: tenés la clase WASimpleABMLibros ('abm.libros'), la pantalla principal que permite buscar/dar de alta/editar o eliminar los libros que tiene una biblioteca. Descargá el ejemplo acá. Algunas cosas interesantes:
    • Al editar un libro, no necesitamos tener un "id", pero sí es importante trabajar con una copia del objeto original, porque si el usuario se arrepiente y cancela la edición no queremos que el objeto original se modifique. Entonces si el usuario acepta la edición, el objeto original se pisa con la copia. Si el usuario cancela, la copia se descarta y el objeto original no se modifica. 

Ejemplo más avanzado