Environment en AjTalk

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Environment en AjTalk

Angel Java Lopez
Hola gente!

Bien, durante esta maniana, implemente (usando TDD :-), algo que podria
llamar Environment, es decir, para evitar colision de clases.

Espero que se entienda el test

https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/EnvironmentTests.st

Comentarios? Dudas? Bienvenidos!

Angel "Java" Lopez
@ajlopez
gh:ajlopez
Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk

Angel Java Lopez
Hola gente!

Como lo mio es un apostolado ;-) ;-) termine la implementacion de
Environments (no se como lo llaman en el ambiente smalltokero), para evitar
colision de nombres en clases.

https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/EnvironmentTests.st

Esta algo inspirado en los import de Python y los require de Node.js

Se puede manejar todo por codigo:
- Crear un nuevo environment (namespace?) que sea hijo de Smalltalk
- Crear un subenvironment de otro existente
- Poner un environment existente como el actual
- Desde cualquier environment, Smalltalk apunta siempre a lo mismo
- Todo los subclass:... las definiciones de clases entonces quedan siempre
en el environment actual (si no se hace nada, quedan como globales en
Smalltalk)
- Las variables 'globales' (no de clase, no de instancia) de los metodos de
una clase, se resuelven en el environment que sea el actual en el momento
de definir la clase
- Hay syntax sugar, tipo Smalltalk.MyModule.MyClass es algo como (Smalltalk
at: #MyModule) at: #MyClass
- El environment actual es por Process (no hay Process en AjTalk, todavia,
por abajo siguen siendo threads). Es decir, cambiar el environment actual
en un Process (thread actual), no afecta a las definiciones de clases,
resolucion de globales en otros Process (otros threads en ejecucion)

Pendiente:

- Lo que esta al final de ese test de arriba, como resolver un paquete a
cargar (no se si es tiempo de implementarlo).
- Serializar/Deserializar una imagen que tenga varios environments ademas
del global Smalltalk
- Manejar varios environments cuando hay Host y Hosted machine

Nos leemos!

Angel "Java" Lopez
@ajlopez
gh:ajlopez

2012/12/1 Angel Java Lopez <[hidden email]>

> Hola gente!
>
> Bien, durante esta maniana, implemente (usando TDD :-), algo que podria
> llamar Environment, es decir, para evitar colision de clases.
>
> Espero que se entienda el test
>
>
> https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/EnvironmentTests.st
>
> Comentarios? Dudas? Bienvenidos!
>
> Angel "Java" Lopez
> @ajlopez
> gh:ajlopez
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk

Edgar De Cleene
> Hola gente!
>
>
> Como lo mio es un apostolado ;-) ;-) termine la implementacion de Environments
> (no se como lo llaman en el ambiente smalltokero), para evitar colision de
> nombres en clases.
>
> https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/Env
> ironmentTests.st
>
> Esta algo inspirado en los import de Python y los require de Node.js
>
> Se puede manejar todo por codigo:
> - Crear un nuevo environment (namespace?) que sea hijo de Smalltalk
> - Crear un subenvironment de otro existente
> - Poner un environment existente como el actual
> - Desde cualquier environment, Smalltalk apunta siempre a lo mismo
> - Todo los subclass:... las definiciones de clases entonces quedan siempre en
> el environment actual (si no se hace nada, quedan como globales en Smalltalk)
> - Las variables 'globales' (no de clase, no de instancia) de los metodos de
> una clase, se resuelven en el environment que sea el actual en el momento de
> definir la clase
> - Hay syntax sugar, tipo Smalltalk.MyModule.MyClass es algo como (Smalltalk
> at: #MyModule) at: #MyClass
> - El environment actual es por Process (no hay Process en AjTalk, todavia, por
> abajo siguen siendo threads). Es decir, cambiar el environment actual en un
> Process (thread actual), no afecta a las definiciones de clases, resolucion de
> globales en otros Process (otros threads en ejecucion)
>
> Pendiente:
>
> - Lo que esta al final de ese test de arriba, como resolver un paquete a
> cargar (no se si es tiempo de implementarlo).
> - Serializar/Deserializar una imagen que tenga varios environments ademas del
> global Smalltalk
> - Manejar varios environments cuando hay Host y Hosted machine
>
> Nos leemos!


Hay un trabajo de German Leiva de un ESUG anterior.
La implementacion que uso es la de Dan Ingalls de las imagenes viejas.
Para serializar, uso los ReferenceStream, que dentro de las limitaciones
logicas me sirven para exportar / importar archivos .obj entre
Squeak/Pharo/Cuis.
Hay un trabajo excelente de Mariano Martinez Peck y de un miembro de
SqueakRos que no nombro porque no escribe.
Busca Fuel en Pharo
Estos chicos despreciaron mi sugerencia apoyada por Craig de nombrar
Injector al cargador de estos objetos .

Edgar



Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk

Angel Java Lopez
Hola gente!

Edgar, gracias por la info. Si, lo de serializar lo tengo resuelto, solo
tengo que ajustar una tuerca, cuando hay ahora mas de un Environment. Pero
ya puedo serializar/deserializar objetos, desde el fin de semana pasado
largo, aunque tengan bucles. Solo que asumi que habia un solo Environment.
Escribo test, unas lineas mas de codigo, y sale con fritas ;-)

