Otro de mis pequeños proyectos

Etiqueta: truco

El patito de goma como método de debug

Uno de los métodos más baratos y conocido para hacer debugging «en parejas» es el método denominado «el patito de goma». Creo que esta es la primera vez que se habla sobre él.

Es realmente sencillo y he tenido he podido comprobar (conmigo y con otros) como la eficacia de este método es elevadí­sima. Hay que seguir unos sencillos pasos:

  1. Conseguir un patito de goma, preferiblemente variedad baño (aunque se aceptan versiones tipo pirata, Sherlock Holmes o incluso ¡diablo!)
  2. Colocar el patito cerca nuestra, en el escritorio por ejemplo e informarle que vais a ver un poco de código, a ver si está de acuerdo.
  3. Explicar al pato qué es lo que se supone que hace el código y tras esto, entrar en detalle explicándolo lí­nea a lí­nea.
  4. En algún momento le dirás al patito lo que se supone que es lo siguiente a hacer y te darás cuenta que eso no es lo que realmente está haciendo tu código. El pato se mantendrá sentado serenamente, contento de saber que te ha ayudado en tu tarea.

Existen variantes al patito de goma, como otro tipo de peluches y objetos, pero su efectividad no está tan demostrada como con el patito de goma.

Configurar el fichero hosts de Android Emulator

Es posible que te encuentres en la situación (doy un par de ejemplos más abajo) en los que necesites que tu Android Emulator haga caso a tu /etc/hosts en vez de al DNS. Para este caso, lo que tienes que hacer es seguir estos dos sencillos pasos:

  1. Crear un fichero hosts en tu ordenador (o usar el que ya tienes en /etc/hosts)
  2. Remontar el emulador y copiar el fichero anterior

La necesidad de remontar viene porque si no, el dispositivo está como sólo lectura y por lo tanto es imposible escribir nada en él.

Supongamos que tenemos partimos de nuestro /etc/hosts, irí­amos al directorio donde tenemos las tools del SDK y teclearí­amos:

adb remount
adb push /etc/hosts /system/etc/

También es posible coger el fichero hosts que tiene el emulador (por ejemplo, copiandolo a nuestro directorio /tmp):

adb push /system/etc/hosts /tmp

¿Y en qué casos nos puede hacer falta? Bueno, yo en concreto lo he necesitado cuando estaba desarrollando una aplicación que se alimentaba de un webservice. Realizaba el desarrollo del webservice en paralelo y por lo tanto no estaba (todaví­a) en la máquina de producción. De esta forma, gracias al fichero hosts obligaba al emulador a buscar en mi entorno de desarrollo en vez de ir al de producción, haciendo que la aplicación tuviese un comportamiento transparente, en código, sobre dónde atacar.

Múltiples cuentas en github.com

Al hilo del último post sobre cómo «tunear» un poco nuestro ssh, podemos usarlo por ejemplo si tenemos varias cuentas en github.com. Cuando ocurre esto, por cada cuenta que tienes en github, tienes que añadir una clave pública; esto no es ningún problema ya que podemos crear tantas claves como queramos, pero lo que no es tan fácil es cambiar la cuenta ssh con la que debe conectarse el cliente de git a github. No es muy común, pero te puede ocurrir como a mi, que tienes tu cuenta personal y la del trabajo.

Para poder conseguir esto, supongamos que tienes estos datos:

  • Cuenta personal
    • Usuario: usuario_casa
    • Fichero de clave: ~/.ssh/casa
  • Cuenta trabajo
    • Usuario: usuario_trabajo
    • Fichero de clave: ~/.ssh/trabajo

Lo que habrí­a que hacer es tener un fichero de configuración ssh (recordemos que está en ~/.ssh/config) de la siguiente forma:

Host github
 HostName github.com
 User usuario_casa
 IdentityFile ~/.ssh/casa

Host github-trabajo
 HostName github.com
 User usuario_trabajo
 IdentityFile ~/.ssh/trabajo

La diferencia es sutil: cambia el valor que ponemos en Host (los espacios o tabulaciones son opcionales, yo los uso para dar un poco más de orden).

Con esto, tenemos que cambiar la dirección con la que nos conectaremos con la cuenta de trabajo. Si por ejemplo, para añadir el repositorio remoto usamos:

git remote add origin git@github.com:usuario_trabajo/proyecto.git

Ahora deberemos poner:

git remote add origin git@github-trabajo:usuario_trabajo/proyecto.git

Es decir, ssh se encargará automáticamente de hacer el cambio por nosotros y, de esta forma, no tendremos problemas decidiendo con qué usuario debe conectar o no, está todo en el fichero de configuración 😉

«Tunear» un poco nuestro ssh

Este es un sencillo truco que a mi me descubrió hace ya un tiempo mi buen amigo Iñigo, que os abrirá (si no lo ha hecho ya) una puerta hací­a una mayor rapidez con el comando ssh. Empezaré directamente poniendo un ejemplo: supongamos que para acceder a un servidor con los siguientes parámetros (lo sé, están un poco exagerados, pero creo que se entenderá el ejemplo):

  • Dirección: punto.de.entrada.al.servidor.com
  • Usuario: miusuario
  • Puerto 12345
  • Fichero de clave: /home/user/.ssh/fichero.clave

