22 de
Diciembre de
2007,
a las 00:43 | Etiquetas: tcl
En anteriores entradas despotricaba contra Tcl/Tk, y una de mis “quejas” era que el aspecto de los “widgets” era horroroso, sobre todo en sistemas X-Window (Linux y otros UNIX).
Bien, parece que en esta nueva versión se ha añadido una extensión llamada Tile que permite el uso de “themes” en las aplicaciones Tcl/Tk. Los pantallazos que se muestran tienen buena pinta.
A lo mejor le doy una segunda oportunidad a Tcl/Tk como lenguaje para desarrollar programas “de ventanitas”. Veamos como queda uno de mis programillas (Pitch & Tunning Studio) con la nueva versión de Tcl/Tk.

Tk 8.4 en Mac OSX

Tk 8.5 en Mac OSX

Tk 8.4 en Linux

Tk 8.5 en Linux

Tk 8.5 en Windows XP
No he adjuntado un pantallazo de Tk 8.4 en Windows porque prácticamente no ha cambiado nada. La mejora en Linux es increíble: fuentes alisadas, los “radio buttons” redondos y muchos más detalles. También la versión para Mac ha mejorado bastante (observen el “spinbox” rotulado como “Note duration”).
Definitivamente, ya no puedo mantener que Tk es un “toolkit” feo
Por cierto, la distribución de Tcl/Tk más conocida, la de Active State, ya no incluye el paquete Snack por defecto (aunque se puede instalar).
¡Grrrr!
23 de
Julio de
2007,
a las 18:12 | Etiquetas: música, tcl
Pitch & Tunning Studio is a small program that generates usual musical patterns (such scales, intervals and chords) in different tuning systems (just intonation, tempered and pythagorean scales).

This program runs in Linux, Windows and MacOSX.
Read more …
11 de
Mayo de
2007,
a las 11:47 | Etiquetas: tcl
En esto tiempos aciagos para los/as programadores/as, en los que cada dos días sale un lenguaje o herramienta nuevos, en los que para montar una sencilla web hay que lidiar con los omnipresentes patrones de diseño, montones de capas de abstracción y demás, se agradece la simplicidad y sencillez de los viejos tiempos.
Tcl significa “Tool Command Language” y Tk “ToolKit”. Es un lenguaje de “script”, con una sintaxis muy similar a la de cualquier “shell” (como Bash).
Hacía mucho que no hacía nada con Tcl/Tk, y el otro día recordé que existe todavía la estupenda librería Snack. Es una librería de tratamiento y generación de sonido en tiempo real.
Así que, provisto del tutorial de Snack y la documentación de Tcl/Tk pertinente, me hice un pequeño afinador (cutre: sólo da notas de referencia, no “lee” las notas del instrumento):

(Captura de pantalla en Windows)
En 65 líneas de código simple tenemos casi un programa completo:
Código (renombrar a tuner.tcl)
Lo que más atención me llama es que a cada “widget” se le puede asociar una variable (global) de tal forma que, al cambiar la variable, se actualiza el elemento convenientemente. Por ejemplo, el “message” y el “spinbox” tienen asociados dos variables, newfreq y octave, respectivamente.
Desde el procedimiento beep modificamos newfreq y el texto de la etiqueta cambia.
Ocultamiento de información y encapsulamiento: ninguno. ¿Acaso es necesario siempre?
Recursos
- Todavía hay en la red un tutorial en castellano (de lo poquito que he podido encontrar) de la Universidad de Oviedo. Data de 1998 (!) y está bastante bien. Lo bueno del mundillo Tcl/Tk es que las cosas no se quedan obsoletas tan pronto.
- Visual Tcl es un IDE para Tcl/Tk. Permite desarrollar las aplicaciones Tcl/Tk de forma “visual”: pinchando y dibujando los “widgets”. Funciona perfectamente y su última actualización fue en 2006.
12 de
Abril de
2007,
a las 09:06 | Etiquetas: linux, tcl
Este pequeño “script” en Tcl/Tk sirve para administrar el consumo de energía y perfiles de rendimiento. Debe ejecutarse como root. Requiere tener instalado el paquete cpufreq-utils
Estoy tratando de reescribirlo en C y GTK, pero estoy en ello.
Actualización: probablemente nunca lo reescriba en C. No me sobra el tiempo …
He aquí un pantallazo (en inglés):

Sólo lo he probado en mi portátil corriendo Debian y/o Ubuntu. No garantizo que funcione en el tuyo.
Este es el código. Está traducido al castellano. Renombrar como power-helper.tcl para utilizarlo.
PowerHelper (Tcl/Tk)