Pero, le ven futuro a los Environments? Algo en contra? algun caso que lo
dificulta?

Supongo que hay varios Smalltalk que lo resolvieron de otras maneras.

Hasta donde se, en Squeak y Pharo se prefiere que las clases de un paquete
(se llama asi? como se llama a un Aida, Swazoo, Seaside? se lo llama un
paquete?) tengan un prefijo de dos letras. Es asi? Y no tienen problemas
igual?

Como se hace un fileOut de todo lo que comienza con dos letras dadas,
digamos WA, en Squeak/Pharo? (incluyendo supongo los metodos de otras
clases, con categoria que comienza con "*WA" es asi?)

Nos leemos!

Angel "Java" Lopez
@ajlopez
gh:ajlopez

2012/12/1 Edgar J. De Cleene <[hidden email]>

> **
>
>
> > Hola gente!
> >
> >
> > Como lo mio es un apostolado ;-) ;-) termine la implementacion de
> Environments
> > (no se como lo llaman en el ambiente smalltokero), para evitar colision
> de
> > nombres en clases.
> >
> >
> https://github.com/ajlopez/AjTalk/blob/master/Src/AjTalk.Tests/AssertTests/Env
> > ironmentTests.st
> >
> > Esta algo inspirado en los import de Python y los require de Node.js
> >
> > Se puede manejar todo por codigo:
> > - Crear un nuevo environment (namespace?) que sea hijo de Smalltalk
> > - Crear un subenvironment de otro existente
> > - Poner un environment existente como el actual
> > - Desde cualquier environment, Smalltalk apunta siempre a lo mismo
> > - Todo los subclass:... las definiciones de clases entonces quedan
> siempre en
> > el environment actual (si no se hace nada, quedan como globales en
> Smalltalk)
> > - Las variables 'globales' (no de clase, no de instancia) de los metodos
> de
> > una clase, se resuelven en el environment que sea el actual en el
> momento de
> > definir la clase
> > - Hay syntax sugar, tipo Smalltalk.MyModule.MyClass es algo como
> (Smalltalk
> > at: #MyModule) at: #MyClass
> > - El environment actual es por Process (no hay Process en AjTalk,
> todavia, por
> > abajo siguen siendo threads). Es decir, cambiar el environment actual en
> un
> > Process (thread actual), no afecta a las definiciones de clases,
> resolucion de
> > globales en otros Process (otros threads en ejecucion)
> >
> > Pendiente:
> >
> > - Lo que esta al final de ese test de arriba, como resolver un paquete a
> > cargar (no se si es tiempo de implementarlo).
> > - Serializar/Deserializar una imagen que tenga varios environments
> ademas del
> > global Smalltalk
> > - Manejar varios environments cuando hay Host y Hosted machine
> >
> > Nos leemos!
>
> Hay un trabajo de German Leiva de un ESUG anterior.
> La implementacion que uso es la de Dan Ingalls de las imagenes viejas.
> Para serializar, uso los ReferenceStream, que dentro de las limitaciones
> logicas me sirven para exportar / importar archivos .obj entre
> Squeak/Pharo/Cuis.
> Hay un trabajo excelente de Mariano Martinez Peck y de un miembro de
> SqueakRos que no nombro porque no escribe.
> Busca Fuel en Pharo
> Estos chicos despreciaron mi sugerencia apoyada por Craig de nombrar
> Injector al cargador de estos objetos .
>
> Edgar
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk

Edgar De Cleene
> Pero, le ven futuro a los Environments? Algo en contra? algun caso que lo
> dificulta?

Tener o no Enviroments promete ser una discusion similar a la de Traits en
su momento.

Solo que ahora es Napoleon el que ni quiere sentir hablar del tema


 
> Supongo que hay varios Smalltalk que lo resolvieron de otras maneras.

Justamente esto es lo que quiso dirigir James en el ESUG que te comento

>> James Foster kindly sent me a link to a video German Leiva made at ESUG
>> explaining how to use his GSOC project Environments.
>>
>> http://www.youtube.com/watch?v=n4I7fSVNX2A
>>

>
> Hasta donde se, en Squeak y Pharo se prefiere que las clases de un paquete (se
> llama asi? como se llama a un Aida, Swazoo, Seaside? se lo llama un paquete?)
> tengan un prefijo de dos letras. Es asi? Y no tienen problemas igual?

No tantos .....
> Como se hace un fileOut de todo lo que comienza con dos letras dadas, digamos
> WA, en Squeak/Pharo? (incluyendo supongo los metodos de otras clases, con
> categoria que comienza con "*WA" es asi?)

Se agrupan las clases por categoria.
Ejemplo HV

*Extensions
HV-Base
HV-Builder
HV-Canvas
HV-Canvas-Tests
HV-Examples
HV-Extras-Swiki
HV-Extras-TOCs
HV-Tests
HV-Web
HV-XHTMLCanvas
HV-XHTMLCanvas-Tests

En *Extensions van todos los metodos de clases externas al paquete,
prefijadas por * en las categorias de metodos

Ej
*HV-testing en HttpRequest *inst
*HV-SBlog-RSS en TimeStamp *class

Edgar





Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk

Angel Java Lopez
Ah! Voy entendiendo... Interesante el video, hmmm, no recuerdo si hubo
alguna charla asi en alguna Smalltalks... bien.

Edgar, me queda la duda, pero como hago un fileOut de todo lo que empieza,
por ejemplo, con WA? Hasta ahora, a lo sumo pude dar "click derecho"
fileout en alguna categoria desde el browser, pero nada mas. O sea, solo
exporto una categoria, no todo lo que empieza con WA

Hay forma de hacerlo en Squeak/Pharo?

O es algo que cada uno implementa por su cuenta? (hmmm... Monticello hara
algo de eso?)

Jeje... ya puedo serializar imagenes con varios environments, using TDD, it
was a piece of cake ;-)

