Software con descuentos!

jueves, junio 29, 2006

Algunos tips sobre manejo de gráficos en Squeak y Seaside

Una forma de mostrar gráficos (png, jpg) es leyéndolos desde el disco rígido, sin embargo, es mucho más cómodo incluirlos en algún método de nuestros objetos en forma de código fuente, de manera que los podamos tener disponibles cada vez que instalemos nuestro código en una nueva imagen.

La forma de hacerlo es la siguiente:

myMethod



x := Form fromFileNamed:'reload.png'.

xArray := x bits asArray.



^ ShoreForm

extent: 32@32

depth: 32

fromArray: xArray

offset: 0@0.


El código es muy simple y se explica por si mismo (en el ejemplo reemplazamos el logo de ShoreComponents por uno propio).

Como usamos la clase Form para esta tarea y la misma trabaja con imágenes de tipo gif, seguramente vamos a tener problemas de definición en los íconos que veamos desde Seaside, lo cual se arregla reemplazando el método asMIMEDocument de la clase Form, de la siguiente manera:

asMIMEDocument

| aStream rw |

aStream := RWBinaryOrTextStream on: String new.

rw := PNGReadWriter on: aStream.

rw nextPutImage: self.

rw close.

aStream reset.

^MIMEDocument contentType: 'image/png' content: aStream contents

Gracias a Diego por este último tip.

lunes, junio 26, 2006

MiniToDo Versión 1.1


Hace unos años, como ejercicio para el aprendizaje de Squeak y su interfaz gráfica Morphic, me puse a hacer una pequeña aplicación tipo "Lista de Tareas Pendientes".

La aplicación no tiene nada de novedoso ni de original, pero responde a aquel viejo adagio de los verdaderos programadores, que hizo posible el desarrollo de tantos y tantos productos de software: "Construirás tus propias herramientas" (además de posiblitar la diversión :).

La uso a diario tipo "bloc de notas" para suplantar el papel y como ayuda memoria, pero tengo en mente desarrollar características adicionales cuando el tiempo me lo permita.

Por lo pronto hoy he publicado algunas mejoras:
1) Se pueden "exportar" las tareas a un archivo externo, para luego importarlas en otra imagen Squeak.
2) Se puede generar un archivo html con la lista de tareas, para ir a la reunión con el "jefe" o los clientes.

MiniToDo se puede instalar directamente desde SqueakMap o desde el repositorio SqueakSource.

MiniToDo es completamente libre, ya que está bajo la licencia MIT.

miércoles, junio 14, 2006

¿Por qué Smalltalk?

Recientemente me uní a la OISV y recorriendo el foro, una persona preguntaba por opciones en herramientas de desarrollo ya que no está tan seguro de seguir con la que usa actualmente.

Las respuestas que había eran cortas y variadas, pero fundamentalmente cortas, concretas, así que no pude resistir y traté de escribir en pocas líneas el porque de usar Smalltalk.

Palabras más, palabras menos, lo que escribí es lo siguiente:

Yo uso una herramienta "marginal" (no es un lenguaje, sino mucho más que un lenguaje) llamado Smalltalk.

Smalltalk existe desde hace mucho tiempo y en varios sabores y (para mí al menos) tiene dos ventajas principales:

1) Smalltalk me pone fuera de la rueda comercial de las grandes compañías que fabrican y venden herramientas de desarrollo (Microsoft, Sun, IBM, etc) y le da valor a mis productos y sistemas y no a la herramienta con la que están desarrollados.
Es una forma de no dejarse "empujar".

2) Smalltalk, siendo tecnología de objetos pura (no solamente "orientado a objetos") es realmente poderoso y flexible para hacer cambios y mantener los sistemas en cualquier momento.

Actualmente uso dos Smalltalks:

a) Squeak: Es un Smalltalk open source (con el cual también se puede desarrollar "closed"), muy adecuado para todo tipo de desarrollos, pero ahora muy aggiornado al desarrollo web incluyendo Ajax y todas las cosas del "estado del arte" de la web 2.0.

b) Dolphin Smalltalk: Para desarrollos para ambientes Windows (aunque las aplicaciones Dolphin también corren en Wine bajo Linux).

No se si será la forma más concreta de definir porque usar Smalltalk, pero son los dos argumentos que considero de mayor peso. No obstante cualquier opinión al respecto me interesa.