[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Salida de los comandos en forma de objeto



On 8/15/07, Iñaki Baz Castillo <ibc.listas@aliax.net> 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



Reply to: