Agregando esta linea al archivo de configuración de bash (~/.bashrc o /etc/bash.bashrc) creamos la función svndiff, la cual usaremos en vez del comando svn diff para ver los cambios en nuestros fuentes versionados con subversion. Esta funcion lo que hace es pasar la salida de svn diff por colordiff y less, para hacerla mas simple y practica de leer.
function svndiff () { svn diff $@ | colordiff | less -R; }
domingo 21 de diciembre de 2008
Marcar tabs y espacios al final en Vim
Agregando esta simple linea a nuestro archivo de configuración de vim (~/.vimrc o /etc/vim/vimrc) podemos ver resaltados los tabs y espacios al final de lineas. Esto es especialmente util si usamos vim para editar codigo fuente.
set list listchars=tab:»·,trail:·
set list listchars=tab:»·,trail:·
jueves 18 de septiembre de 2008
Usar siempre https en gmail
Hace no mucho gmail agrego a su configuracion una opcion muy interesante para el paranoico moderno (grupo en el cual me incluyo). La opcion se encuentra en el tab General y se llama algo asi como 'usar siempre https' ('Always use https').
Lo que logramos con esto es que todo el intercambio de datos entre nuestro navegador y el servidor de gmail sea encriptado, evitando (o reduciendo bastante la posibilidad de) que alguien en el medio pueda llegar a espiar dichos datos.
Esta funcionalidad, en realidad, ya la ofrecian hace rato, simplemente poniendo https en vez de http al ingresar a la pagina, pero al ser una opcion de configuracion evitamos olvidos o errores en este sentido.
Lo que logramos con esto es que todo el intercambio de datos entre nuestro navegador y el servidor de gmail sea encriptado, evitando (o reduciendo bastante la posibilidad de) que alguien en el medio pueda llegar a espiar dichos datos.
Esta funcionalidad, en realidad, ya la ofrecian hace rato, simplemente poniendo https en vez de http al ingresar a la pagina, pero al ser una opcion de configuracion evitamos olvidos o errores en este sentido.
Etiquetas:
privacidad,
tech,
tips
jueves 12 de junio de 2008
Orden de directorios de 'ls -la'
Hace poco instale Ubuntu Hardy en mi maquina (se me rompio el disco, necesitaba la maquina para trabajar y no tenia tiempo de instalar Gentoo). Una de las cosas que note es que la salida del comando 'ls -la' se ve ordenada de una forma bastante fea (para mi gusto), ya que se mezclan los directorios y archivos ocultos con los otros, ademas de mezclarse los que empiezan con mayusculas y minusculas. La solucion es muy simple, pero me costo bastante encontrar informacion al respecto.
Lo que hice es definir la variable de ambiente LC_COLLATE de la siguiente manera:
export LC_COLLATE=POSIX
Esto se puede poner en alguno de los archivos de inicio (.profile | .bashrc | .bash_login) para que se ejecute con cada sesion.
Tambien encontre otras opciones que provocan distindos comportamientos, como LC_COLLATE=C o LC_COLLATE=es_ES. Aparentemente este ultimo mejora el ordenamiento cuando se usan caracteres con acento o ñ, pero no lo probe.
Lo que hice es definir la variable de ambiente LC_COLLATE de la siguiente manera:
export LC_COLLATE=POSIX
Esto se puede poner en alguno de los archivos de inicio (.profile | .bashrc | .bash_login) para que se ejecute con cada sesion.
Tambien encontre otras opciones que provocan distindos comportamientos, como LC_COLLATE=C o LC_COLLATE=es_ES. Aparentemente este ultimo mejora el ordenamiento cuando se usan caracteres con acento o ñ, pero no lo probe.
QOTD
"The Things to do are: the things that need doing, that you see need to be done, and that no one else seems to see need to be done. Then you will conceive your own way of doing that which needs to be done — that no one else has told you to do or how to do it. This will bring out the real you that often gets buried inside a character that has acquired a superficial array of behaviors induced or imposed by others on the individual."
- Richard Buckminster Fuller, 16 de Febrero de 1970
- Richard Buckminster Fuller, 16 de Febrero de 1970
lunes 26 de noviembre de 2007
QOTD
"...'fire' does not matter, 'earth' and 'air' and 'water' do not matter. 'I' do not matter. No word matters. But man forgets reality and remembers words. The more words he remembers, the cleverer do his fellows esteem him. He looks upon the great transformations of the world, but he does not see them as they were seen when man looked upon reality for the first time. Their names come to his lips and he smiles as he tastes them, thinking he knows them in the naming."
-- Siddartha, _Lord_of_Light_ by Roger Zelazny
-- Siddartha, _Lord_of_Light_ by Roger Zelazny
martes 6 de noviembre de 2007
A que paquete pertenece este archivo?
Este comando lo encontré hoy y hace algo que varias veces necesité hacer y no sabia como. Lo que hace es decirnos a que paquete pertenece un archivo instalado (gentoo only :). Aparentemente funciona con otros usuarios además de root.
portageq owners / <filename>
Ejemplo:
> portageq owners / /usr/bin/libusb-config
dev-libs/libusb-0.1.12-r1
/usr/bin/libusb-config
portageq owners / <filename>
Ejemplo:
> portageq owners / /usr/bin/libusb-config
dev-libs/libusb-0.1.12-r1
/usr/bin/libusb-config
jueves 13 de septiembre de 2007
#ident - Identificando revision de fuentes en binarios (C/C++)
La directiva #ident o #pragma ident dentro de un fuente C o C++ nos permite asignar una identificación en forma de texto a dicho fuente. Esta identificación se incorporara dentro del binario al momento de compilar, lo que nos permite, combinado con un sistema de control de versión, identificar exactamente que archivos fuente forman parte de un binario. Esto es particularmente util en entornos de trabajo donde existen varios grupos que modifican fuentes dentro del mismo repositorio (desarrollo, soporte, etc.) y el producto tiene varios clientes en producción.
Ejemplo 1 (manual):
#ident "ejemplo.cpp v1.23 (2007-09-12)"
En este caso el texto es generado manualmente por el programador, y este es el encargado de actualizar la versión cuando se modifica el fuente. El problema de esta forma de usar el #ident es que es muy fácil modificar el fuente y olvidar actualizar la versión y fecha.
Ejemplo 2 (svn):
#ident "$Id$"
Suponiendo que nuestros fuentes esten versionados con Subversion (svn), se puede solucionar fácilmente el problema del ejemplo anterior utilizando tags de svn:keywords. De esta manera el svn se encarga automáticamente de mantener actualizados los datos con cada commit.
Lo único que tenemos que haces es agregar el tag $Id$ como muestra el ejemplo y ejecutar el comando:
svn propset svn:keywords Id ejemplo.cpp
De esta manera el tag sera convertido automáticamente por svn a algo similar a lo siguiente:
#ident "$Id: ejemplo.cpp 429 2007-09-12 21:40:25Z pepito $"
Como se puede ver, tenemos (en orden): el nombre del fuente, el numero de revisión, la fecha y hora del commit y el usuario que lo realizo.
En base a esto, es muy fácil hacer un programita que recorra los binarios en busca del string '$Id: ' y nos muestre el resultado.
Ejemplo 3 (svn/SCCS):
#ident "@(#)$Id$"
Una buena opción para no tener que hacer el programa que busque los tags es utilizar el comando what de SCCS (Source Code Control System) o su contraparte GNU, el CSSC (Compatibly Stupid Source Control).
Para esto debemos modificar ligeramente el #ident agregando adelante el string '@(#)', que es lo que el comando what usa para buscar los comentarios que va a mostrar.
Esto es especialmente recomendable si los equipos donde va a correr nuestro sistema de producción son SunOS/Solaris o algún otro Unix, ya que en general se suele encontrar el comando what en estos sistemas operativos.
Si tenemos la directiva #ident de esta manera en todos nuestros fuentes y headers, la salida del comando what sera algo similar a:
> what bin/ejemplo
bin/ejemplo:
SunOS 5.9 Generic May 2002
$Id: ejemplo.cpp 429 2007-09-12 21:40:25Z pedro $
$Id: ejemplo.h 410 2007-09-10 20:12:02Z jose $
$Id: func_adic.cpp 139 2007-01-01 11:20:45Z juanito $
$Id: defines.h 13 2006-05-10 18:34:55Z pepito $
Buscando informacion sobre este tema, lei en algún lado que hay que agregar la opción -fident a la linea de compilación para que el #ident sea tenido en cuenta. Con gcc esto no parece ser necesario, no se con otros compiladores.
Referencias:
Libro Control de versiones con Subversion - Traduccion al español del libro oficial de svn (version 1.1/1.2)
Ejemplo 1 (manual):
#ident "ejemplo.cpp v1.23 (2007-09-12)"
En este caso el texto es generado manualmente por el programador, y este es el encargado de actualizar la versión cuando se modifica el fuente. El problema de esta forma de usar el #ident es que es muy fácil modificar el fuente y olvidar actualizar la versión y fecha.
Ejemplo 2 (svn):
#ident "$Id$"
Suponiendo que nuestros fuentes esten versionados con Subversion (svn), se puede solucionar fácilmente el problema del ejemplo anterior utilizando tags de svn:keywords. De esta manera el svn se encarga automáticamente de mantener actualizados los datos con cada commit.
Lo único que tenemos que haces es agregar el tag $Id$ como muestra el ejemplo y ejecutar el comando:
svn propset svn:keywords Id ejemplo.cpp
De esta manera el tag sera convertido automáticamente por svn a algo similar a lo siguiente:
#ident "$Id: ejemplo.cpp 429 2007-09-12 21:40:25Z pepito $"
Como se puede ver, tenemos (en orden): el nombre del fuente, el numero de revisión, la fecha y hora del commit y el usuario que lo realizo.
En base a esto, es muy fácil hacer un programita que recorra los binarios en busca del string '$Id: ' y nos muestre el resultado.
Ejemplo 3 (svn/SCCS):
#ident "@(#)$Id$"
Una buena opción para no tener que hacer el programa que busque los tags es utilizar el comando what de SCCS (Source Code Control System) o su contraparte GNU, el CSSC (Compatibly Stupid Source Control).
Para esto debemos modificar ligeramente el #ident agregando adelante el string '@(#)', que es lo que el comando what usa para buscar los comentarios que va a mostrar.
Esto es especialmente recomendable si los equipos donde va a correr nuestro sistema de producción son SunOS/Solaris o algún otro Unix, ya que en general se suele encontrar el comando what en estos sistemas operativos.
Si tenemos la directiva #ident de esta manera en todos nuestros fuentes y headers, la salida del comando what sera algo similar a:
> what bin/ejemplo
bin/ejemplo:
SunOS 5.9 Generic May 2002
$Id: ejemplo.cpp 429 2007-09-12 21:40:25Z pedro $
$Id: ejemplo.h 410 2007-09-10 20:12:02Z jose $
$Id: func_adic.cpp 139 2007-01-01 11:20:45Z juanito $
$Id: defines.h 13 2006-05-10 18:34:55Z pepito $
Buscando informacion sobre este tema, lei en algún lado que hay que agregar la opción -fident a la linea de compilación para que el #ident sea tenido en cuenta. Con gcc esto no parece ser necesario, no se con otros compiladores.
Referencias:
Libro Control de versiones con Subversion - Traduccion al español del libro oficial de svn (version 1.1/1.2)
Etiquetas:
C,
C++,
programacion,
tech,
tips
miércoles 27 de junio de 2007
QOTD
Under heaven all can see beauty as beauty only because there is ugliness.
All can know good as good only because there is evil.
Therefore having and not having arise together.
Difficult and easy complement each other.
Long and short contrast each other:
High and low rest upon each other;
Voice and sound harmonize each other;
Front and back follow one another.
Therefore the sage goes about doing nothing, teaching no-talking.
The ten thousand things rise and fall without cease,
Creating, yet not.
Working, yet not taking credit.
Work is done, then forgotten.
Therefore it lasts forever.
All can know good as good only because there is evil.
Therefore having and not having arise together.
Difficult and easy complement each other.
Long and short contrast each other:
High and low rest upon each other;
Voice and sound harmonize each other;
Front and back follow one another.
Therefore the sage goes about doing nothing, teaching no-talking.
The ten thousand things rise and fall without cease,
Creating, yet not.
Working, yet not taking credit.
Work is done, then forgotten.
Therefore it lasts forever.
Suscribirse a:
Entradas (Atom)
