Federico Alemany
< articulos class='programacion'/>
Patrones de Diseño - GoF: Gang of Four
Escrito por Federico Alemany - 27 de diciembre de 2014
Los patrones de diseño que se presentan en este articulo fueron escritos y presentados por cuatro autores ("la pandilla de los cuatro"), y por eso se los conoce con este nombre.

El ejemplo que se aborda en la descripción de estos patrones, es el mismo que se utilizó para explicar los patrones GRASP, un ejemplo de una venta (en un supermercado, por ejemplo). La explicación de cada patrón está lejos de ser un análisis exhaustivo, pero se pretende dar a entender cual es el problema básico que trata de resolver cada uno de ellos.

Adaptador: el patrón adaptador, es una especialización del patrón GRASP "polimorfismo". En el ejemplo de la venta, supongamos que las distintas formas de pago disponibles (débito, crédito, efectivo, etc) deben conectarse a diferentes sistemas (VISA para las tarjetas de crédito, y el sistema bancario para débito). Para ello, podríamos utilizar una interfaz "Pago_Interface" que implemente un método pagar(). Luego, podríamos crear una clase distinta para cada forma de pago (Pago_Visa, Pago_Master, Pago_débito, etc) y hacer que estas clases implementen esta interfaz. Con esto, logramos tener la seguridad que, independientemente del tipo de pago, nuestra clase "Venta" pueda enviar un mensaje "pagar()" con la seguridad que sera resuelto según la forma de pago elegida.

Este patrón de diseño es, en realidad, la aplicación de los siguientes patrones:
- Variaciones protegidas: debido a que las variaciones que tengan lugar en las clases d... Continuar leyendo...
Categoria: Programacion
Patrones de Diseño (GRASP):
Escrito por Federico Alemany - 10 de diciembre de 2014
En este articulo voy a tratar de resumir (muy brevemente) los patrones de diseño conocidos como Patrones GRASP. El objetivo es lograr explicar de manera muy básica y rápida cuales son los principios de estos patrones, y porque es tan recomendable tenerlos en cuenta a la hora de diseñar software.
Que es un patrón de diseño: Empecemos por entender que es un patrón. Un patrón es un conjunto de "elementos" que se repiten de manera predecible. Alguna vez, seguramente escuchamos hablar de "Patrones de Comportamiento", haciendo referencia a un determinado comportamiento adoptado por las personas o sociedades ante algún fenómeno específico (por ejemplo, en economía: cuando hay crisis, la gente gasta menos). Es decir, un patrón es un par causa/consecuencia, fenómeno/efecto o problema/solución.
Ahora bien, los patrones de diseño son situaciones o problemas observados de manera recurrente, y asociados a ellas, una solución optima (o al menos sumamente efectiva).
Por ejemplo, todas las aplicaciones informáticas (o la inmensa mayoría) necesita de una conexión a una base de datos... eso es un fenómeno común a todas las aplicaciones, un PATRON.
Cuando existen situaciones o problemas comunes, y ampliamente observados, surgen soluciones que pueden aplicarse, basándose en una resolución anterior.
En lenguaje coloquial, esto sería algo así como: "Este problema tiene la misma forma que uno que resolví exitosamente ayer, entonces aplicaré la misma solución".
Esta forma de pensar, nos lleva a entender que los patrones son formas de proceder a... Continuar leyendo...
Categoria: Programacion
AJAX con jQuery y PHP
Escrito por Federico Alemany - 02 de mayo de 2014
Unos dias atrás, leyendo algunos articulos sobre PHP, me llamo la atencion la cantidad de consultas que habian acerca de cómo usar AJAX con PHP. Si bien es un tema que da mucho para hablar, las consultas que se hacian eran mas bien basicas.
Lo primero que se me ocurrio hacer, era simplemente compartir una porcion de codigo que habia escrito hace tiempo, aunque sea, como para mostrar de que se trata AJAX.
En este articulo no solo voy a mostrar un ejemplo practico, sino que ademas, voy a explicar algunas de las variantes que tiene el framework jQuery con respecto al uso de AJAX.
Empecemos…
Lo primero que tenemos que entender, es una diferencia basica entre javascript y PHP: javascript es un lenguaje de programacion, que “se ejecuta” en el navegador, o como se dice “del lado del cliente”, mientras que PHP es un lenguaje interpretado en el servidor.
Cuando una persona visita un sitio web, solicita al servidor dicha pagina. El servidor (entre otras cosas) revisa si la pagina tiene algun codigo PHP (u otro lenguaje “del lado del servidor”), y de ser asi, primero ejecuta dicho codigo, y luego manda la pagina procesada al cliente (navegador).
jQuery, es un framework escrito en javascript que nos facilita mucho el trabajo… sobre todo a la hora de trabajar con AJAX… pero mas claro, echale wiki .
En nuestro ejemplo, vamos a usar AJAX para cargar datos desde una base de datos, y tambien para almacenarlos.
Tenemos una base de datos llamada “prueba”, dentro de la cual existe la tabla “ejemp... Continuar leyendo...
Categoria: Programacion
Sistema de CAPTCHA con PHP
Escrito por Federico Alemany - 02 de enero de 2014
Un sistema de CAPTCHA sirve para determinar automáticamente si una petición o proceso fue iniciado por un ser humano o por una maquina. Nuestra amiga Wiki dice lo siguiente:

