Conectarse a RDS MySQL de Amazon con MySQL Workbench

Aunque la mayoría de las veces prefiero el terminal para manejar mis servidores, a la hora de manejar base de datos y realizar Querys prefiero utilizar MySQL Workbench, no siempre funciona de lo mejor pero la mayoría de las veces hace un gran trabajo.

Aquí vamos a ver como conectarnos con nuestra base de datos RDS de Amazon a través de MySQL Workbench con un tunel SSH. Esto nos ahorrará una gran cantidad de trabajo.

Los pasos son:

1. Abrir MySQL Workbench y crear una nueva Conexión

Hay dos formas o haces click en el botón de + al lado de MySQL Conections o vas al menú de Database>Manage Connections y seleccionas new abajo a la derecha a la izquierda tendrás varias pestañas selecciona Connection. Verás una ventana como esta y en el Connection Method seleccionamos Standard TCP/IP over SSH

Connection Name: Colocamos como queremos que se llame la conexión para indentificarla en MySQL Workbench.

Nueva Conexión MySQL Workbench

2. Crear la conexión con la Base de Datos

Cómo nos vamos a conectar a través de nuestra instancia de EC2 debemos colocar en SSH Hostname el Public DNS de la instancia de EC2.

Para encontrar este Public DNS debemos ir a la consola de Amazon  https://console.aws.amazon.com/ abrir el menú de instancias EC2 y seleccionar la instancia con la que nos conectamos normalmente vía SSH abajo veremos un campo de Public DNS parecido a este:

Public DNS EC2 Amazon

Copiamos el Public DNS y lo colocamos en SSH Hostname.

SSH Username: colocamos el nombre del usuario que utilizamos para conectarnos a la instancia de EC2, si por ejemplo es una instancia Ubuntu el usuario por defecto es ubuntu.

SSH Key File: Vamos  utilizar el archivo PEM que usamos como Key para conectarnos a EC2, en SSH Key File hacemos click en … para buscar el archivo y seleccionamos el archivo PEM (nuestra llave privada) que descargamos a la hora de crear la instancia de EC2.

MySQL Hostname: Aquí debemos colocar el Endpoint, que sería la instancia de base de datos creada en Amazon RDS. Para encontrar este Hostname debemos ir a la consola de Amazon  https://console.aws.amazon.com/ abrir el menú de instancias de RDS y seleccionar la instancia con la que nos queremos conectar veremos algo como esto:

Endpoint RDS Amazon

Copiamos toda esa dirección sin los :3306

MySQL Server Port: El puerto por defecto es 3306. Si lo cambiaste en tu configuración debes poner el nuevo puerto aquí.

Username: Es el nombre del usuario Master de la base de datos cuando creaste la instancia de RDS. Aparece en el Username de la consola de Amazon en la instancia de RDS por si lo olvidaste.

Password: Es la clave del usuario Master de la base de datos cuando creaste la instancia de RDS Amazon.

Una vez que llenemos todos los datos presionamos el botón de Test Connection y deberíamos ver un mensaje como el siguiente:

Untitled window_013

Luego presionamos OK y estamos listos para empezar a utilizar nuestra conexión.

3. Manejar la instancia con MySQL Workbench (Opcional)

Si queremos ser capaces de detener, iniciar y ver los logs de la instancia desde Workbench debemos hacer un paso adicional.

Vamos al menú de Database>Manage Connections, seleccionamos la conexión que acabamos de crear y vamos a la pestaña de Remote Managment y ya debería estar casi lleno comprobamos que:

Hostname: es el Public DNS de nuestra instancia EC2.

Username: El usuario que utilizamos para conectarnos vía SSH a nuestra instancia EC2.

Marcamos la opción de Authenticate Using SSH Key y buscamos el archivo .pem de clave privada de nuestra instancia EC2.

Manage Server Connections_017

Cuando este listo hacemos click en Close y ahora podemos ver habilitadas las opciones de nuestra instancia RDS:

Selection_018

Ten cuidado con estas opciones ya que si detienes la instancia puedes hacer que deje de funcionar tu aplicación Web.

Eso es todo, espero que les sirva, cualquier duda o sugerencia por favor deja un comentario.

 

 

Cómo hacer Pull de una Rama Remota con Git

Este es otro mini tutorial de git, en este caso cómo podemos “descargar” o hacer pull de una rama remota. Supongamos que queremos descargar una rama que se llama rama_nueva para esto se necesita sólo una línea:

git checkout -b rama_nueva origin/rama_nueva

Con esto ya se descargará nuestra rama_nueva y ya estaremos listo para editarla localmente.

Si da un error de este estilo:

fatal: git checkout: updating paths is incompatible with switching branches/forcing
Did you intend to checkout ‘origin/‘ which can not be resolved as commit?’

Entonces es que necesitas ejecutar primero:

git pull

Y luego la línea de arriba.

Eso es todo espero que les sirva, cualquier duda deja un comentario.

Cómo borrar una rama local y remota en Git

Es muy sencillo eliminar una rama en git con una simple línea de comandos:

Eliminar Rama Local

git branch -D nombre_rama

Por supuesto sustituyendo nombre_rama por la rama a eliminar. La opción -D elimina la rama sin importar el estatus en que se encuentre el merge, así que utilizalo con cuidado.

Eliminar Rama Remota

git push origin --delete nombre_rama

Se eliminará la rama en nuestro repositorio remoto. Eso es todo, cualquier duda pueden escribir un comentario.

Cómo deshacer (undo) cambios en Git

Errar es de humanos, y nada nos hace más humanos que estar a las 2 de la mañana programando y equivocarnos en algún commit en git que no queríamos hacer o que simplemente nos faltó algo.

Pero gracias a la flexibilidad que tiene git y a que está pensado por programadores es muy fácil deshacer un commit.

Tenemos 3 escenarios vamos viendo uno a uno:

Para estos ejemplos vamos a suponer que tenemos tres commit A-B-C siendo C el último commit.

1. Queremos deshacer el último commit para modificar algo o agregar alguna línea que nos faltó, el equivalente al Ctrl+Z (o Cmd+Z) de git. Para esto simplemente ejecutamos el siguiente comando:

git reset --soft HEAD^1

En el caso que utilices MS Windows tienes que ejecutar git reset –soft HEAD~1 (nota el cambio de ^ por ~)

Después de ejecutar este comando quedaría A-B y los archivos con los cambios.

Con esto eliminamos el commit pero permanecen los cambios que habías realizado, luego de que termines de editar lo que te había faltado vuelves a hacer el commit como siempre lo haces. Algo como:

git add .
git commit -m "Mensaje explicativo del commit"

2. En el último commit que hiciste no merece existir más y quieres eliminarlo de la faz de la tierra y que nadie se entere de lo que hiciste jamás, no quieres guardar ningún cambio de este último commit. Entonces para esto ejecutas:

git log
git reset --hard HEAD^1

En el caso que utilices MS Windows tienes que ejecutar git reset –hard HEAD~1 (nota el cambio de ^ por ~)

En este caso quedaría A-B y C ni los últimos cambios existen.

Con esto se eliminará el último commit por completo y es como si nunca hubiera existido, por qué el git log? es una medida de seguridad si por casualidad te arrepientes de haberlo eliminado porque justo en ese último commit estaba la línea que hacía que todo funcionara puedes recuperarlo ejecutando:

git checkout -b nombre_nueva_rama sha_del_commit_que_destruiste

El sha_del_commit_que_destruiste es el número que aparece al lado de la palabra commit cuando ejecutas git log por ejemplo commit 345f7115ce3e1e611f41cd7492ed0e69945e858d. Estamos creando una nueva rama después que termines de hacer los cambios puedes hacer un merge con la ramas que estás trabajando.

3. Ya el commit está en el repositorio público, para esto la mejor práctica no es eliminar el commit sino crear un nuevo commit revirtiendo los cambios del último. Ejecutamos:

git revert HEAD

Ahora los cambios ya han sido deshechos y están listo para que hagas commit:

git commit -m "Revirtiendo últimos cambios"
git push

Eso es todo realmente muy fácil de corregir esos errores que nos pasan a todos, si tienen alguna pregunta, duda o recomendación por favor déjenla en los comentarios y con gusto les responderé.

Cómo instalar Sublime Text 3 en Ubuntu a través de PPA

Sublime Text 3

Sublime Text es uno de los mejores editores de código que hay actualmente y yo personalmente lo utilizo todos los días. Si quieres instalar Sublime Text 3 en Ubuntu a través de PPA para que se mantenga actualizado automáticamente lo puedes hacer ejecutando los siguientes comandos en la terminal:

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Gracias a los de http://www.webupd8.org/ ya tenemos Sublime Text 3 instalado y listo para usar.

Si no quieres utilizar ppa o no utilizar Ubuntu, simplemente puedes ir a la página de descarga de Sublime Text y bajar la versión que quieras, http://www.sublimetext.com/3 hay versiones para MS Windows, OS X y Ubuntu y otras distribuciones de Linux.

Tengo una Idea y ¿Cómo diablos comienzo?

El Jueves 7 de Noviembre se va a estar realizando el primer evento en línea (vía Google Hangout) de la comunidad de emprendedores de habla hispana en el mundo. La temática va a ser en torno a la gran interrogante inicial que tiene o al menos pudiese tener un emprendedor, y es que finalmente mucha gente aún sin saber que es capaz de ser un emprendedor, ese que haga la diferencia, puede estar en la etapa en que se su pregunta es: Tengo una idea y ¿Cómo diablos comienzo?

Como invitado especial tendremos a Claudio Barahona Jacobs, Gerente de Negocios de Wayra Chile. “Fundó su primera empresa a los 18 años: una reconocida agencia de eventos tecnológicos. Tras terminar Ingeniería Civil Industrial en la U. de Chile, decidió que su gran fortaleza era apoyar y motivar a otros a emprender, en la labor de ejecutivo de proyectos tecnológicos en la incubadora Octantis de la U. Adolfo Ibañez. Luego tuvo un exitoso paso por la División de Innovación del Ministerio de Economía, tomando las funciones de Coordinador de Emprendimiento y Capital Humano. Hoy pertenece al equipo de Movistar Innova, fundando el Centro Movistar Innova y liderando el programa Wayra en Chile.” fuente LinkedIn

El evento va a ser moderado por Oswaldo Álvarez (@ozalvarez) Consultor, Emprendedor y Fundador de la Comunidad de Emprendedores de Habla Hispana, Juan Sapene CEO de DigitalConexión, Emprendedor y Consultor, Alejandro Quintero Gerente de Proyectos y Emprendedor y Olivers De Abreu CEO en Vensign.

El evento es totalmente gratuito y será a las 6:30pm Chile, 6:30pm Argentina, 4:30pm Colombia, 5:30pm Venezuela, 4:30pm Miami, 2:30pm San Francisco. Para confirmar la asistencia y obtener más información del hangout pueden hacerlo en los siguientes enlaces:

Google+: https://plus.google.com/u/0/events/c00cje6m35vf4bm5q9ube3akddo

Facebook: https://www.facebook.com/events/610346615692633/

 

Si quieres saber más información de la comunidad, te esperamos en la red social de tú preferencia:

@emprenderhhm

Google+ Page

Google+ Comunidad

Website (Tumblr)

Facebook Page

Facebook Group

http://emprenderhhm.com/post/65399170997/tengo-una-idea-y-como-diablos-comienzo

Como cambiar el mensaje de Commit en Git antes de hacer Push

Si a media noche te equivocas en el mensaje de commit de git o simplemente cometiste algún error ortográfico o descriptivo y te das cuenta ante de hacer push al repositorio es muy fácil reparar el error

Simplemente ejecuta:

git commit --amend -m "Nuevo mensaje de commit"

Eso es todo después pudes hacer push y todo como nuevo.

Qué pasa si ya hiciste push y te equivocaste en el mensaje de commit?, Hay formas de cambiarlo pero si es un repositorio compartido no es para nada recomendado y escapa del alcance de este pequeño tip.

Puedes ver una respuesta relacionada a esto en StackOverflow:

http://stackoverflow.com/questions/179123/how-do-i-edit-an-incorrect-commit-message-in-git

Como Instalar PHPUnit con PEAR en Ubuntu

Este es un pequeño tutorial de como instalar PHPUnit que es un framework para realizar pruebas de nuestro código PHP.

Cómo prerequisito tenemos que tener instalado PEAR, viene preinstalado en muchas de las distribuciones de Linux y es fácil de instalar en MS Windows y MAC OS.

En Ubuntu para instalar PEAR ejecutamos

sudo apt-get install pear

Y luego lo actualizamos ejecutando:

sudo pear upgrade pear

Instalar PHPUnit

Primero instalamos el paquete de phpunit de Ubuntu ejecutando:

sudo apt-get install phpunit

Luego ejecutamos las siguientes líneas en el terminal para agregar los canales de dependencia de PHPUnit:

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover components.ez.no
sudo pear channel-discover pear.symfony.com

Por último instalamos PHPUnit ejecutando:

sudo pear install --alldeps phpunit/PHPunit

Para comprobar que PHPUnit está instalado correctamente podemos ejecutar:

phpunit –version

phpunit --version
PHPUnit 3.7.19 by Sebastian Bergmann.

Les debería aparecer algo como la última línea la versión podría variar.

Con esto ya tenemos instalado PHPUnit y podemos comenzar a probar.

Cualquier duda o sugerencia por favor dejen un comentario.

Ubuntu Apache 2: Cómo cambiar el directorio por defecto

El directorio por defecto de apache2 en Ubuntu es /var/www. Aquí es donde normalmente guardamos los archivos de nuestros sitios.

Si queremos cambiar este directorio por otro podemos utilizar los siguientes pasos, estos son realizados en Ubuntu pero deberían servir para cualquier otra distribución.

Crear un nuevo sitio

Primero creamos una copia del sitio por defecto ejecutando en el terminal:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/misitio

Donde misitio es el nombre del nuevo sitio que queremos crear puede ser cualquiera que tu quieras.

Luego editamos este archivo como administrador en nuestro editor favorito puede ser nano, vim o gedit:

gksudo gedit /etc/apache2/sites-available/misitio

Dentro del archivo modificamos las siguientes lineas:

DocumentRoot /var/www por /home/vensign/misitio

Y

<Directory /var/www/> por <Directory /home/vensign/misitio/>

En este caso cambiamos el directorio por uno dentro de /home/vensign/misitio que es el directorio de nuestro usuario y que debe estar creado (mkdir /home/vensign/misitio en este caso).

[alert_yellow textalign="left"] Recuerda cambiar /home/vensign/misitio al directorio que vas a utilizar[/alert_yellow]

También puedes definir logs separados para cada sitio. Para hacer esto cambia las líneas de ErrorLog y CustomLog. Esta opción es opcional, pero es últil si tienes multiples sitios.

Guardamos el archivo y ya tenemos la primera parte.

Activar el nuevo sitio

Ahora debemos deshabilitar el sitio por defecto y habilitar el nuevo sitio. Esto lo hacemos con los comandos a2dissite y a2ensite de Apache, ejecutando en terminal

sudo a2dissite default && sudo a2ensite misitio

Recuerden cambiar misitio por el nombre que colocaste en /etc/apache2/sites-available/ en el paso 1

Reiniciar Apache

Por último debemos reiniciar Apache para que los cambios tengan efecto:

sudo service apache2 reload

Eso es todo ya deberíamos poder navegar a localhost en el caso de ser un sitio local o a la IP o dirección de nuestro servidor y ver los contenidos del directorio que hemos colocado.

Cualquier duda o problema por favor dejen sus comentarios.

Manejo de Dependencias en PHP con Composer

Logo Composer PHPComposer es un manejador de dependencias para PHP, este proyecto inspirado en npm y Bundler y sirve para administrar librerías de terceros o propias en nuestros proyectos de PHP.

Composer es capaz de de instalar las librerías que requieres para tu proyecto con las versiones que necesites y si esas librerías dependen de otras también es capaz de resolver las dependencias y descargar todo lo que necesites para que funcione, quitándonos el dolor de tener que hacer esto manualmente y mantenerlo todo actualizado.

Instalar Composer

Composer está formado por dos partes, la primera es una aplicación de línea de comandos que permite encontrar, descargar, actualizar y compartir los paquetes o librerías y el otro es el repositorio donde se guardan dichos paquetes o librerías.

Para instalar Composer solo debes ejecutar en el terminal:

cd /ruta_a_tu_proyecto_php
curl -s https://getcomposer.org/installer | php

Si NO tienes curl instalado puedes ejecutar:

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Lo que hace este instalador es chequear que tu php.ini esté configurado con lo necesario y de lo contrario te arrojará un error.

[alert_yellow textalign="left"] Composer es un archivo ejecutable Phar por lo que debes tener habilitado phar dentro del php.ini, si no lo tienes simplemente descomenta extension=phar.so. [/alert_yellow]

Luego para comprobar que se instaló correctamente puedes ejecutar

php composer.phar

Si todo salió bien debe desplegar una lista de las opciones del comando.

Si quieres ejecutar Composer globalmente ejecutamos este comando adicional:

sudo mv composer.phar /usr/local/bin/composer

Con esto podremos ejecutar directamente el comando desde cualquier sitio o proyecto, por ejemplo:

composer about

Utilizando Composer

Como mencionamos anteriormente Composer está basado en Bundler y npm por lo que su uso es muy parecido a estas herramientas.

Para indicar las dependencias de tu proyecto debes crear un archivo llamado composer.json que en su forma más básica debe verse así:

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

Veamos sus partes:

  • require: esta palabra simplemente le dice a Composer que necesitamos la libreria que le indicamos dentro de los corchetes {}
  • Nombre del paquete o libreria: está separado en dos partes vendedor/proyecto, normalmente estos dos son iguales como en este caso o pueden ser distintos por ejemplo “illuminate/foundation”.
  • Versiones del paquete: después de los dos puntos ( : ) indicamos la versión que queremos de este paquete. Tenemos varias opciones:
    • Versión exacta: podemos decirle a Composer que queremos una versión específica como por ejemplo 1.0.1.
    • Rango: Podemos definir rangos de versiones con los operadores >, >=, <, <=, !=. Por ejemplo si queremos una versión mayor a la 2 colocariamos >2. También podemos definir entre dos versiones separando con comas, por ejemplo >=1.0, <2.0.
    • Comodín: podemos usar el comodín ( o wildcard ) * para definir versiones, como ejemplo 1.0.* esto quiere decir cualquier versión dentro de 1.0 ( 1.0.1, 1.0.2 … 1.0.8 etc.)
    • Por último tenemos el operador ~, es un poco dificil de explicar así que usaremos un ejemplo: tenemos una librería que tiene la versión 1.x y 2.x pero no son compatibles entre ellas y queremos la última de 1.x y no la de 2.x entonces utilizaríamos el operador de esta forma ~1.2 que es equivalente a >=1.2, <2.0, mientras si vamos a algo más específico como ~1.3.1 es equivalente a >=1.3.1, <1.4.

Como vemos podemos ser tan libres o específicos como queramos, y me falto mencionarles que si no nos importa la versión simplemente podemos colocar “*”.

Instalando las Dependencias

Una vez que tengas configurado tu archivo composer.json con todos los paquetes que requiere tu proyecto es hora de que Composer haga su trabajo y lo instale para esto ejecutamos:

php composer.phar install

O si seguiste mi consejo e instalaste Composer como un comando global (ver arriba) puedes ejecutar:

composer install

Una vez que termina de descargar los paquetes los coloca dentro de una carpeta llamada vendor por defecto esto lo podemos cambiar en nuestro archivo composer.json agregando las siguientes líneas:

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
    "config": {
        "vendor-dir":"librerias"
    }
}

Aquí especificamos librerias como el directorio a donde se descargan los paquetes. 

[alert_green textalign="left"]Tip: Si estás utilizando git para tu proyecto, probablemente quieras agregar vendor (o el directorio que hayas especificado) dentro de .gitignore. Con esto evitamos agregar el código adicional a nuestro repositorio sin necesidad. [/alert_green]

Si queremos actualizar las librerias ejecutamos:

php composer.phar update

O si está como comando global:

composer update

Autoloading

Ademas de descargar las librerias, Composer también prepara un archivo de autoload que es capaz de autocargar todas las clases en cualquiera de las librerías descargadas. Para utilizarlo, simplemente añadimos la siguiente línea en nuestro código:

require 'vendor/autoload.php';

[alert_red textalign="left"] Por supuesto que si cambiaste el directorio de descarga lo tienes que actualizar en esta línea. [/alert_red]

Repositorios

Si quieres ver los paquetes disponibles puedes visitar el repositorio en https://packagist.org/

Conclusión

Esto es todo por ahora, Composer a mi parecer es una herramienta que hacia mucha falta en PHP, muchos frameworks como FuelPHP, CodeIgniter, Symfony2 y Laravel ya están integrando Composer.

Además es una gran herramienta para utilizar tanto en desarrollo como en producción y que nos ahorra una gran cantidad de trabajo de manejo y mantenimiento.

Aquí solo he tocado la superficie de la configuración puedes ver mucho más en la Documentación.

Me gustaría saber que opinan de esta herramienta y si la está usando o la planean utilizar en sus proyectos, por favor dejen sus comentarios.

Recursos

[list_check]

[/list_check]