Antón María Rodríguez Yuste

 
 
 
  • About

    Consultor orientado al sector TELCO (eTOM, SID), dirección de proyectos (scrum) y sistemas (Oracle, Weblogic, Jboss, Solaris, etc.). Un poco de todo, vamos.

  • Varios

Sindicación


Licencia


Validación



Sistemas






Varios

 
Intros por comas July 1st, 2008

Así de fácil, cambiar intros por comas para luego llevarlo al excel con más comodidad.

CODE:
  1.  
  2. cat prod_abal.txt | tr  "\r\n" ",\n"> prod_abal_form.txt
  3.  

¡Gracias, Juan!

Scrum December 28th, 2007

Aquí va una entrada interesante.

Recientemente he empezado un proyecto nuevo. Esta parte me encanta: leer documentación (y lo digo en serio). El caso es que uno de los documento ha sido este: Scrum and XP from the Trenches (Scrum y XP desde las trincheras).

¿Qué es scrum?. Una metodología para equipos de desarrollo. Seguro que hay que definiciones mejores. El caso es que tanto el documento como la metodología aplicada me ha encantado.

Desde que entre en Optare el mundo de la programación ha tomado nuevas dimensiones para mí. Antes la odiaba, a ahora, sin embargo, le voy pillando el gusto. No por la programación en sí, más bien por todo lo la rodea.

El caso es que aquí veo todo mucho más ordenado, y eso, se agradece. Con scrum eso se lleva a una nueva dimensión, y, realmente, me emociona empezar a trabajar con esta metodología.

Una pequeña aproximación a esto la podéis encontrar en explicando scrum a mi abuela.

He encontrado dos blogs que me han parecido muy interesantes sobre esto:

Rodrigo Corral
Jorge Serrano

Sustituir retornos de carro por espacios en blanco con bash November 22nd, 2007

Fácil:

CODE:
  1. cat nombre.txt |while read line; do echo -n "${line} "; done

Listo.

Crear una palabra de 2000 carácteres o ejecutar un código cada 5 segundos October 23rd, 2007

Un simple código bash (se puede poner directamente en la shell) que genera una palabra de un determinado número de carácteres (ideal para probar parámetros de entrada):

CODE:
  1. echo "";((a=0)); while ((a <3000)) ; do echo -n "a"; ((a+=1)); done;echo""

Otra cosa útil es ejecutar un comando cada cinco segundos:

CODE:
  1. while true; do grep "cadena buscada" comunitel.log | wc -l; sleep 5; done;
Varias pruebas October 19th, 2007

Un simple código Java que me permite lanzar varias pruebas sin necesidad de compilar. Muy útil cuando el hecho de complicar implica perder 20 min. de tu vida.

CODE:
  1.  
  2.             if(this.pruebas == null) {
  3.                 this.pruebas = new Integer(0);
  4.                 }
  5.            
  6.         switch(pruebas.intValue() % 4) {
  7.               case 2:
  8.                 logger.debug("Caso 2");
  9.                 this.pruebas = new Integer(this.pruebas.intValue() + 1);
  10.                 throw new Exception("aaa Invalid License bbbb");
  11.               case 3:
  12.                 logger.debug("Caso 3");
  13.                 this.pruebas = new Integer(this.pruebas.intValue() + 1);
  14.                 Thread.sleep(600000);
  15.                
  16.              } 
  17.  
Esperar un cambio en Bash October 18th, 2007

Algunas cosillas de Bash.

1) Esperar a que aparezca determinada cadena en un archivo

CODE:
  1.  
  2.         while !(grep RUNNING  fichero.log> /dev/null)
  3.         do
  4.            sleep 2
  5.         done
  6.  

2) Estructura básica funciones + case:

CODE:
  1.  
  2. #/bin/sh
  3. #
  4. # Script para arrancar, parar y reiniciar el cluster (nodos y administrador) de forma desatendida.
  5. #
  6. # 18/10/2007 OptareSolutions
  7. # Anton Maria Rodriguez Yuste
  8. function inicio {
  9.         echo "Iniciando.."
  10. }
  11.  
  12. function apagado {
  13.         echo "Apagando.."
  14. }
  15.  
  16. case "$1" in
  17.      'start')
  18.         inicio
  19.          ;;
  20.      'stop')
  21.         apagado
  22.          ;;
  23.      'restart')
  24.          apagado
  25.          inicio
  26.          ;;
  27.       * )
  28.         echo "Usage: ./cluster.sh start | stop | restart "
  29. esac
  30.  