Captcha o CAPTCHA son las siglas de Completely Automated Public Turing test to tell Computers and Humans Spart (Prueba de Turing pública y automática para diferenciar máquinas y humanos). Este test es controlado por una máquina, en lugar de por un humano como en la Prueba de Turing, por ello consiste en una prueba de Turing inversa.

La prueba de Turing consiste en demostrar que una maquina tiene cierta inteligencia, pero en este caso es al revés (de ahi lo de Prueba de Turing Inversa)... es la maquina la que intenta determinar si el humano (si es que existe) tiene la inteligencia necesaria para leer una imagen y transcribir su contenido.

Escribiendo nuestro propio captcha
Antes que nada quiero aclarar, que este es un ejemplo bastante sencillo sobre la aplicación de un sistema de Captcha, pero para aquellos que no estamos acostumbrado a usarlos, es un buen comienzo para aprender como funciona y como manejarlos nosotros mismos, sin necesidad de módulos (o código) externos. Ademas, habrá que adaptarlo a cada necesidad, lo cual no representa ninguna dificultad para alguien que tiene nociones básicas de PHP.

Lo que vamos a hacer, es un pequeño script en PHP para generar un captcha, y guardaremos su texto en una variable de sesión, para luego poder compararla con lo que ingresa el usuario.

A este... Continuar leyendo...
Categoria: Programacion
Plugins en jQuery
Escrito por Federico Alemany - 26 de diciembre de 2013
Una de las utilidades mas tentadoras que encontré en este framework escrito en javascript es la posibilidad de "agregarle" cierta funcionalidad mediante el uso de plugins.
Un plugin es una utilidad que pone jQuery al alcance de los programadores para poder, de alguna manera, ampliar las posibilidades o funcionalidades ofrecidas por defecto. Es una función que se le agrega al objeto jQuery.
Una de las mayores ventajas que tiene utilizar un plugin es la reutilizacion del código escrito. Pero antes de seguir con explicaciones, veamos un pequeno ejemplo.


Creando el primer plugin
Crear un plugin en jQuery es muy sencillo, solo debemos agregar una función a la propiedad 'fn' del objeto jQuery. Pero antes de dar una explicación mas detallada, veamos un ejemplo:


$().fn.agrandar = function(){
$(this).each(function(){
$(this).css({
backgroundColor: 'red',
display: 'block',
width:'100%',
height:'100%'
});
$(this).html('Agrandado por el plugin!');
});
return this;
});



Ahora que tenemos el plugin escrito, lo que tenemos que hacer el guardarlo... nosotros le pondremos como nombre 'agrandar.jquery.js'. Luego, habra que incluirlo en el head de nuestra pagina (de mas estr decir que debemos incluir tambien el framework jquery). Por ejemplo:

<script type="text/javascript" src="jquery.js">
<script type="text/javascript" src="agrandar.jquery.js">



En practica:
Ahora si, tenemos todo... Continuar leyendo...
Categoria: Programacion
Programación Orientada a Objetos (POO) - Parte 2
Escrito por Federico Alemany - 21 de diciembre de 2013
Lo que vimos hasta ahora en la primera parte de este post hemos visto conceptos básicos del paradigma de objetos tales como: que es una clase, que es un objeto, que es un mensaje, etc.
En esta parte, voy a explicar conceptos un poco mas avanzados, como por ejemplo la herencia y el polimorfismo, como así también que es un método, un evento, la diferencia entre método y mensaje, la abstracción, el encapsulamiento, la modularidad, la recolección de basura, entre otros.

conceptos necesarios antes de empezar

diferencia entre método y mensaje: como habíamos visto en la primera parte de este post, un método, es un bloque de código encargado de realizar alguna tarea especifica. Por ejemplo, un objeto de la clase medios de transporte podría ser un automóvil. Veamos como se compone este objeto automóvil

objeto automóvil:
Atributos:
- capacidad_de_personas
- velocidad_actual
- velocidad_maxima
- cantidad_de_ puertas
Métodos:
+ acelerar(cuantos_km/h)
+ detenerse()
+ ir_a(lugar) .....

.....como vemos en este ejemplo, el objeto automóvil esta compuesto por atributos y métodos. Como dijimos, los metodos son bloques de codigo encargados de realizar alguna tarea especifica. Para ejemplificar esto, vamos a ver el código del método acelerar(cuantos_km/h)...


Acelerar(cuantos_km/h){
Velocidad_actual = velocidad_actual + cuantos_km/h ;
}



Este método es el encargado de aumentar la velocidad del objeto automóvil, es decir, tiene un bloque de código que aumenta en "cuantos_km/h" unidades la veloci... Continuar leyendo...
Categoria: Programacion
Programación Orientada a Objetos (POO) - Parte 1
Escrito por Federico Alemany - 21 de diciembre de 2013
Programacion Orientada a objetos:
El termino "programacion orientada a objetos" surge del hecho de realizar aplicaciones apoyandose en el paradigma de objetos. Antes que nada... que es un paradigma?

Paradigma:
"Paradigma es un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico." (Wikipedia).
Hablando mal y pronto, paradigma es una manera de pensar el problema, y en funcion de ello, buscar una solucion. Por ejemplo, si pienso en una factura (de esas que te dan cuando compras algo), e intento representarla basandome en el paradigma de objetos, deberia pensarla como: un "objeto factura"...
ese objeto tiene ciertas caracteristicas (una fecha, un cliente, un numero de factura, una cantidad determinada de productos, etc). Es decir, deberia pensar en la factura como un objeto compuesto por ciertas caracteristicas.
Ahora, dijimos que la factura tenia una determinada cantidad de productos, entonces podriamos pensar a cada producto tambien como un objeto.
El "objeto Producto" tiene caracteristicas como: precio de costo, descripcion, proveedor, precio de venta, etc, etc.

Redondeando la idea, podemos ver que cada elemento de la realidad que nos rodea, puede ser pensado como objetos (una persona: con caracteristicas como edad, nombre, direccion, estado civil --- Un medio de transporte: con caracteristicas como: velocidad maxima, capacidad maxima de pasajeros, costo, etc).

El paradigma de objetos es la forma de pensar a cada elemento del problema que tenemos que resolver, como si fuera un objeto. Existen otros para... Continuar leyendo...
Categoria: Programacion