Report inadequate content

Mac in Harecoded

Puppet Syntax highlighting under Textmate

Add some color to your puppet scripts opened in TextMate! Fire this in a terminal:

mkdir -p ~/Application\ Support/TextMate/Bundles
git clone https://github.com/masterzen/puppet-textmate-bundle.git Puppet.tmbundle
mv Puppet.tmbundle/ ~/Library/Application\ Support/TextMate/Bundles/
rm -fr Puppet.tmbundle

And voilà!

 -

Mantener la sesión abierta en iTerm (keep-alive)

Similarmente a como explicamos sobre cómo mantener la sesión activa en Putty, si queremos dejar la terminal abierta y que no se nos cierre con iTerm cada vez que vamos a hacer un café, comer, o liberar la próstata, hay que seguir estos sencillos pasos:

  • Abrir Bookmarks -> Manage Profiles
  • Desplegar Terminal Profiles y seleccionar Default
  • Marcar When idle, sends ASCII code

El valor de esta casilla por defecto es 0, pero lo podéis cambiar a cualquier otro código ASCII. Yo lo he dejado tal cual.

 -

Cómo expulsar un CD o DVD atascado en Mac

Hoy he puesto un DVD en la unidad del Macbook y a través de los botones de eject era imposible sacar el CD. Mi portátil no tiene el clásico agujero para meter un clip y sacarlo mecánicamente.

Lo que me ha funcionado finalmente es ejecutar desde la terminal:

drutil tray eject

Otras cosas que pueden funcionar son:

  • Probar de expulsarlo desde la "Utilidad de Discos" o desde el iTunes (aunque no se vea el disco en Finder).
  • Reiniciar el ordenador con la tecla Option pulsada, y cuando aparezca el menú para seleccionar dispositivo de arranque, pulsar el botón del teclado de expulsar el disco.
  • Tirar el ordenador por la ventana

Autocompletar hosts al escribir ssh en la terminal

Esta mañana mi compañero Borja me ha enseñado un pequeño truquito para olvidarse de los bookmarks en la terminal. Se trata de autocompletar el comando ssh con los hosts conocidos.

De este modo, cuando escribes ssh en la terminal puedes darle al tabulador para que sugiera o escriba el resto de host por ti. Ejemplo:

 -

Existen múltiples maneras de hacer esto, leyendo configs con puertos y otras barbaridades, pero esta es realmente simple y efectiva y sin duda la que más me gusta. Lo que hace es leer el fichero de hosts conocidos (~/.ssh/known_hosts) y sugerirlos en el autocomplete. Por si no recuerdas qué guarda ese fichero son todos aquellos servidores que verificaste a la pregunta tipo:

The authenticity of host 'manolete (172.22.195.142)' can't be established.
RSA key fingerprint is 7d:00:92:5f:c9:2b:c7:f2:37:fc:5e:40:ce:0e:4d:d1.
Are you sure you want to continue connecting (yes/no)?

El comando, que deberías copiar y pegar en tu ~/.bash_profile es este:

complete -W "$(while read line; do echo ${line%%[, ]*}; done \
< ~/.ssh/known_hosts)" ssh

Ojo, esta es la versión de Mac.

A ahorrar tiempo!

Activar y cambiar los colores de la terminal + Prompt

Ya uses iTerm, Terminal o cualquier otra herramienta en Mac, para ver y tunear los colores de tu terminal basta con editar el fichero ~/.bash_profile e incluir lo siguiente:

export CLICOLOR='true'
export LSCOLORS="gxfxcxdxbxegedabagacad"

Y conseguirás algo parecido a esto: TAGS:

La primera línea activa los colores, la segunda dice qué colores usar. Cuando guardes el fichero y abras de nuevo la terminal ya verás los colores. Si no te gustan siempre puedes poner los tuyos usando esta referencia:

a  black
b  red
c  green
d  brown
e  blue
f  magenta
g  cyan
h  light grey
A  block black (gris oscuro)
B  bold red
C  bold green
D  bold brown (amarillo oiga)
E  bold blue
F  bold magenta
G  bold cyan
H  bold light grey
x  color por defecto

Además, puedes cambiar la apariencia y modificar tu prompt añadiendo a continuación en tu .bash_profile alguna de estas líneas de ejemplo:

# Referencia de variables Prompt:
# \u Username, \h Host, \w Path, tput color definition

# Ejemplo 1:
# export PS1='\[$(tput setaf 3)\]\u@\h:\[$(tput sgr0)$(tput setaf 5)\]\w\[$(tput sgr0)$(tput setaf 2)\] \[$(tput sgr0)\]$ '

#Ejemplo 2:
# export PS1='\[$(tput setaf 7)\]\u@\[$(tput setaf 2)\]\h:\[$(tput sgr0)$(tput setaf 4)\]\w\[$(tput sgr0)\]$ '

#Ejemplo 3, Minimalista (solo path en color):
# export PS1='\[$(tput sgr0)$(tput setaf 4)\]\w\[$(tput sgr0)\]$ '