Angel "Java" Lopez
@ajlopez
gh:ajlopez

2012/12/1 Edgar J. De Cleene <[hidden email]>

> **
>
>
> > Pero, le ven futuro a los Environments? Algo en contra? algun caso que lo
> > dificulta?
>
> Tener o no Enviroments promete ser una discusion similar a la de Traits en
> su momento.
>
> Solo que ahora es Napoleon el que ni quiere sentir hablar del tema
>
>
> > Supongo que hay varios Smalltalk que lo resolvieron de otras maneras.
>
> Justamente esto es lo que quiso dirigir James en el ESUG que te comento
>
> >> James Foster kindly sent me a link to a video German Leiva made at ESUG
> >> explaining how to use his GSOC project Environments.
> >>
> >> http://www.youtube.com/watch?v=n4I7fSVNX2A
>
> >>
>
> >
> > Hasta donde se, en Squeak y Pharo se prefiere que las clases de un
> paquete (se
> > llama asi? como se llama a un Aida, Swazoo, Seaside? se lo llama un
> paquete?)
> > tengan un prefijo de dos letras. Es asi? Y no tienen problemas igual?
>
> No tantos .....
> > Como se hace un fileOut de todo lo que comienza con dos letras dadas,
> digamos
> > WA, en Squeak/Pharo? (incluyendo supongo los metodos de otras clases, con
> > categoria que comienza con "*WA" es asi?)
>
> Se agrupan las clases por categoria.
> Ejemplo HV
>
> *Extensions
> HV-Base
> HV-Builder
> HV-Canvas
> HV-Canvas-Tests
> HV-Examples
> HV-Extras-Swiki
> HV-Extras-TOCs
> HV-Tests
> HV-Web
> HV-XHTMLCanvas
> HV-XHTMLCanvas-Tests
>
> En *Extensions van todos los metodos de clases externas al paquete,
> prefijadas por * en las categorias de metodos
>
> Ej
> *HV-testing en HttpRequest *inst
> *HV-SBlog-RSS en TimeStamp *class
>
> Edgar
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: Environment en AjTalk [Archivo adjunto 1]

Edgar De Cleene
> Ah! Voy entendiendo... Interesante el video, hmmm, no recuerdo si hubo alguna
> charla asi en alguna Smalltalks... bien.
>
>
> Edgar, me queda la duda, pero como hago un fileOut de todo lo que empieza, por
> ejemplo, con WA? Hasta ahora, a lo sumo pude dar "click derecho" fileout en
> alguna categoria desde el browser, pero nada mas. O sea, solo exporto una
> categoria, no todo lo que empieza con WA
>
> Hay forma de hacerlo en Squeak/Pharo?
>
> O es algo que cada uno implementa por su cuenta? (hmmm... Monticello hara algo
> de eso?)
>
> Jeje... ya puedo serializar imagenes con varios environments, using TDD, it
> was a piece of cake ;-)


Para los paquetes, existe Monticello, aunque seguramente se puede prescindir
de el.
Tengo que resucitar la exportacion de los paquetes desde el browser de
paquetes

PackagePaneBrowser openBrowser.

En Monticello haces

MCWorkingCopyBrowser open
Ahi le das al boton +Package
Y en la ventanita pones  AngelEnviroment,
De ahi , mandas a los repositorios que tengas

Te adjunto mi script que agrega mi repositorio.
Ya cree uno en Gemstone y cuando pueda me pongo a portar algo que tengo para
tener un server que copie lo que hace squeaksource, que se cae a cada rato
(la quieren matar)

Edgar