El grupo al cual envías entradas es un grupo Usenet. Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Estreno la nueva lista contestando a un correo que recibí en privado.
Antes de empezar a hablar de nada, les quiero comentar que las decisiones que fui tomando (relacionadas con el diseño y arquitectura de las partes) no son inamovibles, sino que son las decisión que fui tomando durante el desarrollo inicial. Siendo un "Ágil convencido", no tomé ninguna decisión importante antes de realmente necesitarla.
Así que les propongo que sigamos en modo "Ágil" y discutamos cualquier idea nueva.
Al grano,
Pablo Iaria, en un correo privado, me preguntaba:
La primer pregunta que me surge de ver el código de SWT es porque te inclinaste por modelar la parte de cliente y la de server y porque no te convenció un approach como el de seaside que modela todo junto "abstrayéndose" un poco de la cuestión web.
Lo primero que diferencia el SWT del Seaside (y la mayoría de los frameworks para hacer aplicaciones web) es que el SWT asume que (y provee) tenemos un (mini) entorno Smalltalk en los navegadores. Usando el ST2JS [*], cualquier browser moderno se puede convertir es un mini-smalltalk.
[*] El ST2JS es. básicamente, un traductor Smalltalk a Javascript que respecta prácticamente toda la semántica del Smalltalk; y provee un juego de clases "base" para crear un mini-ambiente.
Esto nos permite programar (en Smalltalk) para el browser.
Es decir: ya no tenemos motivos (al menos en teoría) para no mover todo la lógica de las vistas al mini-entorno smalltalk que tenemos en los browser.
En la arquitectura *básica* del SWT, los entornos Smalltalk (que corren en los browsers) disponen de un canal de comunicación con el Smalltalk "server" (usando una especie de JSON-RPC). A su vez, el Smalltalk "Server" puede comunicarse (en cualquier momento, usando el Comet) con los mini-ambientes ST de los browsers.
Para un aplicación de ejemplo simple (como el Ping/Pong), el SWT nos requiere escribir 2 clases: PingPongServerApplication y PingPongClientApplication.
Cuando un usuario se conecta (a un aplicación SWT), el framework se encarga de:
- Instanciar un PingPongClientApplication en el browser. - Instanciar un PingPongServerApplication en el Smalltalk. - Conectarlos [*].
[*] Conectar las instancias requiere de gran trabajo. Entre otras cosas hay que generar código JS (desde ST) e enviarlo al browser, instanciar los objetos JS, instanciar los objetos del ST, y procurar establecer la conexión propiamente dicha.
Al hacer eso, el framework, nos permitirá enviar mensajes a la instancia Server desde la instancia en el browser (Client) y, también, nos permitirá enviar mensajes al browser (Client) desde el Server.
El ejemplo Ping/Pong, que está explicado al detalle en en wiki, muestra bien la arquitectura.
Sobre esa arquitectura básica, se pueden montar cosas más complejas. Ahora mismo estoy investigando con un framework MVC donde la vista/controlador está en el browser, y el modelo pueda estar tanto en el browser como en el server. Todavía no se como va a responder un MVC con eventos distribuidos, pero parece prometedor. Si quieren ir viendo algo, miren los ejemplos "Web 2.0 MVC" y "Realtime Wiki".
Muy clara tu explicacion. Segun entiendo, tener la vista separada en dos clases es la forma que existe hoy en día de indicarle al framework que parte de la vista tiene que convetir a javascript para viajar al cliente y que parte queda en el server para atender a los pedidos del browser.
Tengo una imagen configurada con la ultima version de SWT y realmente debo decirte que me quedé impresionado de las cosas que se pueden hacer.
Una de las cosas que veo que se puede mejorar es que se generen librerías de javascript (de la parte del mini-ambiente st al menos) para que las páginas sean mas livianas y se tarde menos en la generacion del javascript.
Se podría poner en algun lado una imagen con todo instalado (puede ser la que recien acabo de generar sin problemas) para que cualquiera con ganas de chusmear un poco SWT lo pueda hacer sin tener que ponerse a bajar todo. Como lo ves?
Saludos! Pablo.-
On 10/24/06, diegogomezd...@gmail.com <diegogomezd...@gmail.com> wrote:
> Estreno la nueva lista contestando a un correo que recibí en privado.
> Antes de empezar a hablar de nada, les quiero comentar que las > decisiones que fui tomando (relacionadas con el diseño y arquitectura > de > las partes) no son inamovibles, sino que son las decisión que fui > tomando durante el desarrollo inicial. Siendo un "Ágil convencido", > no > tomé ninguna decisión importante antes de realmente necesitarla.
> Así que les propongo que sigamos en modo "Ágil" y discutamos > cualquier > idea nueva.
> Al grano,
> Pablo Iaria, en un correo privado, me preguntaba:
> La primer pregunta que me surge de ver el código de > SWT es porque te inclinaste por modelar la parte de > cliente y la de server y porque no te convenció un > approach como el de seaside que modela todo junto > "abstrayéndose" un poco de la cuestión web.
> Lo primero que diferencia el SWT del Seaside (y la mayoría de los > frameworks para hacer aplicaciones web) es que el SWT asume que (y > provee) tenemos un (mini) entorno Smalltalk en los navegadores. Usando > el ST2JS [*], cualquier browser moderno se puede convertir es un > mini-smalltalk.
> [*] El ST2JS es. básicamente, un traductor Smalltalk a Javascript que > respecta prácticamente toda la semántica del Smalltalk; y provee un > juego de clases "base" para crear un mini-ambiente.
> Esto nos permite programar (en Smalltalk) para el browser.
> Es decir: ya no tenemos motivos (al menos en teoría) para no mover > todo > la lógica de las vistas al mini-entorno smalltalk que tenemos en los > browser.
> En la arquitectura *básica* del SWT, los entornos Smalltalk (que > corren > en los browsers) disponen de un canal de comunicación con el Smalltalk > "server" (usando una especie de JSON-RPC). A su vez, el Smalltalk > "Server" puede comunicarse (en cualquier momento, usando el Comet) con > los mini-ambientes ST de los browsers.
> Para un aplicación de ejemplo simple (como el Ping/Pong), el SWT nos > requiere escribir 2 clases: PingPongServerApplication y > PingPongClientApplication.
> Cuando un usuario se conecta (a un aplicación SWT), el framework se > encarga de:
> - Instanciar un PingPongClientApplication en el browser. > - Instanciar un PingPongServerApplication en el Smalltalk. > - Conectarlos [*].
> [*] Conectar las instancias requiere de gran trabajo. Entre otras cosas > hay que generar código JS (desde ST) e enviarlo al browser, instanciar > los objetos JS, instanciar los objetos del ST, y procurar establecer la > conexión propiamente dicha.
> Al hacer eso, el framework, nos permitirá enviar mensajes a la > instancia > Server desde la instancia en el browser (Client) y, también, nos > permitirá enviar mensajes al browser (Client) desde el Server.
> El ejemplo Ping/Pong, que está explicado al detalle en en wiki, > muestra > bien la arquitectura.
> Sobre esa arquitectura básica, se pueden montar cosas más complejas. > Ahora mismo estoy investigando con un framework MVC donde la > vista/controlador está en el browser, y el modelo pueda estar tanto en > el browser como en el server. Todavía no se como va a responder un > MVC > con eventos distribuidos, pero parece prometedor. Si quieren ir viendo > algo, miren los ejemplos "Web 2.0 MVC" y "Realtime Wiki".
> Muy clara tu explicacion. Segun entiendo, tener la vista separada en > dos clases es la forma que existe hoy en día de indicarle al framework > que parte de la vista tiene que convetir a javascript para viajar al > cliente y que parte queda en el server para atender a los pedidos del > browser.
Exacto.
> Tengo una imagen configurada con la ultima version de SWT y realmente > debo decirte que me quedé impresionado de las cosas que se pueden > hacer.
Ayer subí más cosas, sobre todo el MVC distribuido está tomando forma y color y las aplicaciones "Web 2.0 MVC" y "Realtime Wiki", ahora, responden de forma más fluida.
> Una de las cosas que veo que se puede mejorar es que se generen > librerías de javascript (de la parte del mini-ambiente st al menos) > para que las páginas sean mas livianas y se tarde menos en la > generacion del javascript.
Ya hay algo de eso hecho, fijate senders e implementors de #includeEmbeddedJavascript y #includeJavascriptInSteps.
La forma en que está ahora (genera todo el JS, en pasos, pero "embebbed") es la más rápida a la hora de programar y probar.
En un entorno de "producción", lo mejor sería generar los archivos .JS desde Smalltalk (en un proceso de deploy) y dejar que el Apache (o algún servidor web más rápido) sirva los archivos con GZIP y todo. Acá habría que tunear bien las fechas de los archivos, la configuración de los proxies, etc para que el usuario sólo se baje las cosas nuevas.
Al JS, también, se le puede hacer un procesamiento para reducirlo de tamaño (remover blancos, cambiar nombre largos de métodos/variables por cortos, etc). Como la generación del JS es un proceso "en tandem", se pueden hacer muchas optimizaciones... incluso se podrían genera "inline" algunos métodos (como los accesors y métodos simples).
Para resumir: Hay mucho espacio para bajar el tiempo de "descarga/instalación" de las aplicaciones SWT.
> Se podría poner en algun lado una imagen con todo instalado (puede ser > la que recien acabo de generar sin problemas) para que cualquiera con > ganas de chusmear un poco SWT lo pueda hacer sin tener que ponerse a > bajar todo. Como lo ves?
Yo no tengo problemas, sólo que no tuve tiempo de hacerlo. Si querés, te cedo el honor ;-).
De todas formas el framework no está usable por personas que no puedan manejar, al menos, el SqueakMap y el Monticello... los días que trabajo en el framework, publico 2 o 3 versiones diarias. Si alguien se baja una imagen pre-cocinada, igual tiene que actualizarla seguido.
> > Muy clara tu explicacion. Segun entiendo, tener la vista separada en > > dos clases es la forma que existe hoy en día de indicarle al framework > > que parte de la vista tiene que convetir a javascript para viajar al > > cliente y que parte queda en el server para atender a los pedidos del > > browser.
> Exacto.
> > Tengo una imagen configurada con la ultima version de SWT y realmente > > debo decirte que me quedé impresionado de las cosas que se pueden > > hacer.
> Ayer subí más cosas, sobre todo el MVC distribuido está tomando > forma y color y las aplicaciones "Web 2.0 MVC" y "Realtime Wiki", > ahora, responden de forma más fluida.
> > Una de las cosas que veo que se puede mejorar es que se generen > > librerías de javascript (de la parte del mini-ambiente st al menos) > > para que las páginas sean mas livianas y se tarde menos en la > > generacion del javascript.
> Ya hay algo de eso hecho, fijate senders e implementors de > #includeEmbeddedJavascript y #includeJavascriptInSteps.
> La forma en que está ahora (genera todo el JS, en pasos, pero > "embebbed") es la más rápida a la hora de programar y probar.
> En un entorno de "producción", lo mejor sería generar los archivos > .JS desde Smalltalk (en un proceso de deploy) y dejar que el Apache (o > algún servidor web más rápido) sirva los archivos con GZIP y todo. > Acá habría que tunear bien las fechas de los archivos, la > configuración de los proxies, etc para que el usuario sólo se baje > las cosas nuevas.
> Al JS, también, se le puede hacer un procesamiento para reducirlo de > tamaño (remover blancos, cambiar nombre largos de métodos/variables > por cortos, etc). Como la generación del JS es un proceso "en > tandem", se pueden hacer muchas optimizaciones... incluso se podrían > genera "inline" algunos métodos (como los accesors y métodos > simples).
> Para resumir: Hay mucho espacio para bajar el tiempo de > "descarga/instalación" de las aplicaciones SWT.
Si, ni hablar...
Ayer quise correr unas pruebas desde el Konqueror y no pude por unos errores de javascript, voy a tratar de hacerme un tiempito para chusmear con mas detenimiento a ver que pasaba...
> > Se podría poner en algun lado una imagen con todo instalado (puede ser > > la que recien acabo de generar sin problemas) para que cualquiera con > > ganas de chusmear un poco SWT lo pueda hacer sin tener que ponerse a > > bajar todo. Como lo ves?
> Yo no tengo problemas, sólo que no tuve tiempo de hacerlo. Si querés, > te cedo el honor ;-).
Bueno, tengo una imagen generada con lo que había hasta ayer a la tarde (hay cosas de MVC incuidas que funcionan joya)
Podríamos pensar en hacer releases cada cierto tiempo de una imagen de prueba para los curiosos sin tiempo de seguir los pasos de instalacion de SWT? (aunque no sea muy seguido)
> De todas formas el framework no está usable por personas que no puedan > manejar, al menos, el SqueakMap y el Monticello... los días que > trabajo en el framework, publico 2 o 3 versiones diarias. Si alguien > se baja una imagen pre-cocinada, igual tiene que actualizarla seguido.
Si bien instalar SWT es bastante sencillo; creo que a medida que SWT se vuelva mas estable será mas conveniente tener una imagen (de desarrollo/prueba) con SWT instalado.
No es exactamente el mismo caso porque SWT es mucho más dinamico en ésta etapa, pero cuando probé el Magma quise instalar las cosas desde el Monticello y no pude hacerlo andar. Hasta que alguien no puso una imagen con las cosas instaladas no pude probar la ultima version de Magma (aún así los queries no funcionan).
> Ayer quise correr unas pruebas desde el Konqueror y no pude por unos > errores de javascript, voy a tratar de hacerme un tiempito para > chusmear con mas detenimiento a ver que pasaba...
Si vas a tratar de hacer andar todo en Konqueror (y Safari) te recomiendo que sigas un procedimiento similar al siguiente:
- Lograr que los Tests corran en el Konqueror. La última vez que los corrí, estaban en verde.
- Detectar QUE es lo que no anda (la última vez que miré, el Konqueror se mareaba con un IFrame hidden, y el Comet usa uno hidden).
- Escribir un test que, en rojo, haga evidente que es lo que no anda.
- Hackear para poner el test en verde.
Si seguís un procedimiento así, aunque vos no seas capás de arreglarlo, el hecho de darnos un test en rojo ayudaría muchísimo.
> > > Se podría poner en algun lado una imagen con todo instalado (puede ser > > > la que recien acabo de generar sin problemas) para que cualquiera con > > > ganas de chusmear un poco SWT lo pueda hacer sin tener que ponerse a > > > bajar todo. Como lo ves?
> > Yo no tengo problemas, sólo que no tuve tiempo de hacerlo. Si querés, > > te cedo el honor ;-).
> Bueno, tengo una imagen generada con lo que había hasta ayer a la > tarde (hay cosas de MVC incuidas que funcionan joya)
> Podríamos pensar en hacer releases cada cierto tiempo de una imagen de > prueba para los curiosos sin tiempo de seguir los pasos de instalacion > de SWT? (aunque no sea muy seguido)
On 11/5/06, Diego Gomez Deck <DiegoGomezD...@consultar.com> wrote:
> Hola Pablo,
> [snip] > > Ayer quise correr unas pruebas desde el Konqueror y no pude por unos > > errores de javascript, voy a tratar de hacerme un tiempito para > > chusmear con mas detenimiento a ver que pasaba...
> Si vas a tratar de hacer andar todo en Konqueror (y Safari) te > recomiendo que sigas un procedimiento similar al siguiente:
> - Lograr que los Tests corran en el Konqueror. La última vez que los > corrí, estaban en verde.
afortunadamente actualicé mi versión de Konqueror y funcionó.. aunque a veces se cuelga...
> - Detectar QUE es lo que no anda (la última vez que miré, el Konqueror > se mareaba con un IFrame hidden, y el Comet usa uno hidden).
> - Escribir un test que, en rojo, haga evidente que es lo que no anda.
> - Hackear para poner el test en verde.
> Si seguís un procedimiento así, aunque vos no seas capás de arreglarlo, > el hecho de darnos un test en rojo ayudaría muchísimo.
si, sin duda que este debería ser el procedimiento para reportar bugs
> > > > Se podría poner en algun lado una imagen con todo instalado (puede ser > > > > la que recien acabo de generar sin problemas) para que cualquiera con > > > > ganas de chusmear un poco SWT lo pueda hacer sin tener que ponerse a > > > > bajar todo. Como lo ves?
> > > Yo no tengo problemas, sólo que no tuve tiempo de hacerlo. Si querés, > > > te cedo el honor ;-).
> > Bueno, tengo una imagen generada con lo que había hasta ayer a la > > tarde (hay cosas de MVC incuidas que funcionan joya)
> > Podríamos pensar en hacer releases cada cierto tiempo de una imagen de > > prueba para los curiosos sin tiempo de seguir los pasos de instalacion > > de SWT? (aunque no sea muy seguido)