lunes, 15 de septiembre de 2014

Herramienta para el manejo de dependencias en PHP (Composer)




Al momento de trabajar con proyectos de sofwtare, se requiere de muchas librerías que harán de este una aplicación estable, tomando en cuenta que en ocasiones se necesita realizar procesos que dependen de librerías externas a los frameworks utilizados para desarrollar; Es por ello la importancia de utilizar herramientas que faciliten el manejo de la instalación de dependencias.

Existen muchas herramientas que sirven para ello, dependiendo de los lenguajes de programación que se utilice pues como para Python se tiene PIP, NPM para Node.JS. en PHP existe la potente y popular herramienta llamada Composer, siendo esta capaz de instalar las librerías que requieras en tu proyecto en la versión que la necesites o incluso capaz de resolver los problemas de las dependencias de librerías.

Aquí los pasos de instalación de Composer bajo Linux (Basado en Debian) ejecutando XAMPP :

Es imprescindible tener un enlace simbólico de la consola ejecutable de php para evitar tener que escribir la ruta absoluta de este.

Teniendo el enlace simbólico debe de ejecutarse el siguiente comando que descarga el paquete actualizado del proyecto Composer

Si al tratar de instalarlo con la aplicación curl obtienes este mensaje

Tienes dos opciones.
Instalas curl

O utilizas el siguiente comando

Independientemente cual comando hayas ejecutado, ya sea con curl o readfile de php, se mostrará el mensaje de instalación correcta

Descargado el ejecutable de la aplicación Composer, solo hace falta moverla a la carpeta de archivos ejecutables de los usuarios para tener que escribir la ruta de instalación de la aplicación cuando se desee utilizar, esto se realiza de la siguiente forma

Verificamos el funcionamiento ejecutando el comando Composer ejecutando el comando


Verificando la versión instalada y su funcionamiento.

lunes, 12 de mayo de 2014

Procedimientos almacenados en MySQL



Los procedimientos almacenados son un conjunto de comandos SQL que se almacenan en el gestor de la base de datos; facilitando en alguna medida que los desarrolladores sigan el lema DRY (No te repitas tu mismo), pues las sentencias se escriben una sola ves y pueden ser llamadas en cualquier momento y estas devolverán el resultado de los valores solicitados.

Poner en practica esta utilidad nos brinda ventajas y desventajas, como estas:
Ventajas:
  • Mejoran el rendimiento ya que se envía menos información entre cliente y servidor.
  • La respuesta a una petición, está directamente bajo el control del motor de base de datos.
  • Aseguran la integridad de los datos, validando la información que será ingresada o editada.
  • Brinda seguridad pues en la red solo está visible la llamada al procedimiento almacenado mas no los nombres de los objetos de base de datos y tablas.

Desventajas:
  • Carga de procesos excesiva en el servidor de base de datos.

Ejemplo de procedimientos almacenados en MySQL
Estos son los necesarios para realizar el mantenimiento (CRUD) a las entidades, así como la búsqueda de información dentro de ella:

SELECT:
-- --------------------------------------------------------------------------------
-- Autor: Kevin Eduardo Moran Ramirez
-- Note: Procedimiento almacenado en MySQL para consulta select
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `consulta_select` (
 IN Tabla VARCHAR(50),
 IN Campos VARCHAR(255),
 IN Donde VARCHAR(255),
 IN AgruparPor VARCHAR(50),
 IN OrdenarPor VARCHAR(50)
)
BEGIN
 # Verifico que si las variables contienen parametros
 IF Donde <> '' THEN SET Donde = CONCAT(' WHERE ', Donde); END IF;
 IF AgruparPor <> '' THEN SET AgruparPor = CONCAT(' GROUP BY ', AgruparPor); END IF;
 IF OrdenarPor <> '' THEN SET OrdenarPor = CONCAT(' ORDER BY ', OrdenarPor); END IF;
 SET @VConsulta = CONCAT(
  "SELECT ", Campos , " FROM ", Tabla, Donde, AgruparPor, OrdenarPor, ";"
 );
 #Preparo y ejecuto la sentencia SQL
 PREPARE Declaracion FROM @VConsulta;
 EXECUTE Declaracion;
END

INSERT:
-- --------------------------------------------------------------------------------
-- Autor: Kevin Eduardo Morán Ramirez
-- Note: Procedimiento almacenado en MySQL para consulta insert into
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `consulta_insertar` (
 IN Tabla VARCHAR(50),
 IN Campos VARCHAR(255),
 IN Valores VARCHAR(255)
)
BEGIN
 SET @VConsulta = CONCAT(
  "INSERT INTO ", Tabla , "(" , Campos , ") VALUES(" , Valores , ")"
 );
 PREPARE Declaracion FROM @VConsulta;
 EXECUTE Declaracion;
END

UPDATE:
-- --------------------------------------------------------------------------------
-- Autor: Kevin Eduardo Morán Ramirez
-- Note: Procedimiento almacenado en MySQL para consulta update
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `consulta_actualizar` (
 IN Tabla VARCHAR(50),
 IN Establecer VARCHAR(255),
 IN Donde VARCHAR(255)
)
BEGIN
 SET @VConsulta = CONCAT(
  "UPDATE " , Tabla , " SET " , Establecer ," WHERE " , Donde
 );
 PREPARE Declaracion FROM @VConsulta;
 EXECUTE Declaracion;
END

DELETE:
-- --------------------------------------------------------------------------------
-- Autor: Kevin Eduardo Morán Ramirez
-- Note: Procedimiento almacenado en MySQL para consulta delete
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE PROCEDURE `consulta_eliminar` (
 IN Tabla VARCHAR(50),
 IN Donde VARCHAR(255)
)
BEGIN
 SET @VConsulta = CONCAT(
  "DELETE " , Tabla , " WHERE " , Donde
 );
 PREPARE Declaracion FROM @VConsulta;
 EXECUTE Declaracion;
END
 

jueves, 30 de enero de 2014

DDNS (Dynamic Domain Name System ­ Sistema del Nombre de Dominio Dinámico)


El DDNS Es un sistema que nos proporciona el proceso automatizado de actualizar en tiempo real la información de nombre de dominio situada en un servidor de nombres.

Haciendo uso de de un software software de DDNS en una computadora con dirección IP dinámica nos da la posibilidad de conectarnos a una máquina sin necesidad de rastrear su dirección IP así como también alojar nuestros propios servidores de cualquier índole (Correo, Web, VPN, Control de Versiones, etc) Sin necesidad de contratar alojamientos (Hosting).

Actualmente existen diversas empresas que nos proporcionan el uso gratuito de este tipo de softwares. En este manual utilizaremos el software que nos proporciona la empresa Vitalwerks Internet Solutions, LLC. El cual es No-IP. Es gratuito y lo único necesario para poder utilizarlo es registrarse en la pagina de www.noip.com, en la cual podremos elegir entre servicios gratuitos de nombres de dominio, o comprar nombres de dominios personales.

La instalación de Este software es muy sencilla. Teniendo en cuenta que este tutorial esta hecho para sistemas GNU/Linux Debian comenzaremos con instalar los siguientes paquetes que son necesarios para su compilacion e instalación.

# apt-get install make gcc

Procedemos a descargar la ultima versión estable de el software No-IP:


Habiéndolo descargado lo extraemos:

# tar xvzf noip-duc-linux.tar.gz

Extraído el archivo nos dirigimos a la carpeta obtenida para iniciar su compilación:

# cd noip-2.1.9-1

Estando dentro de la carpeta, procedemos a compilar el archivo:

# make install noip2.c

Automáticamente al finalizar la compilación e instalación nos solicitará:
* Correo electronico o Cuenta registrada en No-IP.
* Contraseña de la cuenta registrada.
* Periodo de verificación de dirección IP asociada a la cuenta.

Habiendo realizado lo anterior ya tendremos instalado el software de No-IP en nuestra PC.
La instalación se realiza dentro de la ruta /usr/local/bin/noip2 por lo tanto si queremos ejecutar el software tendremos que hacerlo de esta forma:

# /usr/local/bin/noip2

Los comandos basicos de la aplicación son:


# /usr/local/bin/noip2 -- Ejecutar un Cliente
# /usr/local/bin/noip2 -C -- Configurar un Cliente
# /usr/local/bin/noip2 -S -- Mostrar información de los Clientes en Ejecución
# /usr/local/bin/noip2 -D pid -- Cambiar el id del proceso ejecutándose
# /usr/local/bin/noip2 -K pid -- Matar el proceso ejecutándose con un id especifico

Teniendo el Software Instalado y Ejecutándose, es necesario de convertir el software en un servicio del sistema. Para ello procedemos a crear un archivo Bash con los siguientes parámetros:

#!/bin/bash
/usr/local/bin/noip2

Habiendo guardado el archivo Bash en la ruta /etc/init.d/ con el nombre rc.noip le asignamos permisos de ejecución al archivo.

# chmod +x /etc/init.d/rc.noip

Y añadimos el archivo al inicio del sistema:

# insserv rc.noip

Habiendo realizado todos los pasos anteriores con excito, tendremos nuestro software ejecutándose correctamente. Solo habría que configurar el enrutador (Router) las tablas NAT (Network Address Translation - Traducción de Direcciones de Red) necesarias para saber a que Servidor querremos ingresar en distintos puertos establecidos.

martes, 7 de enero de 2014

Instalación de Framework de Desarrollo Web Django


Un framework libre y de código abierto orientado al desarrollo web que trabaja bajo el paradigma de desarrollo MTV (Modelo Plantilla Vista) el cual es en lógica muy similar al MVC (Modelo Vista Controlador).
Como framework facilita el desarrollo de aplicaciones web ya que posee caracteristicas como:
  • Un mapeador objeto-relacional
  • Una API de base de datos robusta
  • Un sistema incorporado de "vistas genéricas" que ahorra tener que escribir la lógica de ciertas tareas comunes
  • Un sistema extensible de plantillas basado en etiquetas, con herencia de plantillas
  • Un despachador de URLs basado en expresiones regulares
  • Un sistema "middleware" para desarrollar características adicionales; por ejemplo, la distribución principal de Django incluye componentes middleware que proporcionan cacheo, compresión de la salida, normalización de URLs, protección CSRF y soporte de sesiones

 
Instalación de Django
 
La forma tradicional de la instalación de Django seria utilizando PIP (package manager):
# [$ sudo] pip install django

Este nos instalará la ultima versión estable de django disponible si queremos una versión específica se hace de esta forma:
# [$ sudo] pip install Django==X.X
Siendo X.X la versión que se desea instalar ejemplo 1.4

 
Sino tienes PIP y no te interesa instalarlo entonces puedes hacerlo de esta forma:
Ingresar al sitio: https://www.djangoproject.com/ y dirigirnos a la sección marcada
 
Nos mandará a la siguiente página en la cual explica la instalación mediante PIP o mediante descarga directa, y seleccionamos el vínculo al paquete de instalación
Abrimos la terminal y nos dirigimos a la carpeta donde descargamos el paquete
Procedemos a descomprimir utilizando el comando tar y los parámetros xzvf como lo específica la página oficial de django

 
Accesamos a la carpeta extraida y ejecutamos el comando de instalación a archivos python (py) recordando que necesitamos permisos de administrador


¿Cómo se si la instalación fue correcta?
Siempre dentro de la terminal ingresamos al interprete de python

Dentro del interprete importamos la clase django y ejecutamos la función VERSION de esta clase la cual nos devolvera como resultado la versión instalada
 

jueves, 2 de enero de 2014

Conjunto de servidores libres independientes de plataforma (XAMPP)


En el desarrollo de aplicaciones muchas veces es imprescindible la utilización de servicios como Base de datos, servidor web e interpretes de lenguajes de programación. Y cuando son proyectos pequeños o por simple afición no es necesario de tener estos servicios instalados y en funcionamiento diario de ellos, es por ello que existe esta herramienta poderosa, multiplataforma que combina estos servicios, y no es necesario tener activos todos los servicios solo los que uno necesita.
Esta herramienta es XAMPP, la cual contiene servidor de base de datos MySQL, Servidor web Apache y los interpretes para PHP y Perl; en base a ello su nombre siendo X el significado de multiplataforma (WinBug$, GNU/Linux, Mac OS X).

Explicare la instalación de esta herramienta en GNU/Linux (Distribución Linux Mint Debian Edition)

Iniciamos dirigiéndonos al sitio:
En la cual existe mucha documentación de esta herramienta.

Dentro de este sitio elegimos el sistema operativo para el cual queremos descargar el instalador, en este caso seleccionare Linux
 
La cual nos dirigirá a esta ventana y seleccionaremos el vinculo a Download


Nos enviará a la sección de descargas en la cual podremos elegir entre XAMPP PHP 5.4 o XAMPP PHP 5.5 Diferencia el interprete de PHP solamente, recomendación descargar la ultima versión ya que las aplicaciones deben de ir actualizándose.
En ambas existen dos archivos para descargar, los cuales son XAMPP para arquitecturas de x32 y x64, seleccionamos la que se apegue a nuestra arquitectura. En mi caso será la de x32



Esto nos descargara este archivo “xampp-linux-1.8.3-2-installer.run”, Para comenzar su instalación debemos abrir la terminal y ubicarnos en la carpeta donde el archivo esta almacenado.

Asignamos el permiso de ejecución al archivo (Recordar que para ello se necesita del permiso de administrador, explicare de ambas formas como su o con sudo)


 
Luego que ya se le dieron los permisos necesarios de ejecución, corremos la instalación

 
Al correrla nos mostrará las siguientes ventanas en las cuales solo debemos de dar siguiente, hasta que se instale el servidor.








La instalación de XAMPP en GNU/Linux se almacena en /opt/lampp por lo tanto para su ejecución debemos ser administradores y dependiendo de los servicios que queramos activar serán de esta forma
Espero sirva de mucho a quien lo necesite, cualquier consulta sobre algo mal explicado estamos para solventar dudas.