El poder de las herramientas correctas

Linux — Miércoles 05 de Enero de 2005, 09:52

Esto lo escribo solamente como un ejemplo redondito del porqué una plataforma Unix o Linux es mucho más poderosa que una plataforma Windows. Ejemplos como este se suceden varias veces al día; el tiempo ganado ampliamente supera el invertido para aprender estas herramientas.

El trabajo que tenía que realizar era, de un archivo de log, saber cuales LAs se estaban supervisando. No entraré en detalle acá de qué significa una LA, pero consideren que se representa como un número. En otras palabras, tenía que extraer de un log cuales de esos "números" existían.

El log en cuestión estaba en un archivo que pesaba 333MB. Sí, un archivo de texto de 333 Megas. ¿Cantidad de lineas del archivo? Más de cinco millones.

Por supuesto, no me acordaba del formato interno del archivo, entonces debía ver algunas lineas del mismo para recordármelo. Piensen un segundo cómo editarían un archivo de esta magnitud en Windows. ¿Ya lo pensaron? Vuélvanlo a considerar, y sigan leyendo luego de que se den cuenta de cuantas veces van a tener que reiniciar la PC hasta poder terminar de trabajarlo.

Bueno, en Pytonisa (que es el Linux que tengo instalado en la oficina) hice un "head statlogs_20050102.txt", y me mostró instantáneamente las primeras diez lineas del archivo. Allí pude ver cual era el formato:

15842;S;01158353525;15842;Message delivered;00:00
15842;S;02616502229;15842;Message delivered;00:00
15005;S;02362535926;15005;Message delivered;00:00
15842;S;02616592586;15842;Message delivered;00:00
15842;S;03814423758;15842;Message delivered;00:00
15004;S;01154975858;15004;Message delivered;00:00
15004;S;02652483462;15004;Message delivered;00:00
15005;S;01158335496;15005;Message delivered;00:00
15005;S;01158268262;15005;Message delivered;00:00
15004;S;02914189236;15004;Message delivered;00:00

Yo tenía que ver cuales eran todos los numeros que estaban en la primer columna. ¿Complicado? ¡Para nada! Usé la órden...

awk -F';' '{print $1}' statlogs_20050102.txt | sort -u

...que me dió el resultado deseado:

111
15000
15002
15003
15004
(etc)

¡¡en 78 segundos!! ¡¡más de cinco millones de registros!! (consideren que es una PC de escritorio que está siendo compartida por varios usuarios; ya que estamos, les comento que hace 207 días que está prendida, trabajando sin chistar, sin tener que reiniciarla).

Y aún más importante, en este minuto y monedas, yo no tuve que hacer nada: así hubiese tardado diez minutos, trabajó la máquina sola, yo perdí veinte segundos en armar la órden y luego estuve leyendo mails, etc...

¿Cómo habrían hecho esto en Windows?

Ubuntu

comentarios

  1. Yo pregunto (desde mi simple razonamiento) el head y el awk ¿que son?... programas ¿forman parte del SO? o son simplemente tools satelitales.

    De la misma manera yo podría decir que "arrastrando un archivo dentro del windows media player ya estoy escuchando musica" ¿como se haría en unix? habría que compilar el player.c, montar la placa de sonido, ups no hay drivers para linux :)=, luego agregar la ruta del binario y ponerlo en una variable de entorno, ir hasta del directorio del archivo de musica y ejecutarlo (exagerandole un poco)

    ¿La diferencia? El publico al cual esta dirigido cada una de las herramientas satelitales de cada SO.

    Obviamente que hay que reconocer que el Shell de Unix es completo que el simple command prompt de windows. y la verdadera comparación de SOs se debe hacer a nivel de seguridad, manejo de recursos, no con que herramientas viene.

    Te juego una carrera a ver quien publica una aplicación web mas rápido vos en apache y yo con el IIS. Seguramente que yo lo voy a hacer 3 a 4 veces mas rapido.

    Saludos

    Dario Kondratiuk

    Escrito por Dario K! — 06 Ene 2005, 10:49

  2. El "head" y el "awk" son programas. Si son parte o no del SO, depende que consideramos como SO. Parte del kernel no son, pero son programas que encontraremos en *cualquier* instalación de Linux (¡y que venimos encontrando en instalaciones de Unix desde hace 30 años!).

    Con respecto a arrastrar el archivo (de audio) al media player para escuchar música, yo particularmente prefiero abrir la lista de temas e ingresar las canciones allí. Pero si te gusta arrastrar y soltar (drag&drop), en Linux te es exactamente igual. Como nota de color, creo que la última vez que tuve problemas con los drivers de la placa de sonido en Linux fue hace seis años, una vez que instalé un Red Hat en soporte técnico de la facultad con Javier. Como nota más colorida, :p, te cuento que en mi casa tengo Linux (Fedora Core 3) y Windows (2000 Professional con el SP2), y que en Windows es imposible escuchar música mientras el "sistema operativo" está usando periféricos de entrada/salida (como disquetera o CD), ya que se le complica con la cadencia. En Linux no tuve ni un drama (hasta ahora, nunca cantemos victoria).

    Sería interesante una comparación a nivel de seguridad y manejo de recursos (ver párrafo anterior, jeje), pero se escapa de este post. Sin embargo es interesante notar que una de los puntos fuertes que Micro$oft "promete" (con muuuchas comillas en el promete) para Longhorn (ya que estamos, ¿2008?), ¡¡es una linea de comandos más potente y con más herramientas!!

    Lo de la carrera a ver quien publica una aplicación web más rápido sería divertido hacerla. No para ver quien gana (seguro que vos), sino para que yo aprenda un poquito del tema (no tengo ni idea, y es por eso que estoy seguro que ganás vos). Por lo pronto, tendríamos que empezar definiendo "qué es una aplicación web"...

    Escrito por Facundo Batista — 06 Ene 2005, 12:46

  3. Obviamente, que en linux hay una forma sencilla de reproducir música, a lo que me refería era a quien estaba orientada las herramientas que vienen con los SOs. Porque si ha un tipo de el sector de marketing de una empresa (sin ánimo a ser despectivo, sino para hablar de un usuario no experto) le piden haga la tarea que necesitaste hacer con el log, por más que use linux en su máquina, no podría haber realizado la tarea porque esas herramientas de linux/unix estan pensadas para gente casi programadora, porque vos no solo le estas pasando argumentos a un binario (me sale decir exe, pero no me entenderías ;) sino que te estas imaginando la lógica de esa aplicación, estas casi programando.

    Saludos
    Dario Kondratiuk

    Escrito por Dario K! — 07 Ene 2005, 05:31

  4. Estamos en un todo de acuerdo. Pero fijate en lo siguiente.

    Más allá del target de las herramientas, o la filosofía de cada SO, si una persona de marketing va a estar un día procesando un archivo con el Word o tres minutos con el head/awk, ¿qué le conviene hacer?

    Creo que es claro que, más allá de que sea de marketing, tiene que aprender ciertas herramientas que le van a optimizar mucho el trabajo. Es como tener una discusión hace quince años de si, más allá que sea una secretaria, le conviene hacer la carta en una computadora y no en una máquina de escribir.

    Escrito por Facundo Batista — 07 Ene 2005, 05:43

  5. Hola, Facundo. Yo también soy "hincha" del software libre, pero... en Windows podés usar un port de los utilitarios, o (me imagino) importar el archivo en Excel como CSV y copiar la primera columna.
    Pero creo que sí vas aumentando progresivamente la complejidad del problema, termina ganando la línea de comandos.

    "There's more than one way to do it." :)

    Escrito por Roberto Rodríguez — 12 Sep 2006, 17:24

  6. me encanta la mucica de precentacion de batista el animal y tambien me gusta como pelea soy fanatico de el y quiero tener su musica para escucharla anquesea mandeme la letra osino alguna pagina bep don de la pueda escuchar porfafor amigos

    Escrito por gianni — 13 Sep 2006, 05:28


Añadir comentario

authimage






Powered by LifeType