viernes, 21 de junio de 2019

Instalar y Configurar Laravel PHP Framework - Mi Primer Proyecto


Laravel
Laravel


En esta entrada quiero compartir parte de mi proceso de aprendizaje en el mundo de Laravel, esto es sólo una guía de iniciación de primeros pasos para instalar y configurar Laravel en una máquina con Ubuntu Linux 16.04 LTS Xenial Xerus y así poder iniciar nuestro Primer Proyecto.



Requisitos:



La estrategia que voy a compartir aquí es la que en mi opinión se adapta bien para el desarrollo de proyectos en Laravel dentro de un equipo de desarrollo que hace uso de sistemas de control de versiones como Git, ya sea en GitHub o en GitLab. Esto permite que todo el equipo de desarrollo tengan acceso a la misma base de código fuente del proyecto Laravel con fácil configuración del entorno donde se ejecuta pensando a futuro en realizar configuraciones para Integración Continua y Despliegue Continuo.



Paso1 - Homestead Vagrant Box:

Cumpliendo con los requisitos anteriormente mencionados procedemos a instalar el Homestead Vagrant Box, esto nos permite tener una Maquina Virtual preconfigurada con todos los requerimientos para ejecutar aplicaciones en Laravel, ademas podemos configurar facilmente esta maquina virtual mediante el uso de archivos YAML.

promt$ vagrant box add laravel/homestead

Verificar que el vagrant box ha sido instalado:

promt$ vagrant box list
laravel/homestead   (virtualbox, 8.0.0-beta)


Paso 2 - Instalar CLI Laravel:

Para poder crear projectos en Laravel, podemos instalar el CLI de Laravel el cual nos permite a partir de un scallfold crear un Projecto Vacío con la estructura de Laravel.

promt$ composer global require laravel/installer

Despues de realizar este proceso de instalación, tenemos que agregar al PATH la rutal al directorio .composer/vendor/bin donde se instalan los paquetes y así poder usar de forma global el CLI de Laravel, agregar al archivo /etc/profile lo siguiente:

## Composer bin packages
export COMPOSER_BIN=$HOME/.config/composer/vendor/bin    
PATH=$PATH:$COMPOSER_BIN
export PATH

Listo, finalmente actualizar nuestro PATH y verificamos la version del CLI de Laravel instalado:

promt$ source /etc/profile
promt$ laravel -V
Laravel Installer 2.1.0


Paso 3 - Crear Proyecto:

Ahora que ya tenemos instalado el CLI de Laravel, el siguiente paso es crear un proyecto usando el comando que nos permite desde un scafflod crear un proyecto en Laravel vacío:

promt$ laravel new mi-proyecto
promt$ ls
mi-proyecto

mi-proyecto
mi-proyecto


Paso 4 - Homestead por Proyecto:

En este punto vamos a instalar y configurar los archivos necesarios para ejecutar nuestro proyecto en el Homestead Box de Vagrant, para esto tenemos que instalar el paquete homestead en nuestro proyecto:

promt$ composer require laravel/homestead --dev

Cuando ya tenemos instalado el paquete de homestead en nuestro proyecto, ahora lo que tenemos que hacer es generar los archivos VagrantfileHomestead.yaml, usando el comando make:

promt$ php vendor/bin/homestead make


Paso 5 - Configurar Hostname:

Cuando configuramos Homestead en nuestro proyecto, por defecto se asigna la IP 192.168.10.10 y el nombre de dominio homestead.test, ahora, tenemos que configurar nuestro archivo de hostname en nuestra maquina Linux Ubuntu agregando esta información al archivo /etc/hosts:

192.168.10.10  homestead.test

Paso 6 - Ejecutar Proyecto:

Finalmente podemos ejecutar nuestro proyecto usando Vagrant con el siguiente comando:

promt$ vagrant up
Con esto ejecutamos una maquina virtual con nuestro proyecto, para poder acceder y visualizar el proyecto usamos un navegador web para acceder al dominio configurado por defecto:

http://homestead.test/

Mi Primer Proyecto
Mi Primer Proyecto


Eso es todo:

Listo, con esto ya tenemos una instalación y configuración básica para iniciar nuestro aprendizaje en el mundo de Laravel, queda mucho por aprender, a continuación dejo unos enlaces de referencia donde podemos encontrar información adicional sobre Laravel.


Repositorio Final:
https://github.com/sebaxtian/mi-proyecto


Referencias:

Vagrant Docs
Laravel Docs
Homestead Docs


domingo, 12 de mayo de 2019

Instalar Go en Linux Ubuntu 16.04 LTS Xenial Xerus

Bueno en esta entrada voy a ser concreto y directo a los pasos a seguir para realizar la instalación de las herramientas de Go para poder desarrollar usando el lenguaje de programación Go en una distribución de Linux Ubuntu 16.04 LTS Xenial Xerus.

Esta entrada la quiero hacer por que actualmente me encuentro realizado una prueba técnica propuesta por una empresa, la cual debe ser desarrollada usando el lenguaje de programación Go.


Paso 1: Descarga

Primero debemos descargar los binarios de la ultima versión estable de Go para Linux la cual requiere de un procesador de 64bit del siguiente link, https://golang.org/dl/ esto nos debe descargar un archivo .tar.gz con la siguiente estructura de nombre go$VERSION.$OS-$ARCH.tar.gz por ejemplo go1.12.5.linux-amd64.tar.gz


Paso 2: Instalar

Después de realizar la descarga del binario de Go procedemos a realizar la instalación en nuestro sistema Linux, para esto simplemente debemos descomprimir el contenido del archivo .tar.gz descargado en el directorio de programas instalados localmente /usr/local/ ejecutando el siguiente comando como usuario root:

usuario@Linux:# tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz


Paso 3: Configurar PATH

Como paso adicional del proceso de instalación hay que agregar a la variable de entorno PATH de nuestro sistema Linux la ubicación del directorio de los binarios de Go, esto lo hacemos de forma global a todo el sistema Linux agregando la siguiente linea de código al final del archivo /etc/profile

export PATH=$PATH:/usr/local/go/bin

Para aplicar los cambios hechos al archivo /etc/profile ejecutamos el siguiente comando:

usuario@Linux:# source /etc/profile


Paso 4: Probar

Bueno, finalmente lo que debemos hacer es probar que todo el proceso de instalación funciona correctamente, para esto debemos configurar el directorio de espacio de trabajo de Go, por defecto debe estar creado en el directorio $HOME/go del usuario Linux con la siguiente estructura:

El directorio $HOME/go debe contener un directorio src para contener todos los archivo de código fuente Go y debe contener un directorio bin para todos los ejecutables generados a partir del código fuente Go.

$HOME/go
             $HOME/go/src
             $HOME/go/bin

Para realizar la prueba, creamos un directorio /hello dentro del directorio $HOME/go/src donde creamos el archivo de código fuente hello.go con el siguiente contenido:
package main

import "fmt"

func main() {
 fmt.Printf("hello, world\n")
}
Luego de guardar el archivo hello.go creamos un build y ejecutamos:
$ cd $HOME/go/src/hello
$ go build
$ ./hello
hello, world
Para generar un binario a partir de la anterior build ejecutamos el comando go install dentro del mismo directorio $HOME/go/src/hello lo cual genera un archivo binario en el directorio $HOME/go/bin si en algún momento deseamos eliminar el archivo binario ejecutamos el comando go clean -i


Listo, eso es todo, pero creo que para desarrollo de aplicaciones podríamos en algún momento tener la necesidad de modificar la ubicación del directorio de trabajo de Go, para esto debemos seguir las instrucciones descritas en la documentación de Go https://golang.org/doc/code.html#Workspaces y con esto ya podemos desarrollar nuestras aplicaciones a nuestro antojo.


viernes, 3 de mayo de 2019

Instalar PgAdmin 4 en Linux Ubuntu 16.04 LTS Xenial Xerus

Una nueva entrada relacionada con Postgres y el cliente PgAdmin, ahora en la versión PgAdmin 4.

Pueden consultar la entrada [Instalar PostgreSQL y PgAdmin en Linux Ubuntu 16.04 LTS Xenial Xerus] para contextualizar esta entrada donde explicaré como Instalar PgAdmin 4 en Linux Ubuntu 16.04 LTS Xenial Xerus.

En el sitio web oficial [https://www.pgadmin.org/] de pgAdmin nos informan que la versión 3 de pgAdmin no tiene mas soporte oficial, por lo tanto recomiendan instalar y usar pgAdmin versión 4.

pgAdmin 3 sin soporte
pgAdmin 3 sin soporte

El proceso de instalación es muy simple y solo hay que seguir los siguientes pasos a continuación:


Paso 1 Agregar Repositorio

Primero debemos configurar y agregar el repositorio de paquetes oficial de PostgreSQL para Debian y Ubuntu Linux.

En una terminal de Linux ejecutar los siguientes comandos:

->$ sudo apt-get install curl ca-certificates
->$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
->$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Con los anteriores comando ya tenemos configurado correctamente la lista de repositorios oficiales de Postgres para proceder a instalar pgAdmin 4.


Paso 2 Instalar pgAdmin 4

En una terminal de Linux ejecutar los siguientes comando:

->$ sudo apt-get update
->$ sudo apt-get install pgadmin4

Paso 3 Ejecutar pgAdmin 4

En una terminal de Linux ejecutar el siguiente comando:

->$ pgadmin4 &

En un navegador web se abre la siguiente URL http://127.0.0.1:35747/browser/# donde tenemos disponible la aplicación de pgAdmin 4 y aquí configuramos la conexión a un servidor de Postgres.


Conexión Postgres
Conexión Postgres

pgAdmin 4
pgAdmin 4

Listo, con eso ya tenemos todo configurado y listo para usar pgAdmin 4 con el cual podemos administrar nuestras bases de datos en Postgres.


jueves, 2 de mayo de 2019

Instalar Docker en Windows 10 Home

Aquí quiero compartir el proceso para instalar Docker en Windows 10 Home, mediante la instalación de Docker Toolbox ya que la versión Docker Desktop para Windows no puede ser instalar en Windows Home.


Paso 1 Descargar

Primero tenemos que descargar el instalador de Docker Toolbox desde el repositorio oficial con la ultima versión estable [https://github.com/docker/toolbox/releases]

Descarga Docker Toolbox
Descarga Docker Toolbox

Paso 2 Instalar

El siguiente paso después de realizar la descarga del instalador de Docker Toolbox es iniciar la instalación, como cualquier otra aplicación de Windows solo es doble click en el archivo descargado y el resto del proceso es hacer click en siguiente.

Instalar Docker Toolbox
Instalar Docker Toolbox

Al finalizar la instalación en la ultima ventana solo se debe desmarcar la opción "View Shortcuts in File Explorer" y hacer click en Finalizar.


Paso 3 Configuración

Una vez ha sido instalado el Docker Toolbox, en la primera ejecución se realiza la Configuración de las herramientas necesarias para poder hacer uso de Docker.

Configurar Docker Toolbox
Configurar Docker Toolbox

En la primera ejecución usando el "Docker Quickstart Terminal" desde esta terminal se realiza toda una serie de procesos e instalaciones adiciones para poder hacer uso de Docker.

Si por alguna razón durante el proceso tenemos algún error relacionado con el Network Adapter de VirtualBox, tenemos que instalar nuevamente el Docker Toolbox pero seleccionando durante la instalación la opción "Install VirtualBox with NDIS5 driver", al finalizar la instalación Reiniciar el Windows y nuevamente ejecutar el "Docker Quickstart Terminal".

Error Network Adapter
Error Network Adapter
Solucion Network Adapter
Solucion Network Adapter
Cuando todo el proceso de Configuración de Docker Toolbox finaliza con éxito, en la terminal Docker Quickstart Terminal nos muestra un mensaje donde disponemos de un prompt para trabajar con Docker como lo hacemos en Linux.

Docker Quickstart Terminal
Docker Quickstart Terminal

Paso 4 Hola Mundo

Finalmente ya tenemos todo lo necesario para poder trabajar con Docker, el paso final para comprobar que Docker está instalado correctamente es ejecutar el Contenedor del clásico Hola Mundo.

Docker Hola Mundo
Docker Hola Mundo

También podemos comprobar la versión de Docker instalada, las imágenes descargadas y los contenedores que tenemos.

Docker
Docker

Listo, eso es todo el proceso que quiero compartir sobre como instalar Docker en Windows 10 versión Home, aunque yo soy usuario Linux, existen personas que les puede servir esta breve guía en algún momento.



sábado, 27 de abril de 2019

Introducción a C++ HolaMundo

Como en cualquier libro típico de programación en C++ siempre mencionan algo de historia sobre los orígenes del lenguaje de programación, en esta entrada no quiero hacer énfasis en repetir la misma historia, me voy a centrar en las características básicas del lenguaje, la estructura de un programa en C++ para su compilación y ejecución. Todo lo que escribo en las siguientes entradas en el transcurso del aprendizaje de C++ lo hago en una distribución tipo Linux basada en Debian como lo es Ubuntu.


El Main del programa

Ejemplo sencillo de un programa en C++ el típico Hola Mundo cuando uno aprende a programar. La función main() es la función principal en donde se inicia la ejecución del programa, todo programa debe tener una función main() para poder ser ejecutado.




Entendamos algunas cosas:

En la linea 1 del código fuente esta la directiva #include <iostream> la cual hace que el compilador añada los contenidos del archivo iostream al programa, este contiene las declaraciones del identificador cout, endl y el operador <<, el archivo de cabecera iostream debería ser incluido en todos los programas que utilicen instrucciones de entrada/salida.

En la linea 2 se usa la directiva using namespace para definir el ámbito de un identificador, en este caso std, si no se hace esto en cada linea de cout tendríamos que definir el espacio de nombres con el operador de ámbito :: así, std::cout << "Hola Mundo !!" << std::endl;

En la linea 5 define la función main() la cual tienen como valor de retorno un tipo de dato int en el caso de que la función se ejecute correctamente retorna 0 como se ve en la linea 17.

El objeto cout se usa para indicar en el programa un flujo de salida mediante el operador << a la salida estándar del sistema, en este caso un mensaje que se escribe en la terminal, se usa endl para indicar un salto de linea al final.

Es recomendado escribir comentarios en el código fuente para que a futuro podamos hacer cambios de forma mas fácil y hace parte de las buenas practicas de programación. Existen dos formas de comentar código, un comentario de una sola linea como se ve en la linea 7 o un comentario de bloque como se ve en las lineas 13 - 15.


Por ultimo debemos saber como compilar nuestro código fuente para que la maquina entienda las instrucciones de nuestro programa y luego proceder a ejecutar el programa.

Para compilar, desde una terminal de linux y asegurándonos que estamos sobre el directorio que contiene nuestro código fuente, ejecutamos la siguiente instrucción:

promt->$  g++ Main.cpp -o Main

Donde Main.cpp es el nombre del archivo que tiene el código fuente de nuestro programa y Main es el nombre que queremos dar al ejecutable del programa.

Para ejecutar el programa, desde una terminal linux ejecutamos la instrucción:

promt->$  ./Main

El resultado de compilar el código fuente y ejecutar el programa es el siguiente:



Introducción a Programación Orientada a Objetos POO

El paradigma de programación orientado a objetos tiene su origen a principios de los años 70 pero que se ha popularizado desde principios de los años 90. Básicamente un lenguaje de programación orientado a objetos está diseñado para crear una abstracción de hechos y objetos del mundo real de tal forma que pueda ser interpretado y ejecutado por las maquinas o computadoras.

Su origen se debe a un lenguaje de programación, Simula 67, diseñado para hacer simulaciones y donde surgieron los conceptos de clases, objetos, herencia, instancia, polimorfismo, etc.

Se popularizo a principios de los años 90 como consecuencia de la Crisis del Software en donde es necesario dar respuesta a las siguiente preguntas:

  • ¿Cómo representar entidades de problemas de la vida real en el diseño de sistemas?
  • ¿Cómo diseñar sistemas con interfaces abiertos?
  • ¿Cómo garantizar la reusabilidad y la extensibilidad de los módulos?
  • ¿Cómo desarrollar módulos que sean tolerantes a los cambios futuros?
  • ¿Cómo mejorar la productividad del software y disminuir el coste del software?
  • ¿Cómo mejorar la calidad del software?
  • ¿Cómo gestionar las planificaciones temporales?
  • ¿Cómo industrializar el proceso de desarrollo de software?

Aunque no voy a escribir en esta entrada sobre Calidad es importante mencionarlo, cuando se habla de la Calidad en los productos de Software hay que evaluar de forma crítica:

  • Correctitud
  • Mantenibilidad
  • Reusabilidad
  • Apertura e Interoperabilidad
  • Portabilidad
  • Seguridad
  • Integridad
  • Amabilidad con el usuario


Es importante tener algunos conceptos claros y que son usados ampliamente en programación orientada a objetos:


Clases
Es un conjunto completo de datos definidos por el usuario para representar un objeto de la vida real, por ejemplo, Carro, Casa, Persona, Estudiante, Motor, etc. Las Clases encapsulan todas las propiedades esenciales de los objetos que van a ser creados.


Objetos
Los objetos son una instancia de una Clase que ocupan espacio en memoria, son datos de tipo Clase que podemos manipular y a la vez pueden interactuar con otros objetos. La comunicación entre Objetos se hace por medio de funciones que proporcionan una interfaz de comunicación para acceder a los datos de los objetos, a estas funciones se les llama Métodos o Funciones Miembro.


Abstracción de datos y encapsulación
A la envoltura de datos y funciones en un solo conjunto llamada Clase, se conoce como encapsulación, esta es la característica mas llamativa de una clase. La abstracción se refiere al acto de representar las características esenciales de objetos o hechos del mundo real sin incluir los detalles de fondo o las explicaciones.


Herencia
El concepto de herencia suministra la idea de reusabilidad, esto significa que podemos añadir características a una Clase existente sin modificarla, esto es posible al derivar una nueva clase a partir de una clase ya existente, la nueva Clase tendrá las características combinadas de ambas clases.


Polimorfismo
Del vocablo griego, significa la posibilidad de tomar más de una forma. Al proceso de hacer que un operador tenga diferentes comportamientos en diferentes situaciones se le conoce como Sobrecarga del Operador, al uso de un solo nombre de función para realizar diferentes tareas se le conoce como Sobrecarga de la Función.


Paso de mensajes
Los Objetos se comunican entre sí enviando y recibiendo información de la misma manera que las personas se pasan mensajes entre ellas. Un mensaje para un objeto es una solicitud para la ejecución de un procedimiento y por tanto invocará a una función en el objeto receptor que genere el resultado deseado. El paso de mensajes implica la especificación del nombre del objeto, el nombre de la función y la información a enviar.



Ventajas de la POO

  • Por medio de la herencia podemos eliminar código redundante y extender el uso de clases existentes.
  • Podemos escribir programas a partir de módulos de trabajo estándar que se comunican entre si, en lugar de tener que empezar desde cero la escritura del código. Esto conduce a un ahorro en el tiempo de desarrollo ya una productividad mayor.
  • El principio de encapsulación de datos ayuda al programador a construir programas seguros que no pueden ser invadidos por código de otras partes del programa.
  • Es posible tener múltiples copias de un objeto que coexisten sin ninguna interferencia.
  • Es fácil dividir el trabajo de un proyecto basado en objetos.
  • El enfoque del diseño centrado en los datos nos permite capturar mas detalles de un modelo de forma que se puedan implementar.
  • Se pueden mejorar y actualizar fácilmente los sistemas orientados a objetos desde los pequeños hasta los grandes sistemas.
  • Las técnicas de pase de mensajes para la comunicación entre objetos simplifican mucho las descripciones de las interfaces con sistemas externos.
  • Se puede gestionar fácilmente la complejidad del software.