Por razones que no vienen al caso, ha llegado a mis manos un Mac nuevecito. Aún oliendo a nuevo. Aunque eso a mi lado friki le encanta, un Mac recién sacado de la caja no es exactamente el entorno más productivo para un desarrollador.

Tengo que admitir que mi perfil es un poco particular. Me paso el 70% del tiempo entre el VIM y la consola. No uso ni un super IDE ni un cliente de git visual. Soy, por así decirlo, de la vieja escuela.

Quiero dejar claro desde aquí que no es mi intención entrar a explicar cómo se usan cada una de las herramientas o utilidades que aquí pueda nombrar. Si tienes curiosidad sobre alguna en particular, estaré encantado de dar más detalles si me dejas un comentario con tus dudas :).

Dicho eso, mi entorno es el siguiente:

  • Prompt de consola modificado para mostrar información extra sobre mis repos de Git.
  • MacVim con varios plugins que uso en mi día a día.
  • Scripts para vitaminar Git.
  • Utilidad que me ayuda a copiar mis claves ssh en mis servidores remotos.
  • La configuración de la app terminal con la que me siento más cómodo.
  • Vagrant para montar los entornos de desarrollo.
  • NodeJS y NPM

Vayamos por partes. Primero instalo todo el software necesario, teniendo encuenta que mi versión de MacOs es Yosemite:

  1. MacVim: Básicamente mete VIM dentro de una ventana del Finder y así podemos hacer cosas chulas como usar el ratón o copiar y pegar usando los teclados del sistema operativo.
  2. Git
  3. Git Extras: Es un conjunto de utilidades que vamos a usar para hacer nuestro trabajo con Git más productivo. La instalación es muy simple y siempre uso la modalidad de una línea de código.
  4. Brew: Gestor de paquetes en Mac. Si has trabajado con Linux piensa en él como en Apt o Yum. De hecho, hay un modalidad de instalación de git-extras con Brew.
  5. Ngrok: Esta es una pequeña utilidad que nos ayudará a compartir nuestro trabajo WiP (en localhost) con alguien que no se pueda conectar a nuestra red local.
  6. Vagrant: Gestor de máquinas virtuales. Gestiona la creación y provisión, y algunas cosillas más.

Ahora que ya lo tengo todo bajado me lío a ejecutar los instaladores o arrastro las apps a mi carpeta Application. Nada especial en todo esto. Lo único especial que hago es copiar los binarios de macvim y ngrok a mi path para poder ejecutarlos desde la consola.

$ cd
$ sudo mv ~/Downloads/ngrok /usr/local/bin/
$ sudo mv ~/Downloads/MacVim-snapshot-74/mvim /usr/local/bin/

Una vez tengo todo el software bajado e instalado es el turno de la personalización.

(1) Quiero que mi terminal luzca exactamente así: terminal

Lo más minimalista posible, pero dándome toda la información que necesito en un golpe de vista. En la línea superior tenemos el usuario, seguido por el nombre de la máquina y, después de un espacio, el directorio de trabajo. Justo debajo, el símbolo del prompt (λ) y, antes de él, si es que estoy en un repositorio de Git, la rama actual en la que estoy trabajando.

Para conseguir todo esto guardo el fichero .git-completion.sh en mi home. Lo podéis encontrar en este gist y luego agrego estas líneas a mi fichero ~/.bash_profile:

# GIT autocompleted
source ~/.git-completion.sh  
# prompt
PS1='\[email protected]\h \w\n\[\033[01;32m\]$(__git_ps1 "(%s) ")\[\033[01;31m\]λ\[\033[01;37m\] '  

Crea un fichero .bash_profile en tu home, si no está.

Mi configuración de la aplicación Terminal la podéis ver en esta captura de pantalla.

(2) Ahora es el turno de tunear a VIM para que quede como a mí me gusta. Lo primero que hago es copiar mi fichero .vimrc en mi home. Lo podéis encontrar en este gist. Luego instalo mis plugins básicos usando siempre la misma web vimawesome:

Estos no son los únicos que tengo instalados. Pero sí son los que siempre recuerdo que tengo que instalar. Y siempre los instalo usando Pathogen.

En realidad, yo no instalo todo desde cero. Tengo una copia de mi directorio ~/.vim en Dropbox.

(3) Alias y configuraciones que más uso. En el fichero ~/.gitconfig tengo los siguientes alias:

[core]
    editor = "mvim -f"
[color]
  branch = auto
  diff = auto
  status = auto
[color "branch"]
  current = yellow reverse
  local = yellow 
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
[color "status"]
  added = yellow
  changed = green
  untracked = cyan
[alias]
  st = status
  ci = commit
  br = branch
  co = checkout
  df = diff
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative

Y en mi .bashrc:

alias ls='ls -Gpal'  
alias ss="/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background &"  

¿A que te estás preguntando qué hace ss? ;).

También me gusta meter en mi fichero /private/etc/hosts las IP de mis servidores para no tener que recordarlas. Así, al final del fichero tengo entradas del tipo:

145.23.21.42 carlosvillu.dev  

que seguramente apunte a algún Droplet de DigitalOcean o a alguna máquina de Kimsufi, para luego poder hacer algo como:

$ ssh [email protected]

Esto me lleva a configurar mi acceso a los servidores con ssh sin usar password. Para ello instalo ssh-copy-id y me aseguro de tener mi llave pública en todos mis servidores.

Otra cosa que suelo hacer para ahorrar algo de tiempo a la hora de entrar en los servers desde mi Mac, es poner alias en mi bashrc del tipo:

alias ovh="ssh [email protected] $1"  

Así, con solo escribir ovh en la consola ya estaría en mi máquina remota. O escribiendo ovh "[cualquier comando bash aquí]" lo ejecuto remotamente.

$ ovh "ls -pal"

// Listado de ficheros en mi servidor remoto!!!

(4) Por último, instalo NodeJS. Para ello siempre uso nvm:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.23.3/install.sh | bash
$ source ~/.bash_profile
$ nvm install 0.12
$ nvm alias default 0.12

Yo he tenido que hacer source ~/.bash_profile, pero puede que tú tengas que hacerlo del fichero ~/.bashrc. Solo tienes que leer la salida del script de instalación, que te dará los detalles.

Rápido y simple. Ahora deberías tener NodeJS y npm instalados. para comprobarlo, haz algo tan simple como:

$ node -v
$ npm -v

Si quieres ser más productivo trabajando con npm, te recomiendo que ejecutes npm completion así podrás autocompletar los comandos de npm fácilmente.

Algún avispado lector se podrá preguntar, ¿por qué instala NodeJS si luego usa Vagrant para el desarrollo? Pues tienes toda la razón, pero aun así siempre lo instalo. Y no solo eso, sino que además también tengo una lista de paquetes globales que siempre instalo:

Creo que cada una de esas utilidades se merece un post. Cómo poner en producción una aplicación de NodeJS, cómo tener un flujo de desarrollo simple y automático, cómo distribir la app en distintos entornos. Pero bueno poco a poco.

Como dije, no he tratado de explicar por qué uso tal o cual programa ni cómo los uso. Solo quería crear una guía de las cosas que suelo hacer para tener mi Mac up&running. Claro que esto es un proceso que nunca se acaba y siempre ando cambiando cosas, pero eso tiene más que ver con lo friki que soy que con la parte productiva.

Si alguien se pregunta si no instalo boot2docker, la respuesta es NO. Hasta el día de hoy siempre que he usado Docker, ha sido mediando Vagrant

Si te ha gustado este post, difunde la palabra. Tampoco dudes en dejar comentarios u observaciones. ¡Gracias! :)

Suscríbete a mi lista de correo

* Campos obligatorios