Ordenar un array múltiple por dos filtros

Estándar

Aunque parezca tonto, muchas veces cuando desarrollamos nos encontramos con pequeños escalones que nos hacen cuestionarnos como programadores. Recientemente estaba solventando unos detalles con un catalogo de productos y el cliente quería que cuando se imprimiera el producto se ordenara por dos patrones (orden y peso), pues después de complicarme un montón y buscar mas de mil métodos de ordenamiento, me di cuenta que una función de php mas 3 lineas de código lo hacen todo por ti.

Esta función es array_multisort() y a continuación les daré un pequeño ejemplo de como podemos usar esta función en este tipo de problemas.

$carrito = array(
array('ID' => 1, 'nombre' => 'Baguette', 'peso' => '500', 'orden' => '13'),
array('ID' => 2, 'nombre' => 'Napolitana', 'peso' => '100', 'orden' => '11'),
array('ID' => 3, 'nombre' => 'Pan de molde', 'peso' => '200', 'orden' => '12'),
array('ID' => 4, 'nombre' => 'Rosca', 'peso' => '80', 'orden' => '11')
);
# Obtenemos en un array nuevo los datos a ordenar y que vamos a pasar al array_multisort
$sort = array();
foreach($carrito as $i=>$j) {
$sort['orden'][$i] = $j['orden'];
$sort['pero'][$i] = $j['peso'];
}
# ordenamos por orden y despues por peso ambos de forma ascendente (ASC)
array_multisort($sort['orden'], SORT_ASC, $sort['peso'], SORT_ASC,$carrito);

Y con esto ya nuestro “$carrito” ya quedaría ordenado como queremos y listo para imprimir.

Que es Homestead de Laravel y como Instalarlo

Estándar

Como programadores ya estamos cansados de realizar todas las configuraciones de nuestro sistema operativo para poder realizar los proyectos que tengamos en mente, que por lo general nos toma un día entero configurarlo. Laravel posee una herramienta que nos ayuda mucho en cuanto a configuración de ambiente para desarrollo se refiere, este es Homestead pero, ¿que es esto?.

Homestead es un ambiente para desarrollo local que en solo unos pocos pasos nos configura todo lo necesario para llevar a cabo nuestro proyectos en Laravel y prácticamente cualquier proyecto en php, esto a mi punto de vista es increíble ya que no es necesario “Envenenar” tu ordenador, ni el de oficina para hacer tu trabajo. En este post sabremos como instalar Homestead en MacOSX, linux y Windows.

Lo primero que hay que hacer es descargarnos e instalar VirtualBox y Vagrant, ambos vienen para los tres sistemas operativos al cual vamos a realizar la instalación.

Una vez tengan instalado estos dos programas, nos dirigiremos a nuestra consola y agregaremos el paquete de “laravel/homestead” a nuestra instalacion de vagrant con el siguiente comando:

vagrant box add laravel/homestead

Ya instalado el paquete procederemos a instalar y usar homestead, el cual existen dos maneras, una de ellas es instalando los paquetes a través de “Composer+PHP”. La otra, que es la que yo prefiero porque a mi parecer es la mas sencilla es a través de “Git”, esta ultima es la que vamos a explicar en este post.

Como buena practica pueden crear dos directorios distintos, uno con todos tus proyectos y otro donde este el homestead. En lo particular yo tengo uno llamado “Sites” en mi carpeta raiz y otro llamado “homestead” donde tengo instalado nuestro sistema. Una ves definan su estructura procedemos a clonar con git nuestro homestead con el siguiente comando:

git clone https://github.com/laravel/homestead.git Homestead

Una vez finalizado solo nos queda configurar y editar nuestro archivo “homestead.yaml”, este nos mostraría algo como esto:

ip: "192.168.10.10"
memory: 1024
cpus: 1

//en estas lineas estaria la configuracion
//para la llave ssh
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

//esta seria la configuración de mapeo para el
//sharing de nuestra maquina local con la maquina
//virtual, donde el "map" seria la ruta de nuestra
//maquina local y el "to" la ruta de nuestra maquina
//virtual.
folders:
    - map: ~/Sites
      to: /home/vagrant/Sites

//aquí seria la configuración de mapeo con nuestro nginx
//ya instalado en nuestra maquina virtual, si deseas
//agregar mas proyectos solamente debes mapearlos en esta
//seccion donde "map" va a ser el url del navegador y el "to"
//la ruta de nuestra maquina virtual.
sites:
    - map: tuprojecto.dev
      to: /home/vagrant/Sites/tuproyecto/public

variables:
    - key: APP_ENV
      value: local</span>

Ya configurado nuestro archivo homestead.yaml lo que tenemos que hacer es acceder a nuestra maquina virtual. Este comando lo vamos a ejecutar dentro de nuestro directorio de Homestead que previamente creamos. Primero arrancamos nuestra maquina virtual:

vagrant up

Y después accedemos a ella:

vagrant ssh

Ya dentro de nuestra maquina virtual simplemente nos dirigimos a nuestro directorio sites y creamos nuestro proyecto en laravel (No solamente puedes usar laravel, puedes usar cualquier otro Framework que desees usar).

cd Sites/
composer create-project laravel/laravel tuproyecto

Una vez finalizada la instalación ya deberían de tener su proyecto listo para empezar tanto en tu maquina virtual como en tu maquina local según la ruta que hallan designado. pero para poder comprobarlo en el navegador debemos realizar un ultimo paso que es bastante sencilllo que es editar nuestro archivo host.

//ruta para mac y linux
nano /etc/hosts

Y editamos las siguientes lineas:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1    localhost
255.255.255.255    broadcasthost
::1             localhost
#VAGRANT
192.168.10.10     tuproyecto.dev

Listo!!! con esto ya deberíamos acceder al URL de tu proyecto “http://tuprojecto.dev&#8221; en nuestro navegador sin problemas.Si deseas agregar otro proyecto solamente crea tu proyecto en tu maquina virtual, ejecutas el siguiente comando dentro de tu maquina virtual y después solo editas tu archivo Hosts:

serve tuprojecto2 /home/vagrant/Sites/tuprojecto2/public

Espero que les sirva de ayuda y les recomiendo usar ese tipo de ambiente para que te ahorres 2 horas solamente de configuración para poder correr sus proyectos. Si tienen alguna duda o pregunta no duden en comentarlo.