Translate

jueves, 16 de febrero de 2017

Configurar Github para usarlo con SSH en Linux

Si usas Git y Github y no quieres estar introduciendo tu username y password cada vez que haces un push porque lo tienes configurado con HTTPS, lo mejor es que configures SSH, algunos IDEs, como Visual Studio, lo hacen de manera automática, en Linux es bastante sencillo, incluso en la página de Github te dicen como, sin embargo, para mi la mejor forma de aprender bien algo es intentar explicarlo 😃.

1- Generar una SSH Key
Lo primero es abrir una terminal, presiona ctrl+alt+t y generamos una Key SSH usando tus credenciales de Github, con el siguiente comando:
ssh-keygen -t rsa -b 4096 -C "tu_email_de_registro_en_github@email.com"
Luego sigues los pasos que te indican, ese comando genera un archivo que contiene tu configuración SSH usando el algoritmo RSA con un tamaño de clave de 4096 bits. Tu clave por defecto se almacena en ~/.ssh/id_rsa.pub

2- Añadir tu SSH Key a ssh-agent
Lo siguiente es añadir tu clave SSH a ssh-agent
ssh-add ~/.ssh/id_rsa
(Opcional) Verificamos si se añadió con:
ssh-add -L

sábado, 11 de febrero de 2017

Algoritmo Quicksort

Quicksort es uno algoritmos de ordenación más utilizados en las librerías bases de los lenguajes de programación, por su eficiencia y por su sencillez. Probablemente ya has escuchado o incluso conozcas este algoritmo, sin embargo siempre es bueno repasar lo básico porque, por ejemplo, si estas buscando empleo, es muy probable que en una entrevista de trabajo, especialmente empresas de EEUU, te pidan implementar Quicksort o te pregunten sobre alguno de los algoritmos básicos de ordenación o estructuras de datos como los Heaps.

Un poco de historia

Este algoritmo fue inventado por Tony Hoare a finales de los 60s y también es la base de otros como Quickselect -creado por el mismo Hoare- sin duda, es muy interesante y es uno de los métodos de ordenación “Linearítmicos” más eficientes que existen, sin embargo no siempre garantiza O(nlogn) en su peor caso la complejidad de este algoritmo es cuadrática, eso va a depender de la calidad de pivote que se elija. Ha sido muy estudiado, especialmente por Robert Sedgewick y utiliza la técnica de Divide and Conquer.

Descripción del algoritmo

Obviamente esta es una explicación mundana, como mencioné anteriormente el algoritmo se ha estudiado ampliamente, incluyendo pruebas matemáticas rigurosas. Sin embargo mi intención es que se pueda entender de manera fácil. Para una explicación más completa ver la referencia del libro de Sedgewick al final del post o buscar en Wikipedia. Anteriormente escribí sobre el Heapsort que garantizaba O(nlogn) Quicksort es diferente porque la eficiencia del algoritmo va a depender del elemento pivote.