Borrar todas las carpetas de nombre BORRAME de un tag de CVS October 11th, 2007

Ejecutar en una shell dentro de la carpeta:

CODE:
  1. for dire in `find ./ -name BORRAME -type d`; do cvs -d:pserver:usuario@host.destino.com:/repositorio/cvsroot rtag -d NOMBRE_DEL_TAG $dire; done

No es mío (como las últimas entradas que merecen la pena), es de Richi (craaack!).

Script para pasar peliculas a formato DVD May 7th, 2007

Pues eso, un simple script hecho en bash al que se le pasa una ( o varias.. ) peliculas en cualquier formato (avi, mpg) y crea una iso que se puede grabar directamente para ver las peliculas en cuestión en el dvd de casa.

CODE:
  1.  
  2. #!/bin/bash
  3.  
  4.  
  5. numparms=$#
  6. j=1
  7.  
  8.  
  9. while [ $j -le $numparms ]; do
  10.     echo "Procesando el parametro $1"
  11.     ffmpeg -i $1 -target pal-dvd $1.mpg
  12.     dvdauthor -o dvd/ -t $1.mpg
  13.     rm $1.mpg
  14.     shift
  15.     j=$[$j+1]
  16. done
  17.  
  18. echo "Creando dvd"
  19.  
  20. dvdauthor -o dvd/ -T
  21. mkisofs -dvd-video -v -o dvd.iso dvd
  22. rm -fr dvd
  23.  
  24. echo "Final del proceso para acabar quizá le interese grabarlo:"
  25. echo "growisofs -Z /dev/hdd=dvd.iso"
  26.  

No me lo he currado mucho pero funciona ;-)

xxdiff May 15th, 2006

Vaya pedazo de herramienta me he encontrado como por casualidad: xxdiff. Permite ver los cambios entre directorios y archivos de codigo fuente. Entre otras maravillas deja navegar por directorios, ver todos los cambios, decidir entre unos y otros y un largo etc. de cualidades. Desde luego muuuy útil para un programador.

La única pega es que no fuí capaz de que no abra una nueva ventana por cada diff que hace :-(

Aún así muy recomendable.

Rompiendo blucles April 4th, 2006

Estoy a vueltas con el mítico bucle infinito. Primeramente hay dos opciones de implementarlo:

1) Con un while(true) y un break para cuando queramos romper.
2) Con un while(bandera) siendo bandera un boolean inicializado a true.

Siempre preferí la primera, ya que te ahorras crear una variable para algo tan estúpido. El mayor problema es que si tenías varios bucles infinitos anidados la lectura de código se hace algo tortuosa (pega1), ya que nunca sabes a que se refiere cada bucle. Esto se puede arreglar comentando código, claro.

Además encontré la siguiente pega. ¿Que pasa si quiero reiniciar la ejecución del bucle en algún punto? . Obviamente se puede hacer con if-else pero nunca me gustó esta opción por qué enmaraña el código. Un 'break' a priorí tampoco nos vale por qué no reinicia el bucle si no que directamente sale de él ( pega2 ).

La respuesta a ambas pegas creo que podría ser la siguiente ( al menos en java ) : el break etiquetado. Como el código es autoexplicativo no doy más la lata, ahí os queda:

JAVA:
  1.  
  2.  
  3. salida_bucle:
  4.                   while(true) {
  5.                       reinicio_bucle:
  6.  
  7.                               if (loquesea) {
  8.                                   break reinicio_bucle;
  9.                               }
  10.                               if (loquesea2) {
  11.                                   break salida_bucle;
  12.                               }
  13.  
  14.  
  15.                   }
  16.  
  17.  

Como veis, si loquesea es 'true' reiniciará el bucle, en cambio si loquesea2 es 'true' saldrá del mismo.

Por otro lado, esto se parece mucho al uso de etiquetas y el 'goto' del cual siempre han lanzado pestes los gurús de la programación, con lo cual haya cada uno el usarlo o no.