Friday, March 23, 2012

Libro de citas (X)

"[big design up front] is the maxim of those that haven't implemented very many large systems."

#SICP Structure and Interpretation of Computer Programs

Tuesday, March 13, 2012

Trabajo con texto / sed básico

sed permite realizar cualquier tipo edición en ficheros de texto mediante el uso de comandos o pequeños programas "sed".
La verdad es que sed es muy potente, pero aquí sólo voy a comentar dos o tres ejemplos básicos, que en muchas ocasiones me han preguntado...

En general sed acepta que la operación se haga sobre el mismo fichero usando la opción "-i" (inplace). Lo más normal (y lo más seguro) es no usar esta opción y simplemente trabajar usando la entrada/salida estándard y pipes o redirecciones. Pero como estos comandos son para gente que no usa demasiado la linea de comandos, tratan de ser lo más sencillos posible y usarán esta opción.


Sustituir en todo el fichero ejemplo.txt, la palabla 'inicial' por la palabra 'final':
sed s/inicial/final/g -i ejemplo.txt

Sustituir sólo la primera ocurrencia de la palabla 'inicial' por la palabra 'final' en fichero.txt:
sed s/inicial/final/ -i ejemplo.txt

Borrar las lineas que contengan la palabra 'ejemplo' del fichero ejemplo.txt:
sed /ejemplo/d -i ejemplo.txt

Borrar las lineas que empiecen por la palabra 'ejemplo' del fichero ejemplo.txt:
sed /^ejemplo/d -i ejemplo.txt


Borrar las lineas que terminen por la palabra 'ejemplo' del fichero ejemplo.txt:
sed /ejemplo$/d -i ejemplo.txt

Borrar las dos primeras lineas del fichero.txt
sed '1,2 d' -i fichero.txt

Borrar la última linea de fichero.txt
sed  '$ d'  -i fichero.txt

Borrar las líneas vacias de fichero.txt
sed  '/^$/ d'  -i fichero.txt

Mostrar las tres primeras lineas de fichero.txt
sed  -n '1,3 p' fichero.txt

Mostrar las lineas 4,5,6 de fichero.txt
sed  -n '4,6 p' fichero.txt

Más info:
man sed
info sed


Tuesday, March 06, 2012

Trabajo con texto / uniq

uniq permite identificar, contar, y omitir lineas repetidas dentro de un fichero que esté ordenado, así que su uso más típico es junto con cat y sort.

Eliminamos líneas duplicadas:
cat file_a | sort | uniq
Contamos líneas duplicadas:
cat file_a | sort | uniq  -c

Si consideramos que tenemos ficheros de texto (file_a y file_b) con registros por líneas, facilmente podemos realizar las siguientes operaciones:

Union de registros de A y B:
cat file_a file_b | sort | uniq > file_c
Intersección de registros de A y B (registros comunes):
cat file_a file_b | sort | uniq -d > file_c
Diferencia de registros de A y B (A - B):
cat file_a file_b file_b | sort | uniq -u > file_c


Más info:
man sort
man uniq
info coreutils

Monday, March 05, 2012

Más libros... Para prestar...

Continuando con el post de libros que tengo que podría prestar y que viene del DevOpenMadrid 2012, además de los libros del post anterior, dispongo de los siguientes:

  • El lenguaje de programación C++, Stroustrup
  • The mythical man month, Frederick P. Brooks (no original)
  • Pragmatic Unit Testing, In Java with JUnit 
  • Practices of an Agile Developer
  • Agile Retrospectives Derby/Larsen
  • Effective C++, Meyers
  • More Effective C++, Meyers
  • Agile Web development with Rails
  • Programming Ruby, Thomas Hunt
  • Pattern Oriented Software Architecture (Vol1)
  • Design Patterns, GOF
  • The Design Patterns Smalltalk Companion
  • Surviving Object-Oriented Projects, Alistair Cockburn
  • SQL Pocket Guide
Algunos de estos libros son difíciles de conseguir por lo que si alguien está interesado que me diga algo por correo o por twitter o por cualquier medio que se le ocurra.

Sunday, March 04, 2012

Libros Smalltalk y otros temas... Para prestar...

Libros Smalltalk y otros temas... Para prestar...

Hoy en el DevOpenMadrid 2012 hemos estado haciendo book croosing (Bookcrossing) y he comentado con varios algunos libros más o menos dificiles de conseguir sobre informática...

Concretamente varios me han preguntado por varios libros de Smalltalk Pongo aquí la biblioteca física que tengo actualmente, por si alguien quiere leerse alguno...

  • Object Design, Wirfs-Brock, Rebecca|McKean, Alan
  • Exceptional C++
  • Object-oriented Analysis and Design With Applications, Booch, Grady
  • Programando Con Smalltalk, Deck, Diego Gómez
  • Software Libre Para Una Sociedad Libre, Rms
  • Gnu Emacs Manual, RMS
  • Smalltalk, Objects, and Design, Liu Chamond 9781583484906
  • Squeak 
  • Smalltalk Best Practice Patterns, Beck, Kent 9780134769042
  • Squeak. Galán, Ana Pizarro
  • The Art and Science Of Smalltalk
  • En El Principio Fue La Línea de Comandos, Stephenson, Neal 9788493298227
  • Regular Expression Pocket Reference
  • Hackers & Painters, Paul Graham
  • Cathedral and the Bazaar, Raymond, Eric S. 
  • Object Solutions, Booch Grady 9780805305944
  • Just For Fun, The Story of an Accidental Revolutionary, Linus Torvalds; David Diamond
  • Practical Django Projects, James Bennett
 Antes tenia muchos más, pero poco ha poco he intentado limitar el número de libros en formato "físico"... Algunos de estos libros son difíciles de conseguir por lo que si alguien está interesado que me diga algo por correo o por twitter o por cualquier medio que se le ocurra.