Descomenta la línea con el export (quitar la almohadilla #) que quieras probar y comenta el resto para ver los distintos ejemplos de prompt. Recuerda que debes volver a abrir la terminal o abrir una pestaña nueva para ver los cambios aplicados si es que los has puesto en bash_profile. Para más comodidad siempre puedes ejecutar los comandos en la terminal y luego al encontrar el perfecto guardarlo en el fichero.

Conectar por SSH sin password (autenticación de clave pública)

 TAGS:

Esta es una de aquellas cosas que uno hace una y otra vez y al final pierde 10 minutos intentando recordar los comandos o buscando la información.

Para conectar a un servidor remoto por SSH sin usuario ni contraseña todo lo que hace falta es compartir una clave entre cliente y servidor. Los pasos son "mu" sencillos:

  1. Asegurarse que la carpeta .ssh existe en el servidor al que nos queremos conectar
  2. Crear una clave RSA pública en la máquina cliente (la que se conecta):
    ssh-keygen -t rsa
    Cuando se te pida por un password, dale al enter sin poner ninguno (este es el propósito del artículo, sin passwords)
  3. Copiar la clave pública en el servidor:
    scp ~/.ssh/id_rsa.pub usuario@servidor.com:.ssh/authorized_keys2

    Puedes omitir la parte usuario@ si te conectas con el mismo usuario.

Y esto es todo amigos. En la siguiente conexión por SSH ya no se pedirá de nuevo el password.

Importante:

A partir de este momento, si alguien robara la clave pública que has guardado en ~/.ssh/id_rsa tendría acceso completo a tu servidor. Más vale que la protejas bien :)

Si dejas un password en la autenticación RSA puede ser una buena idea desactivar en el servidor el acceso SSH vía login/password y dejar sólo autenticación por clave.

Comando `tree` para Mac

Existe una utilidad llamada "tree" en Windows y Linux que sirve para ver un listado de directorio en un formato ASCII un poco más agradable a la vista. Si no quieres bajarte los MacPorts para esta pequeña utilidad lo más fácil es crear un script de una línea y enlazarlo en /bin para poder llamarlo directamente.

El comando en cuestión es este:

find . -print | sed -e 's;[^/]*/;|--;g;s;--|; |;g'

Ahora, para utilizarlo a troche y moche basta con pegar su contenido en un fichero en cualquier ubicación. Por ejemplo, en mi carpeta de usuario de scripts (/Users/alombarte/scripts/tree.sh):

#!/bin/bash
find . -print | sed -e 's;[^/]*/;|--;g;s;--|; |;g'

Y entonces, para poder escribir allí donde queramos el comando tree hacemos un enlace simbólico:

sudo ln -s /Users/alombarte/scripts/tree.sh /bin/tree

Un ejemplo de la salida es este:

 

|--a1
| |--a11
| | |--fichero_en_a11.txt
| |--fichero_en_a1.txt
|--a2
| |--a21

Así de simple :)

How to backup your full Flickr account (script)

Why you would like to copy all your images stored at Flickr to your computer? Well, maybe you want to browse them later offline, maybe you want to stop paying your PRO account, or to keep them just in case...

In any case, Flickrtouchr is a simple command-line script to backup Flickr. You don't need to know python or programming at all. A couple of lines in the Terminal and that's it.

After downloading and uncompressing the .py script all you need is to:

Create a directory, e.g: A folder called "Flickr" in your Home dir:

mkdir ~/Flickr

And then call the script:

python flickrtouchr.py ~/Flickr

After this a browser will be opened and Flickr will ask you to authorize Flickrtouchr, and that's it!

Now maybe you want to add this line to your crontab so you can run it periodically. The script will check if the files exists to prevent continuous download.

How to create a patch and apply it with subversion

If you want to create a patch with svn you only have to type in the terminal something like:

svn diff yourproject > yourproject.patch

Where yourproject is the folder containing the modified source code.

Then, to restore the patch (apply the changes stored in patch in a new working copy), copy the patch file yourproject.patch in the machine where you want apply the patch and "cd "to the parent folder containing the yourproject folder (not inside yourproject). Then type:

patch -p0 -i /path/to/yourproject.patch

If you do not respect the same hierarchy when creating and applying the patch then you'll have to play around with the "p0" parameter (gives the entire file name unmodified). Of course the patch command is not related to SVN and you can use it in many other environments.

Best distraction-free writing programs

I am not a writer, but as many other mortals a lot of times I need to write long documents or put my ideas alltogether. For anyone who works with a computer and needs to write text in a non-distracting environment these tools will be very useful.

These programs usually are full-screen and only let you see the text you are typing, and usually plain text (without any formats). It might sound simple or even ridiculous, but I am more productive when I stop receiving notifications and being tempted of clicking on that little red number showing unread email or any other procastinators.

Here is the list of distraction-free software for both Windows and Mac.

Distraction-free software for Mac

This is the environment where I use this kind of programs the most.

WriteRoom

I used WriteRoom for free a couple of years ago, now the product has evolved and is commercial but surely the most complete of all.

Ommwriter

It comes in two flavours Ommwriter Dana I and Ommwriter Dana II. The first one is free, the second one is commercial, but you can pay the amount you want, minimum $4.11 I do use this program as my personal choice. Here is a video, and also lets you understand what all this programs are about:

Other programs

I haven't fully tested these ones, but they do the same:

 If you need to write a whole book, with images, chapters and so on an interesting tool is Scrivener (site, trial download)

Distraction-free software for Windows

If you are looking for a distraction-free writing software for Windows, have a look to: