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