El chorizo comando que nos hace falta es:

ssh punto.de.entrada.al.servidor.com -l miusuario -p 12345 -i /home/user/.ssh/fichero.clave

Casi nada

Bien, hay una forma de acortarlo un poco. El truco está en configurar todos estos parámetros en un fichero. Este fichero lo podemos encontrar en nuestra cuenta de usuario, concretamente en ~/.ssh/config. Este fichero por defecto viene vací­o pero, siguiendo con el ejemplo escribimos estas lí­neas en su interior:


Host miservidor
HostName punto.de.entrada.al.servidor.com
User miusuario
Port 1234
IdentityFile /home/user/.ssh/fichero.clave

Con este simple gesto, ahora podemos cambiar el comando ssh anterior por:

ssh miservidor

Casi nada la diferencia 🙂

Si investigas un poco el man de ssh_config seguro que encuentras muchas cosas de utilidad. Más adelante daré otro truco relacionado con este.

P. P: y como bien te recomendarí­a un administrador de sistemas, si encima añades el hostname a tu /etc/hosts, irá «volado»! Se ahorrará la resolución DNS

Enlaces:

Ir a una fecha mediante texto

Seguramente os habrá pasado alguna vez que os interesa cierta fecha, digamos por ejemplo «ahora mismo pero hace 3 dí­as» y queréis usarlo en un comando de consola. Pues bien, esto es realmente sencillo gracias a date.

Antes de entrar en detalle, un par de comentarios sobre el comando date. Lo primero es que si escribimos directamente date tendremos algo parecido a esto:
$> date
Sat Jan 2 22:47:41 CET 2010

Ahora bien, si queremos que muestre la fecha y hora en formato numérico (con guiones y dos puntos), tenemos:

$> date +"%Y-%m-%d %H:%M:%S"
2010-01-02 22:50:06

La otra opción interesante, que es la central de este post, es la opción -d. Con esta opción podemos definir el momento que queremos que date muestre y que sea distinto de ‘ahora’. Lo que seguramente no sabí­as es que se puede definir este momento en «modo texto» (en inglés, claro está).

Por ejemplo, si queremos la hora actual, pero hace tres dí­as usaremos:

$> date -d "3 days ago"
Wed Dec 30 22:54:44 CET 2009

¿Y si queremos las 6.30h de la mañana de hace 5 dí­as? Fácil:

$> date -d "06:00:00 3 days ago"
Wed Dec 30 06:00:00 CET 2009

Venga, juguemos un poco más!

¿Qué dí­a de la semana fue hace 1 año, 2 meses y 23 dí­as?

$> date +%a -d "1 year ago 2 months ago 23 days ago"
Fri

¿Es el mismo que hace 449 dí­as?

$> date -d "449 days ago"
Fri

Pues sí­ xDD

¿Las 7.30h de la mañana del pasado lunes?

$> date -d "07:30:00 last monday"
Mon Dec 28 07:30:00 CET 2009

También funciona para fechas futuras.Las 8.00h de la mañana de dentro de dos lunes (cuando se acaban las vacaciones :p):

$> date -d "08:00:00 2 monday"
Mon Jan 11 08:00:00 CET 2010

¿Qué dí­a de la semana será hoy el año que viene?

$> date +%a -d "year 2011"
Sun

En fin, ahora es sólo cuestión de echarle imaginación y tirar de manual y de timespec. ¡ínimo y suerte!

Eliminar entradas en el autocompletado de formularios en Firefox

Seguro que os ha pasado alguna vez que por error habéis metido un texto en un campo de un formulario web que no debí­a estar ahí­. Por ejemplo, la contraseña (o parte de ella) en el campo destinado para el nombre del usuario. Y luego es un problema porque cada vez que escribimos algo en ese campo, aparece ese texto que no queremos como posibilidad (ayuda de autocompletado).

Pues bien, en Firefox es muy fácil de solucionar.

Tan sólo tienes que estar en ese formulario y hacer que aparezcan las opciones, incluí­da la que no quieres. Entonces te pones encima de la opción que quieres borrar con el ratón (sin hacer click) y pulsas la combinación de teclas Shift + Supr (suprimir, tecla que generalmente está encima de los cursores, a la izquierda del teclado numérico).

Por ejemplo, aquí­ vemos el login de Twitter y queremos eliminar la segunda entrada, que está mal.

Debemos ponernos encima con el ratón, pero sin hacer click y entonces pulsar Shift + Supr

Debemos ponernos encima con el ratón, pero sin hacer click y entonces pulsar Shift + Supr

Tras esto, la opción desaparecerá y no tendrás que preocuparte más (hasta que metamos la pata de nuevo, jeje)

Buscar mensajes con adjunto en GMail

Un truco rápido y sencillo. ¿Cómo podemos buscar los mails que tienen un fichero adjunto (attachment)?

Pues muy sencillo, tienes que añadir en la barra de búsqueda de GMail la palabra has:attachment.

Es decir, si por ejemplo queremos buscar aquel mail en el que estaba la reserva del hotel y sabí­amos que la traí­a como adjunto, podemos introducir en el buscador:

reserva hotel has:attachment

Rápido y sencillo. Seguro que ahora encuentras las cosas más rápidamente.

Otros trucos: