[Cuis] DateAndTime & friends

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

[Cuis] DateAndTime & friends

garduino
Hola Gente:

Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte
de web.

Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
8:25:40 pm

En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).

La pregunta es si hay alguna forma recomendada de implementar TimeStamp de
manera que haga lo que hace en Pharo para hacer esa capa de compatibilidad
con Pharo para poder portar (y luego mantener actualizados) paquetes de
Pharo.

Yo estaba pensando en hacer algún método #asTimeStamp o similar.

Bueno, es todo, gracias y saludos.

--
============================================
Germán S. Arduino  <gsa @ arsol.net>   Twitter: garduino
Arduino Software  http://www.arduinosoftware.com
PasswordsPro  http://www.passwordspro.com
greensecure.blogspot.com germanarduino.blogpost.com
============================================
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

Edgar De Cleene
> Hola Gente:
>
>
> Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte de
> web.
>
> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no está.
> En general usan TimeStamp now que devuelve algo así:  5 May 2012 8:25:40 pm
>
> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
> aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>
> La pregunta es si hay alguna forma recomendada de implementar TimeStamp de
> manera que haga lo que hace en Pharo para hacer esa capa de compatibilidad con
> Pharo para poder portar (y luego mantener actualizados) paquetes de Pharo.
>
> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>
> Bueno, es todo, gracias y saludos.

En mi engendro denominado Cuis3.1r.11, que deriva del Cuis reducido, para
tener WebClient y HV2 con este script de carga

| loader |
    loader _ CodeLoader new.
    loader baseURL:'http://www.squeaksource.com/Ladrillos/'.
    loader installLastMonticelloFor: #('DynamicBindings'  'KomServices'
'KomHttpServer' 'HTML' 'HV' );installSourceFiles.

Necesite TimeStamp  (que saque de Squeak)

Abriendo la imagen averiguo:

TimeStamp othersClassList a Set(#Time #ReadStream #Character #String
#DateAndTime #Date #Array)

O sea tendrias que tener esas clases en Cuis y tratar de que la cadena de
dependencias no se te haga gigantesca.

Para importar código de otro fork (Squeak, Pharo)

1. Todo a manopla. Tener las dos imagenes lado a lado, A cada Dnu importar
lo que se necesite.

2. Via TCP , estrategia madre - hija. Tener las dos imagenes lado a lado, A
cada Dnu importar lo que se necesite.

3. Via DNU recursivo desde el repositorio de clases. Asi es la estrategia
del SqueakLight, que habria que adaptar a Cuis.
El repositorio para Pharo 1.4 ya esta creado, hablamos de esto por privada y
me parece haber mandado algo aqui.

No creo que nada de esto le guste a Juan, porque el Cuis terminaria
irremediablemente sucio.

Otro tema relacionado es la importación de objetos.
Tambien mande aqui en su momento como hacerlo via ReferenceStreams.

Los objetos sencillos se importan sin problemas.
Asi pude meter los casi 14 Mb de los objetos del swiki provenientes de
Squeak (te acordas ?)

Estoy en la compu hasta las 9 , si alguien quiere conectarse a Skype en el
chat público Bar SqueakRos o privado.

Edgar




Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

garduino
Hola Edgar!

Hoy dormí hasta más tarde....jejeje, estaba fusilado.....pero como dijiste
que sab y dom no te ibas a levantar temprano, yo tampoco aparecí :)

Si, comprendo lo que decís, yo estoy también trabajando con las dos
imágenes abiertas, pero apuntaba a que sólo traer las clases con toda su
cadena de dependencias es medio complicado y, como vos decís, ensucia la
imagen.

La idea (algo que también hablamos con Juan) es que para cada paquete, por
ejemplo Cuis-Sport haya un paquete Cuis-Sport-Compatibility-Layer (o algo
así) que incorpore todo lo que el paquete original necesita para funcionar
en Cuis.

De esta manera uno queda protegido antes los cambios, cuando aparece una
nueva versión de Sport, uno primero instala (o adapta según sea necesario)
el compatibility layer y después instala el nuevo Sport sin problemas y SIN
ensuciar la imagen original.

Por eso con lo de TimeStamp, yo preguntaba si no hay alguna forma (a lo
mejor ya está y no la vi) de que exista un sólo método por ahí (en una
categoría *Cuis-Sport-CLayer) que devuelva lo mismo que TimeStamp now (lo
único que vi devuelve un array de dos elementos, Date y Time).

Estoy dando vueltas con estas cosas porque quiero meter algunas cosas de
web en Cuis, Swazoo e Iliad para empezar.

Bueno, es todo, saludos!


El 6 de mayo de 2012 07:32, Edgar J. De Cleene <[hidden email]>escribió:

> **
>
>
> > Hola Gente:
> >
> >
> > Estoy tratando de portar paquetes q Cuis, en principio algunos de
> soporte de
> > web.
> >
> > Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
> está.
> > En general usan TimeStamp now que devuelve algo así: 5 May 2012 8:25:40
> pm
> >
> > En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
> > aproximación es Date dateAndTimeNow que devuelve un array de dos
> elementos,
> > compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
> >
> > La pregunta es si hay alguna forma recomendada de implementar TimeStamp
> de
> > manera que haga lo que hace en Pharo para hacer esa capa de
> compatibilidad con
> > Pharo para poder portar (y luego mantener actualizados) paquetes de
> Pharo.
> >
> > Yo estaba pensando en hacer algún método #asTimeStamp o similar.
> >
> > Bueno, es todo, gracias y saludos.
>
> En mi engendro denominado Cuis3.1r.11, que deriva del Cuis reducido, para
> tener WebClient y HV2 con este script de carga
>
> | loader |
> loader _ CodeLoader new.
> loader baseURL:'http://www.squeaksource.com/Ladrillos/'.
> loader installLastMonticelloFor: #('DynamicBindings' 'KomServices'
> 'KomHttpServer' 'HTML' 'HV' );installSourceFiles.
>
> Necesite TimeStamp (que saque de Squeak)
>
> Abriendo la imagen averiguo:
>
> TimeStamp othersClassList a Set(#Time #ReadStream #Character #String
> #DateAndTime #Date #Array)
>
> O sea tendrias que tener esas clases en Cuis y tratar de que la cadena de
> dependencias no se te haga gigantesca.
>
> Para importar código de otro fork (Squeak, Pharo)
>
> 1. Todo a manopla. Tener las dos imagenes lado a lado, A cada Dnu importar
> lo que se necesite.
>
> 2. Via TCP , estrategia madre - hija. Tener las dos imagenes lado a lado, A
> cada Dnu importar lo que se necesite.
>
> 3. Via DNU recursivo desde el repositorio de clases. Asi es la estrategia
> del SqueakLight, que habria que adaptar a Cuis.
> El repositorio para Pharo 1.4 ya esta creado, hablamos de esto por privada
> y
> me parece haber mandado algo aqui.
>
> No creo que nada de esto le guste a Juan, porque el Cuis terminaria
> irremediablemente sucio.
>
> Otro tema relacionado es la importación de objetos.
> Tambien mande aqui en su momento como hacerlo via ReferenceStreams.
>
> Los objetos sencillos se importan sin problemas.
> Asi pude meter los casi 14 Mb de los objetos del swiki provenientes de
> Squeak (te acordas ?)
>
> Estoy en la compu hasta las 9 , si alguien quiere conectarse a Skype en el
> chat público Bar SqueakRos o privado.
>
> Edgar
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

hernan.wilkinson
In reply to this post by garduino
Que haces German,
 yo uso mas o menos esta regla cuando se trata de temas de compatibilidad
entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)

1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
ClassX de B => extender ClassX de B con M (no es tu caso)
2) Dado ClassX en A pero no en B, entonces:
     i) Lo que estoy migrando es mio? Si es asi, uso una capa de
abstraccion que modela las diferencias entre los Smalltalks y modifico mi
codigo para que la use (ver mas abajo)
     ii) Lo que estoy migrando no es mio o no lo quiero modificar, entonces
creo ClassX en B con el protocolo necesario para que funcione lo que migro.

Respecto de la capa de abstraccion, lo que hago es tener una clase
SmalltalkImplementation con subclases para cada implementacion y luego por
medio de metacello (o lo que sea) se carga el conjunto correcto dependiendo
del ambiente y se inicializa la var CurrentSmalltalkImplementation con la
instancia de la subclase correcta. Luego en cualquier lugar envio mensajes
a dicho objeto. Por ejemplo:

SmalltalkImplementation
   PharoImplementation
   GemStoneImplementation

PharoImplementation>>reducedConflictBag
  ^Bag

GemStoneImplementation>>reducecConflictBag
  ^RcBag

Cuando lo uso, es simplemente:

   aBag := CurrentSmalltalkImplementation reducedConflictBag new.

Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase de
SmalltalkImplementation

En tu caso, me parece que conviene hacer 2.ii

Espero sirva
Hernan.


2012/5/5 Germán Arduino <[hidden email]>

> **
>
>
> Hola Gente:
>
> Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte
> de web.
>
> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
> 8:25:40 pm
>
> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
> aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>
> La pregunta es si hay alguna forma recomendada de implementar TimeStamp de
> manera que haga lo que hace en Pharo para hacer esa capa de compatibilidad
> con Pharo para poder portar (y luego mantener actualizados) paquetes de
> Pharo.
>
> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>
> Bueno, es todo, gracias y saludos.
>
> --
> ============================================
> Germán S. Arduino  <gsa @ arsol.net>   Twitter: garduino
> Arduino Software  http://www.arduinosoftware.com
> PasswordsPro  http://www.passwordspro.com
> greensecure.blogspot.com germanarduino.blogpost.com
> ============================================
>
>  
>



--
*Hernán Wilkinson
Agile Software Development, Teaching & Coaching*
*Phone: +54 - 011 - 4311 - 8404**
Mobile: +54 - 911 - 4470 - 7207
email: [hidden email]
site: http://www.10Pines.com <http://www.10pines.com/>*
Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

Guillermo Sapaya
Hola gente,
yo en mi caso hago exactamente el punto 2 que menciona Hernán. Va muy bien
de esa manera! Y ese pattern lo uso no sólo para polimorfismo entre
distintos dialectos Smalltalk, sino que lo aplico en distintas situaciones,
por ejemplo, entre distintas implementaciones de nuestros productos en
distintos cliuentes, también en el framework de mapeo a relacional tengo:

ORPDialect
    ORPOracleDialect
    ORPPostgreSQLDialect
    ORPSQLServerDialect
    ....

Saludos,
Guillermo


El 8 de mayo de 2012 08:50, Hernan Wilkinson
<[hidden email]>escribió:

> **
>
>
> Que haces German,
>  yo uso mas o menos esta regla cuando se trata de temas de compatibilidad
> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
>
> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
> ClassX de B => extender ClassX de B con M (no es tu caso)
> 2) Dado ClassX en A pero no en B, entonces:
>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de
> abstraccion que modela las diferencias entre los Smalltalks y modifico mi
> codigo para que la use (ver mas abajo)
>      ii) Lo que estoy migrando no es mio o no lo quiero modificar,
> entonces creo ClassX en B con el protocolo necesario para que funcione lo
> que migro.
>
> Respecto de la capa de abstraccion, lo que hago es tener una clase
> SmalltalkImplementation con subclases para cada implementacion y luego por
> medio de metacello (o lo que sea) se carga el conjunto correcto dependiendo
> del ambiente y se inicializa la var CurrentSmalltalkImplementation con la
> instancia de la subclase correcta. Luego en cualquier lugar envio mensajes
> a dicho objeto. Por ejemplo:
>
> SmalltalkImplementation
>    PharoImplementation
>    GemStoneImplementation
>
> PharoImplementation>>reducedConflictBag
>   ^Bag
>
> GemStoneImplementation>>reducecConflictBag
>   ^RcBag
>
> Cuando lo uso, es simplemente:
>
>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
>
> Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase de
> SmalltalkImplementation
>
> En tu caso, me parece que conviene hacer 2.ii
>
> Espero sirva
> Hernan.
>
>
> 2012/5/5 Germán Arduino <[hidden email]>
>
>> **
>>
>>
>> Hola Gente:
>>
>> Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte
>> de web.
>>
>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
>> 8:25:40 pm
>>
>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
>> aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>>
>> La pregunta es si hay alguna forma recomendada de implementar TimeStamp
>> de manera que haga lo que hace en Pharo para hacer esa capa de
>> compatibilidad con Pharo para poder portar (y luego mantener actualizados)
>> paquetes de Pharo.
>>
>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>>
>> Bueno, es todo, gracias y saludos.
>>
>> --
>> ============================================
>> Germán S. Arduino  <gsa @ arsol.net>   Twitter: garduino
>> Arduino Software  http://www.arduinosoftware.com
>> PasswordsPro  http://www.passwordspro.com
>> greensecure.blogspot.com germanarduino.blogpost.com
>> ============================================
>>
>>
>
>
> --
> *Hernán Wilkinson
> Agile Software Development, Teaching & Coaching*
> *Phone: +54 - 011 - 4311 - 8404**
> Mobile: +54 - 911 - 4470 - 7207
> email: [hidden email]
> site: http://www.10Pines.com <http://www.10pines.com/>*
> Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

Edgar De Cleene



El 5/8/12 9:40 AM, "Guillermo Sapaya" <[hidden email]> escribió:

>  
>  
>  
>    
>
> Hola gente,
> yo en mi caso hago exactamente el punto 2 que menciona Hernán. Va muy bien de
> esa manera! Y ese pattern lo uso no sólo para polimorfismo entre distintos
> dialectos Smalltalk, sino que lo aplico en distintas situaciones, por ejemplo,
> entre distintas implementaciones de nuestros productos en distintos cliuentes,
> también en el framework de mapeo a relacional tengo:
>
> ORPDialect
>     ORPOracleDialect
>     ORPPostgreSQLDialect
>     ORPSQLServerDialect
>     ....
>
> Saludos,
> Guillermo
>
>
> El 8 de mayo de 2012 08:50, Hernan Wilkinson <[hidden email]>
> escribió:
>>  
>>  
>>  
>>    
>>
>> Que haces German,
>>
>>  yo uso mas o menos esta regla cuando se trata de temas de compatibilidad
>> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
>> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
>>
>> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en ClassX
>> de B => extender ClassX de B con M (no es tu caso)
>> 2) Dado ClassX en A pero no en B, entonces:
>>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de abstraccion
>> que modela las diferencias entre los Smalltalks y modifico mi codigo para que
>> la use (ver mas abajo)
>>      ii) Lo que estoy migrando no es mio o no lo quiero modificar, entonces
>> creo ClassX en B con el protocolo necesario para que funcione lo que migro.
>>
>> Respecto de la capa de abstraccion, lo que hago es tener una clase
>> SmalltalkImplementation con subclases para cada implementacion y luego por
>> medio de metacello (o lo que sea) se carga el conjunto correcto dependiendo
>> del ambiente y se inicializa la var CurrentSmalltalkImplementation con la
>> instancia de la subclase correcta. Luego en cualquier lugar envio mensajes a
>> dicho objeto. Por ejemplo:
>>
>> SmalltalkImplementation
>>    PharoImplementation
>>    GemStoneImplementation
>>
>> PharoImplementation>>reducedConflictBag
>>   ^Bag
>>
>> GemStoneImplementation>>reducecConflictBag
>>   ^RcBag
>>
>> Cuando lo uso, es simplemente:
>>
>>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
>>
>> Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase de
>> SmalltalkImplementation
>>
>> En tu caso, me parece que conviene hacer 2.ii
>>
>> Espero sirva
>> Hernan.
>>
>>
>> 2012/5/5 Germán Arduino <[hidden email]>
>>>  
>>>  
>>>  
>>>    
>>>
>>> Hola Gente:
>>>
>>>
>>> Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte de
>>> web. 
>>>
>>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
>>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
>>> 8:25:40 pm
>>>
>>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
>>> aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
>>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>>>
>>> La pregunta es si hay alguna forma recomendada de implementar TimeStamp de
>>> manera que haga lo que hace en Pharo para hacer esa capa de compatibilidad
>>> con Pharo para poder portar (y luego mantener actualizados) paquetes de
>>> Pharo.
>>>
>>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>>>
>>> Bueno, es todo, gracias y saludos.


Guillermo:

Me olvide de darte la bienvenida cuando me llego la notificación de tu
suscripción.
Otro gran aporte al Bar.

Alumnos:
Atentísimos a los mails de Guillermo , no solo sabe sino que tal vez en un
futuro tenga trabajo para ustedes.

Edgar


Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

garduino
Hola Hernán, Guillermo, Edgar, gente de la lista!

La verdad que es reconfortante que este lugar cálido que creó Edgar para
compartir un poco de todo, Smalltalk y la vida misma, tenga más
participantes y movimiento. Sin excluir a las otras listas, por supuesto.

Bienvenidos los aportes de todos! y gracias a todos!

Yendo a los comentarios de Hernán y Guillermo:

El punto 1 ocurre varias veces, hasta ahora con cosas muy simples como el
método #alphabet de la clase Character y similares, hasta ahora solo lo
agregué en el paquete perteneciendo a la categoría *Paquete ya que Cuis lo
identifica como parte del paquete (PackageInfo).

Me gustó la idea de 2.i, para tener muy en cuenta, me parece piola!

Respecto de 2.ii) en eso estuve dando vueltas, exactamente así, pero con la
salvedad de crear el protocolo mínimo indispensable, pero en algunos casos
(como las familias de Date & Time) me encuentro con que el mínimo es
realmente importante, por eso se me ocurrió lo que mencioné hacer algún
"engendro" como diría uno que yo sé, que haga eso solito, pero si.....es
más sucio.....

Gracias gente por las ideas y aportes!

Germán.





El 8 de mayo de 2012 16:07, Edgar De Cleene <[hidden email]>escribió:

> **
>
>
>
>
> El 5/8/12 9:40 AM, "Guillermo Sapaya" <[hidden email]> escribió:
>
>
> >
> >
> >
> >
> >
> > Hola gente,
> > yo en mi caso hago exactamente el punto 2 que menciona Hernán. Va muy
> bien de
> > esa manera! Y ese pattern lo uso no sólo para polimorfismo entre
> distintos
> > dialectos Smalltalk, sino que lo aplico en distintas situaciones, por
> ejemplo,
> > entre distintas implementaciones de nuestros productos en distintos
> cliuentes,
> > también en el framework de mapeo a relacional tengo:
> >
> > ORPDialect
> >     ORPOracleDialect
> >     ORPPostgreSQLDialect
> >     ORPSQLServerDialect
> >     ....
> >
> > Saludos,
> > Guillermo
> >
> >
> > El 8 de mayo de 2012 08:50, Hernan Wilkinson <[hidden email]
> >
> > escribió:
> >>
> >>
> >>
> >>
> >>
> >> Que haces German,
> >>
> >>  yo uso mas o menos esta regla cuando se trata de temas de
> compatibilidad
> >> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
> >> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
> >>
> >> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
> ClassX
> >> de B => extender ClassX de B con M (no es tu caso)
> >> 2) Dado ClassX en A pero no en B, entonces:
> >>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de
> abstraccion
> >> que modela las diferencias entre los Smalltalks y modifico mi codigo
> para que
> >> la use (ver mas abajo)
> >>      ii) Lo que estoy migrando no es mio o no lo quiero modificar,
> entonces
> >> creo ClassX en B con el protocolo necesario para que funcione lo que
> migro.
> >>
> >> Respecto de la capa de abstraccion, lo que hago es tener una clase
> >> SmalltalkImplementation con subclases para cada implementacion y luego
> por
> >> medio de metacello (o lo que sea) se carga el conjunto correcto
> dependiendo
> >> del ambiente y se inicializa la var CurrentSmalltalkImplementation con
> la
> >> instancia de la subclase correcta. Luego en cualquier lugar envio
> mensajes a
> >> dicho objeto. Por ejemplo:
> >>
> >> SmalltalkImplementation
> >>    PharoImplementation
> >>    GemStoneImplementation
> >>
> >> PharoImplementation>>reducedConflictBag
> >>   ^Bag
> >>
> >> GemStoneImplementation>>reducecConflictBag
> >>   ^RcBag
> >>
> >> Cuando lo uso, es simplemente:
> >>
> >>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
> >>
> >> Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase
> de
> >> SmalltalkImplementation
> >>
> >> En tu caso, me parece que conviene hacer 2.ii
> >>
> >> Espero sirva
> >> Hernan.
> >>
> >>
> >> 2012/5/5 Germán Arduino <[hidden email]>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> Hola Gente:
> >>>
> >>>
> >>> Estoy tratando de portar paquetes q Cuis, en principio algunos de
> soporte de
> >>> web.
> >>>
> >>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis
> no
> >>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
> >>> 8:25:40 pm
> >>>
> >>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
> >>> aproximación es Date dateAndTimeNow que devuelve un array de dos
> elementos,
> >>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
> >>>
> >>> La pregunta es si hay alguna forma recomendada de implementar
> TimeStamp de
> >>> manera que haga lo que hace en Pharo para hacer esa capa de
> compatibilidad
> >>> con Pharo para poder portar (y luego mantener actualizados) paquetes de
> >>> Pharo.
> >>>
> >>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
> >>>
> >>> Bueno, es todo, gracias y saludos.
>
> Guillermo:
>
> Me olvide de darte la bienvenida cuando me llego la notificación de tu
> suscripción.
> Otro gran aporte al Bar.
>
> Alumnos:
> Atentísimos a los mails de Guillermo , no solo sabe sino que tal vez en un
> futuro tenga trabajo para ustedes.
>
> Edgar
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

Guillermo Sapaya
In reply to this post by Edgar De Cleene
El 8 de mayo de 2012 16:07, Edgar De Cleene <[hidden email]> escribió:

Guillermo:

Me olvide de darte la bienvenida cuando me llego la notificación de tu
suscripción.
Otro gran aporte al Bar.

Gracias Edgar!
Estuve husmeando los mails y se ve que han formado un excelente grupo!
Felicitaciones!
En todo lo que se pueda aportar o dar una mano cuenten conmigo!

Saludos,
Guillermo


El 8 de mayo de 2012 16:07, Edgar De Cleene <[hidden email]>escribió:

> **
>
>
>
>
> El 5/8/12 9:40 AM, "Guillermo Sapaya" <[hidden email]> escribió:
>
> >
> >
> >
> >
> >
> > Hola gente,
> > yo en mi caso hago exactamente el punto 2 que menciona Hernán. Va muy
> bien de
> > esa manera! Y ese pattern lo uso no sólo para polimorfismo entre
> distintos
> > dialectos Smalltalk, sino que lo aplico en distintas situaciones, por
> ejemplo,
> > entre distintas implementaciones de nuestros productos en distintos
> cliuentes,
> > también en el framework de mapeo a relacional tengo:
> >
> > ORPDialect
> >     ORPOracleDialect
> >     ORPPostgreSQLDialect
> >     ORPSQLServerDialect
> >     ....
> >
> > Saludos,
> > Guillermo
> >
> >
> > El 8 de mayo de 2012 08:50, Hernan Wilkinson <[hidden email]
> >
> > escribió:
> >>
> >>
> >>
> >>
> >>
> >> Que haces German,
> >>
> >>  yo uso mas o menos esta regla cuando se trata de temas de
> compatibilidad
> >> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
> >> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
> >>
> >> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
> ClassX
> >> de B => extender ClassX de B con M (no es tu caso)
> >> 2) Dado ClassX en A pero no en B, entonces:
> >>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de
> abstraccion
> >> que modela las diferencias entre los Smalltalks y modifico mi codigo
> para que
> >> la use (ver mas abajo)
> >>      ii) Lo que estoy migrando no es mio o no lo quiero modificar,
> entonces
> >> creo ClassX en B con el protocolo necesario para que funcione lo que
> migro.
> >>
> >> Respecto de la capa de abstraccion, lo que hago es tener una clase
> >> SmalltalkImplementation con subclases para cada implementacion y luego
> por
> >> medio de metacello (o lo que sea) se carga el conjunto correcto
> dependiendo
> >> del ambiente y se inicializa la var CurrentSmalltalkImplementation con
> la
> >> instancia de la subclase correcta. Luego en cualquier lugar envio
> mensajes a
> >> dicho objeto. Por ejemplo:
> >>
> >> SmalltalkImplementation
> >>    PharoImplementation
> >>    GemStoneImplementation
> >>
> >> PharoImplementation>>reducedConflictBag
> >>   ^Bag
> >>
> >> GemStoneImplementation>>reducecConflictBag
> >>   ^RcBag
> >>
> >> Cuando lo uso, es simplemente:
> >>
> >>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
> >>
> >> Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase
> de
> >> SmalltalkImplementation
> >>
> >> En tu caso, me parece que conviene hacer 2.ii
> >>
> >> Espero sirva
> >> Hernan.
> >>
> >>
> >> 2012/5/5 Germán Arduino <[hidden email]>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> Hola Gente:
> >>>
> >>>
> >>> Estoy tratando de portar paquetes q Cuis, en principio algunos de
> soporte de
> >>> web.
> >>>
> >>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis
> no
> >>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
> >>> 8:25:40 pm
> >>>
> >>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
> >>> aproximación es Date dateAndTimeNow que devuelve un array de dos
> elementos,
> >>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
> >>>
> >>> La pregunta es si hay alguna forma recomendada de implementar
> TimeStamp de
> >>> manera que haga lo que hace en Pharo para hacer esa capa de
> compatibilidad
> >>> con Pharo para poder portar (y luego mantener actualizados) paquetes de
> >>> Pharo.
> >>>
> >>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
> >>>
> >>> Bueno, es todo, gracias y saludos.
>
> Guillermo:
>
> Me olvide de darte la bienvenida cuando me llego la notificación de tu
> suscripción.
> Otro gran aporte al Bar.
>
> Alumnos:
> Atentísimos a los mails de Guillermo , no solo sabe sino que tal vez en un
> futuro tenga trabajo para ustedes.
>
> Edgar
>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

garduino
Hola Guillermo!

Sos (vos y todos los que quieran sumarse) más que bienvenidos al Bar!

Y recuerden que se puede hablar de cualquier cosa, de lo que a cada uno le
interese........

Ah y una cosa importante, estamos usando (gracias Juan!) esta lista como
lista de Cuis en español!

Saludos.


El 8 de mayo de 2012 20:44, Guillermo Sapaya <[hidden email]> escribió:

> **
>
>
> El 8 de mayo de 2012 16:07, Edgar De Cleene <[hidden email]> escribió:
>
> Guillermo:
>
> Me olvide de darte la bienvenida cuando me llego la notificación de tu
> suscripción.
> Otro gran aporte al Bar.
>
> Gracias Edgar!
> Estuve husmeando los mails y se ve que han formado un excelente grupo!
> Felicitaciones!
> En todo lo que se pueda aportar o dar una mano cuenten conmigo!
>
> Saludos,
> Guillermo
>
>
> El 8 de mayo de 2012 16:07, Edgar De Cleene <[hidden email]>escribió:
>
>> **
>>
>>
>>
>>
>> El 5/8/12 9:40 AM, "Guillermo Sapaya" <[hidden email]> escribió:
>>
>> >
>> >
>> >
>> >
>> >
>> > Hola gente,
>> > yo en mi caso hago exactamente el punto 2 que menciona Hernán. Va muy
>> bien de
>> > esa manera! Y ese pattern lo uso no sólo para polimorfismo entre
>> distintos
>> > dialectos Smalltalk, sino que lo aplico en distintas situaciones, por
>> ejemplo,
>> > entre distintas implementaciones de nuestros productos en distintos
>> cliuentes,
>> > también en el framework de mapeo a relacional tengo:
>> >
>> > ORPDialect
>> >     ORPOracleDialect
>> >     ORPPostgreSQLDialect
>> >     ORPSQLServerDialect
>> >     ....
>> >
>> > Saludos,
>> > Guillermo
>> >
>> >
>> > El 8 de mayo de 2012 08:50, Hernan Wilkinson <
>> [hidden email]>
>> > escribió:
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Que haces German,
>> >>
>> >>  yo uso mas o menos esta regla cuando se trata de temas de
>> compatibilidad
>> >> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
>> >> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
>> >>
>> >> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
>> ClassX
>> >> de B => extender ClassX de B con M (no es tu caso)
>> >> 2) Dado ClassX en A pero no en B, entonces:
>> >>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de
>> abstraccion
>> >> que modela las diferencias entre los Smalltalks y modifico mi codigo
>> para que
>> >> la use (ver mas abajo)
>> >>      ii) Lo que estoy migrando no es mio o no lo quiero modificar,
>> entonces
>> >> creo ClassX en B con el protocolo necesario para que funcione lo que
>> migro.
>> >>
>> >> Respecto de la capa de abstraccion, lo que hago es tener una clase
>> >> SmalltalkImplementation con subclases para cada implementacion y luego
>> por
>> >> medio de metacello (o lo que sea) se carga el conjunto correcto
>> dependiendo
>> >> del ambiente y se inicializa la var CurrentSmalltalkImplementation con
>> la
>> >> instancia de la subclase correcta. Luego en cualquier lugar envio
>> mensajes a
>> >> dicho objeto. Por ejemplo:
>> >>
>> >> SmalltalkImplementation
>> >>    PharoImplementation
>> >>    GemStoneImplementation
>> >>
>> >> PharoImplementation>>reducedConflictBag
>> >>   ^Bag
>> >>
>> >> GemStoneImplementation>>reducecConflictBag
>> >>   ^RcBag
>> >>
>> >> Cuando lo uso, es simplemente:
>> >>
>> >>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
>> >>
>> >> Donde CurrentSmalltlalkImplementation sera instancia de alguna
>> subclase de
>> >> SmalltalkImplementation
>> >>
>> >> En tu caso, me parece que conviene hacer 2.ii
>> >>
>> >> Espero sirva
>> >> Hernan.
>> >>
>> >>
>> >> 2012/5/5 Germán Arduino <[hidden email]>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> Hola Gente:
>> >>>
>> >>>
>> >>> Estoy tratando de portar paquetes q Cuis, en principio algunos de
>> soporte de
>> >>> web.
>> >>>
>> >>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis
>> no
>> >>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
>> >>> 8:25:40 pm
>> >>>
>> >>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
>> >>> aproximación es Date dateAndTimeNow que devuelve un array de dos
>> elementos,
>> >>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>> >>>
>> >>> La pregunta es si hay alguna forma recomendada de implementar
>> TimeStamp de
>> >>> manera que haga lo que hace en Pharo para hacer esa capa de
>> compatibilidad
>> >>> con Pharo para poder portar (y luego mantener actualizados) paquetes
>> de
>> >>> Pharo.
>> >>>
>> >>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>> >>>
>> >>> Bueno, es todo, gracias y saludos.
>>
>> Guillermo:
>>
>> Me olvide de darte la bienvenida cuando me llego la notificación de tu
>> suscripción.
>> Otro gran aporte al Bar.
>>
>> Alumnos:
>> Atentísimos a los mails de Guillermo , no solo sabe sino que tal vez en un
>> futuro tenga trabajo para ustedes.
>>
>> Edgar
>>
>>
>  
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

hernan.wilkinson
In reply to this post by hernan.wilkinson
otra idea que me olvide de comentar...
Si ClassX en A en polimorfica con ClassY en B, entonces creo una variable
global en B que sea ClassX que referencie a ClassY

Por ejemplo, si DateTime es polimorfica para lo que se necesita con
Timespan, entonces en cuis crearia una variable globar Timespan que
referencie a DateTime y listo... Luego lo que no es polimorfico lo
agregaria como extensión de DateTime

2012/5/8 Hernan Wilkinson <[hidden email]>

> Que haces German,
>  yo uso mas o menos esta regla cuando se trata de temas de compatibilidad
> entre smalltalks. Sea A imagen de Smalltalk "original" y B imagen de
> Smalltalk al que quiero pasar cosas de A (o sea, A = Pharo, B = Cuis)
>
> 1) Dado ClassX en A y B, y existe mensaje M en ClassX de A pero no en
> ClassX de B => extender ClassX de B con M (no es tu caso)
> 2) Dado ClassX en A pero no en B, entonces:
>      i) Lo que estoy migrando es mio? Si es asi, uso una capa de
> abstraccion que modela las diferencias entre los Smalltalks y modifico mi
> codigo para que la use (ver mas abajo)
>      ii) Lo que estoy migrando no es mio o no lo quiero modificar,
> entonces creo ClassX en B con el protocolo necesario para que funcione lo
> que migro.
>
> Respecto de la capa de abstraccion, lo que hago es tener una clase
> SmalltalkImplementation con subclases para cada implementacion y luego por
> medio de metacello (o lo que sea) se carga el conjunto correcto dependiendo
> del ambiente y se inicializa la var CurrentSmalltalkImplementation con la
> instancia de la subclase correcta. Luego en cualquier lugar envio mensajes
> a dicho objeto. Por ejemplo:
>
> SmalltalkImplementation
>    PharoImplementation
>    GemStoneImplementation
>
> PharoImplementation>>reducedConflictBag
>   ^Bag
>
> GemStoneImplementation>>reducecConflictBag
>   ^RcBag
>
> Cuando lo uso, es simplemente:
>
>    aBag := CurrentSmalltalkImplementation reducedConflictBag new.
>
> Donde CurrentSmalltlalkImplementation sera instancia de alguna subclase de
> SmalltalkImplementation
>
> En tu caso, me parece que conviene hacer 2.ii
>
> Espero sirva
> Hernan.
>
>
> 2012/5/5 Germán Arduino <[hidden email]>
>
>> **
>>
>>
>> Hola Gente:
>>
>> Estoy tratando de portar paquetes q Cuis, en principio algunos de soporte
>> de web.
>>
>> Veo que muchos de ellos usan la clase TimeStamp de Pharo, que en Cuis no
>> está. En general usan TimeStamp now que devuelve algo así:  5 May 2012
>> 8:25:40 pm
>>
>> En Cuis tenemos DateAndTime por ejemplo, y también Date y Time. Una
>> aproximación es Date dateAndTimeNow que devuelve un array de dos elementos,
>> compuesto por Date y Time, algo así: #(5 May 2012 8:25:40 pm).
>>
>> La pregunta es si hay alguna forma recomendada de implementar TimeStamp
>> de manera que haga lo que hace en Pharo para hacer esa capa de
>> compatibilidad con Pharo para poder portar (y luego mantener actualizados)
>> paquetes de Pharo.
>>
>> Yo estaba pensando en hacer algún método #asTimeStamp o similar.
>>
>> Bueno, es todo, gracias y saludos.
>>
>> --
>> ============================================
>> Germán S. Arduino  <gsa @ arsol.net>   Twitter: garduino
>> Arduino Software  http://www.arduinosoftware.com
>> PasswordsPro  http://www.passwordspro.com
>> greensecure.blogspot.com germanarduino.blogpost.com
>> ============================================
>>
>>  
>>
>
>
>
> --
> *Hernán Wilkinson
> Agile Software Development, Teaching & Coaching*
> *Phone: +54 - 011 - 4311 - 8404**
> Mobile: +54 - 911 - 4470 - 7207
> email: [hidden email]
> site: http://www.10Pines.com <http://www.10pines.com/>*
> Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina
>
>


--
*Hernán Wilkinson
Agile Software Development, Teaching & Coaching*
*Phone: +54 - 011 - 4311 - 8404**
Mobile: +54 - 911 - 4470 - 7207
email: [hidden email]
site: http://www.10Pines.com <http://www.10pines.com/>*
Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

garduino
Me gustó esta, jeje, no se me había ocurrido.

Gracias!


El 11 de mayo de 2012 15:05, Hernan Wilkinson
<[hidden email]>escribió:

> **
>
>
> otra idea que me olvide de comentar...
> Si ClassX en A en polimorfica con ClassY en B, entonces creo una variable
> global en B que sea ClassX que referencie a ClassY
>
> Por ejemplo, si DateTime es polimorfica para lo que se necesita con
> Timespan, entonces en cuis crearia una variable globar Timespan que
> referencie a DateTime y listo... Luego lo que no es polimorfico lo
> agregaria como extensión de DateTime
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [Cuis] DateAndTime & friends

Edgar De Cleene
In reply to this post by hernan.wilkinson
> otra idea que me olvide de comentar...
>
> Si ClassX en A en polimorfica con ClassY en B, entonces creo una variable
> global en B que sea ClassX que referencie a ClassY
>
> Por ejemplo, si DateTime es polimorfica para lo que se necesita con Timespan,
> entonces en cuis crearia una variable globar Timespan que referencie a
> DateTime y listo... Luego lo que no es polimorfico lo agregaria como extensión
> de DateTime

Simple y eficiente, tampoco se me habia ocurrido.
Edgar