WordPress cómo ordenar el loop por un meta valor

Normalmente cuando creamos un WP_Query en WordPress lo podemos ordenar por algún campo del post por ejemplo por el título o por la fecha de publicación pero que pasa cuando hemos creado un valor meta y queremos ordenarlo por ese valor, WP_Query viene al rescate.

Supongamos que tenemos dos meta valores, uno que se llama arquitecto y otro que se llama año.

Si queremos ordenar alfabéticamente por el meta valor de arquitecto nuestro WP_Query quedaría de la siguiente forma:

$args = array('post_type' => 'post', 'meta_key' => 'arquitecto', 'orderby' => 'meta_value', 'order' => 'ASC');
$query = new WP_Query($args);

Aquí estamos diciendo:

  • $pos_type=post, todos las entradas tipo post, aquí tambien puede ser page o algún tipo de entrada personalizado que tengamos.
  • $meta_key, es el nombre de nuestro meta en este caso arquitecto.
  • $orderby, es por qué parámetro vamos a ordenar aquí le decimos que ordene por el valor meta que seleccionamos anteriormente.
  • $order, el sentido del order puede ser ASC de menor a mayor o DESC de mayor a menor.

Ahora si queremos ordenar por el meta valor de año que es un valor numérico tenemos que hacer un pequeño cambio:

$args = array('post_type' => 'post', 'meta_key' => 'año', 'orderby' => 'meta_value_num', 'order' => 'ASC');
$query = new WP_Query($args);

Vemos que dejamos los parámetros casi igual lo único que cambia es ‘meta_key’=>’año’ para seleccionar el meta que queremos filtrar y  ‘orderby’ => ‘meta_value_num’ para indicarle a WordPress que este valor es numérico.

Eso es todo luego podemos usar nuestro loop como siempre lo hacemos:

while ($query->have_posts()) {

...

}

Así vemos que es muy fácil ordenar un loop a través de un meta valor.

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.