On 8/15/07, Iñaki Baz Castillo <[EMAIL PROTECTED]> wrote: > Hola, estaba yo divagando un rato... > > Imaginemos que un programa monitoriza la swap usada, para ello tendrá que > llamar internamente al comando "free" que da un resultado: > > # free -m > total used free shared buffers cached > Mem: 1011 992 19 0 140 493 > -/+ buffers/cache: 358 652 > Swap: 698 137 560 > > y añadir tuberías para hacer primero un "grep Swap" y luego un cut/sed/awk > para quedarse con el segundo campo numérico. > > Tengamos en cuenta en este punto que la salida de "free" (y de tantos otros > comandos) está formateada para ser visualmente "atractiva", en absoluto está > pensada para ser procesada/parseada, luego hace falta la colección de amigos > de Bash de antes (grep, cut...) para obtener el dato que nos interesa. > > ¿Y qué pasa si de repente el autor de "free" decide cambiar mínimamente el > ASPECTO de la salida de "free"? ¿Y si cambia el orden de las columnas en base > a un estudio de usabilidad o lo que sea? Miedo me da la cantidad de programas > que parsean la salida de "free" y que dejarían de funcionar con la nueva > versión de "free", total, "por un simple cambio de formato VISUAL!!!". > > > En Linux veo dos problemas grandes: > - La ensalada y anarquía en cuanto a ficheros de configuración, obligando a > los desarrolladores de otras aplicaciones a hacer auténticas peripecias > parseando otros ficheros paridos cada uno por su madre. > - El problema que describo, en el que la salida visual interfiere > completamente con la salida "computacional" en los comandos básicos. > > > En fin, ¿qué opináis? ¿sería positivo esta salida de comandos en forma de > objeto? ¿o es una tontería?
No es una tontería y, de hecho, ya está implementado. Son las funciones del kernel (o /proc en su defecto). El hecho de usar la salida de free es una avivada que se hace por comodidad o para evitar tener que aprender a usar toda una API (o llamadas a sistema) como corresponde. Y aún así, seguimos teniendo el mismo problema ¿qué pasa cuando la API cambie? ¿cuando el nombre de la clase, objeto o atributo cambie? Es la eterna pelea de mejoras versus backwards compatibility (i.e. mejorar algo sin romper lo que ya está hecho sobre eso). Saludos, Toote -- Web: http://www.enespanol.com.ar

