martes, 18 de octubre de 2016

[Bitbucket] Configurar multiples identidades SSH en Linux


Toda la información reproducida se puede encontrar en la sección Configure multiple SSH identities for GitBash, Mac OSX, & Linux de la documentación  de Bitbucket.
https://confluence.atlassian.com/bitbucket/configure-multiple-ssh-identities-for-gitbash-mac-osx-linux-271943168.html

Paso 1: Crear una identidad

Para crear una nueva identidad vamos a utilizar el comando: ssh-keygen.

En el siguiente ejemplo la identidad se va a llamar red-ribon-c18-project: 
ssh-keygen -f ~/.ssh/red-ribon-c18-project -C "red-ribon-c18-project"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/eltortuganegra/.ssh/red-ribon-c18-project.
Your public key has been saved in /home/eltortuganegra/.ssh/red-ribon-c18-project.pub.
The key fingerprint is:
f8:54:08:6f:6f:d4:59:73:45:b1:4d:df:49:f5:aa:10 red-ribon-c18-project
The key's randomart image is:
+---[RSA 2048]----+
|      .       o+X|
|       o . . o.+B|
|        + E o  o=|
|       o + .   . |
|      . S +   .  |
|       o . . .   |
|        .   .    |
|                 |
|                 |
+-----------------

Podemos comprobar que la clave se ha creado correctamente:
ls -lah ~/.ssh
-rw-------  1 eltortuganegra eltortuganegra 1.7K Oct 18 13:37 red-ribon-c18-project
-rw-r--r--  1 eltortuganegra eltortuganegra  403 Oct 18 13:37 red-ribon-c18-project.pub
  

Con este procedimiento podemos crear tantas identidades como necesitemos.

Paso 2: guardar la key en Bitbucket

Para poder acceder a esta funcionalidad hay que tener los permisos suficientes. Una vez logados en Bitbucket y seleccionado el proyecto objetivo hay que ir a la sección de "settings" y allí buscar en el submenú "deployment keys".

Aquí podremos ver la página de "deployment keys" y tendremos la posibilidad de añadir nuevas.

Para añadir una nueva pinchamos el botón "add key" y rellenamos el formulario con un nombre descriptivo y con el contenido de la "key.pub". 

Paso 3: crear un fichero de configuración SSH

El fichero de configuración va contener la configuración las identidades a las cuales las podemos definir un alias. El fichero de configuración se encuentra en:
~/.ssh/config
En el caso de que no exista se crea con un editor de texto.
Aunque las opciones de configuración son varias, en este ejemplo se va a utilizar la siguiente plantilla:
Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity
Por lo que en nuestro ejemplo la configuración quedaría:
Host red-ribon-c18-project
HostName bitbucket.org
IdentityFile ~/.ssh/red-ribon-c18-project
 En el caso de tener más de una identidad esta se añade al fichero. En el ejemplo:
Host red-ribon-c18-project
HostName bitbucket.org
IdentityFile ~/.ssh/red-ribon-c18-project

Host red-ribon-c17-project
HostName bitbucket.org
IdentityFile ~/.ssh/red-ribon-c17-project

Paso 4: configurar el repositorio de git

Una vez creada la clave de la identidad hay que configurar el repositorio para que utilice esta clave. Para ello hay que editar el archivo:
/path/project/.git/config
Si el proyecto estuviera ubicado en:

/var/www/c18
Tendriamos que editar el archivo:
/var/www/c18/.config/config

Bitbucket dispone de varias maneras de identificar la url del repositorio por lo que, dentro del archivo, hay que sustituir la variable url por el siguiente formato:
url = git@alias:<accountname>/<reponame>.git

Por lo que si el projecto se encuentra en la cuenta "red-ribon"  y el projecto es c18" la url quedaría:
url = git@red-ribon-c18-project:red-ribon/c18.git
Nota: ojo a los ":" que pueden dar algún quebradero de cabeza (true history).



miércoles, 4 de mayo de 2016

RFC for the 7XX Range of HTTP Status codes - Developer Errors

Me he cruzado con estos códigos de estado y no me ha quedado otra que compartirlo con todos aquellos compañeros de batalla y partirnos de risa con algunos.

Fuente: RFC for the 7XX Range of HTTP Status codes

At Railscamp X it became clear there is a gap in the current HTTP specification.
There are many ways for a developer to screw up their implementation, but no code to share the nature of the error with the end user.
We humbly suggest the following status codes to be included in the HTTP spec in the 7XX range.

  • 70X - Inexcusable
    • 701 - Meh
    • 702 - Emacs
    • 703 - Explosion
    • 704 - Goto Fail
    • 705 - I wrote the code and missed the necessary validation by an oversight (see 795)
  • 71X - Novelty Implementations
    • 710 - PHP
    • 711 - Convenience Store
    • 712 - NoSQL
    • 718 - Haskell
    • 719 - I am not a teapot
  • 72X - Edge Cases
    • 720 - Unpossible
    • 721 - Known Unknowns
    • 722 - Unknown Unknowns
    • 723 - Tricky
    • 724 - This line should be unreachable
    • 725 - It works on my machine
    • 726 - It's a feature, not a bug
    • 727 - 32 bits is plenty
  • 73X - Fucking
    • 730 - Fucking Bower
    • 731 - Fucking Rubygems
    • 732 - Fucking Unic:hankey:de
    • 733 - Fucking Deadlocks
    • 734 - Fucking Deferreds
    • 735 - Fucking IE
    • 736 - Fucking Race Conditions
    • 737 - FuckThreadsing
    • 738 - Fucking Bundler
    • 739 - Fucking Windows
  • 74X - Meme Driven
    • 740 - Computer says no
    • 741 - Compiling
    • 742 - A kitten dies
    • 743 - I thought I knew regular expressions
    • 744 - Y U NO write integration tests?
    • 745 - I don't always test my code, but when I do I do it in production
    • 746 - Missed Ballmer Peak
    • 747 - Motherfucking Snakes on the Motherfucking Plane
    • 748 - Confounded by Ponies
    • 749 - Reserved for Chuck Norris
  • 75X - Syntax Errors
    • 750 - Didn't bother to compile it
    • 753 - Syntax Error
    • 754 - Too many semi-colons
    • 755 - Not enough semi-colons
    • 756 - Insufficiently polite
    • 757 - Excessively polite
    • 759 - Unexpected T_PAAMAYIM_NEKUDOTAYIM
  • 76X - Substance-Affected Developer
    • 761 - Hungover
    • 762 - Stoned
    • 763 - Under-Caffeinated
    • 764 - Over-Caffeinated
    • 765 - Railscamp
    • 766 - Sober
    • 767 - Drunk
    • 768 - Accidentally Took Sleeping Pills Instead Of Migraine Pills During Crunch Week
    • 769 - Questionable Maturity Level
  • 77X - Predictable Problems
    • 771 - Cached for too long
    • 772 - Not cached long enough
    • 773 - Not cached at all
    • 774 - Why was this cached?
    • 775 - Out of cash
    • 776 - Error on the Exception
    • 777 - Coincidence
    • 778 - Off By One Error
    • 779 - Off By Too Many To Count Error
  • 78X - Somebody Else's Problem
    • 780 - Project owner not responding
    • 781 - Operations
    • 782 - QA
    • 783 - It was a customer request, honestly
    • 784 - Management, obviously
    • 785 - TPS Cover Sheet not attached
    • 786 - Try it now
    • 787 - Further Funding Required
    • 788 - Designer's final designs weren't
    • 789 - Not my department
  • 79X - Internet crashed
    • 791 - The Internet shut down due to copyright restrictions
    • 792 - Climate change driven catastrophic weather event
    • 793 - Zombie Apocalypse
    • 794 - Someone let PG near a REPL
    • 795 - #heartbleed (see 705)
    • 797 - This is the last page of the Internet. Go back
    • 799 - End of the world