jueves, 15 de noviembre de 2007

Un gráfico vale más que mil números!

Como hacer graficos de tortas y otros gráficos con php, por que es más facil leer un grafico que mirar un lote de números.

En mi trabajo diario tenia que hacer reportes de estadísticas sobre el funcionamiento de una campaña web, se trataba de un concurso que sorteaba un celular por hora entre los participantes que jugaban via web o mediante sms.

A parte de lo que era el juego y el sorteo en si, tenia que brindar reportes de codigos ingresados, codigos validos, codigos no validos, total de codigos ingresados sobre el total de codigos existentes, etc.

Cosas que podia informar mediante números y titulos, que a simple vista podían llegar a confundir o a perder a quien los miraba, pero gracias a unas gráficas de torta, lo que se queria informar quedaba bien claro y conciso.

Para hacer estas graficas, me vali de una libreria de clases libre para crear gráficos con php, la libreria en cuestion es libchar (http://naku.dohcrew.com/libchart/pages/introduction/), esta libreria permite de manera muy simple crear graficos de varios tipos: torta, barras, lineas.

Y lo bueno tambien, es que se puede usar tanto en php4 como en php5.

pero vamos a dar un ejemplo, para hacer la cosa mas entendible, vamos a crear un grafico de tortas, con la siguiente información sobre participantes de la promocion.
Total de codigos: 8000.
Validos: 4500
Repetidos: 2500
No validos: 1000

/*include de la libreria*/
include “classes/libchart/libchart.php”;

/*content type de la imagen a crear*/
header(”Content-type: image/png”);

/*creamos los datos del grafico*/
$chart = new PieChart(500, 300);

$chart->addPoint(new Point(”Validos (4500)”, 4500));
$chart->addPoint(new Point(”Repetidos (2500)”, 2500));
$chart->addPoint(new Point(”No validos (1000)”, 1000));

$chart->setTitle(”Total de codigos (8000)”);

$chart->render();

El gráfico quedaria asi

Como pueden ver es de facil uso, y los resultados muy buenos. Espero les haya gustado y lo pongan en práctica.

phpinfo: conocer como esta instalado y configurado PHP en el servidor.

La funcion phpinfo del lenguaje PHP, brinda inportante información sobre como esta instalado PHP en nuestro servidor, que este extiensiones tiene habilitadas, sobre que tipo de servidor y sistema operativo, etc. Esta información nos puede ser muy util a la hora de escribir nuestro código php o la hora de solucionar errores.

Cuando trabajamos con PHP, muchas veces es necesario saber con que versión especifica de PHP estamos trabajando, sobre que sistema operativo, que extensiones de PHP tenemos disponibles, etc.; yo diria que siempre hay que tener en cuenta esta información.

Sobre todo por que generalmente trabajamos en un ambiente o servidor de desarrollo y despues nuestro trabajo es puesto en producción en un servidor con salida a la web, que puede tener una configuración distinta a la de nuestro servidor de desarrollo, y no siempre podemos cambiar las configuraciones de ambos servidores para que se adapten a nuestras necesidades.

Por este motivo es muy importante conocer la configuración de nuestros servidores.

PHP tiene una función nos da esta informacion, la funcion es phpinfo(), phpinfo nos da información sobre:

  • La versión de PHP instalada.
  • El sistema operativo.
  • Si se esta usando PHP como módulo del servidor web o como CGI.
  • La configuración de permisos, límites de uploads, visualización de errores y advertencias.
  • Las Extensiones de PHP habilitadas, esto significa las librerias que se pueden usar, por ejemplo: librerias de base de datos, graficas, de parseo de xml, de correo, de manejo de archivos, de compresion, de manejo de cache, y muchas muchas otras que tiene PHP.
  • Información se seguridad implantada.
  • Datos de servidor.
  • Base de datos habilitadas.


Para poder ver esta información se utiliza la funcion phpinfo, una llamada a php info puede ser la siguiente:

<? phpinfo(); ?>



y la salida sería la siguiente:

El listado de información es ampliamente más largo, pero los invito a que lo verifiquen por ustedes mismos.

Se que les va a ser muy útil.

Gerardo Benitez


miércoles, 14 de noviembre de 2007

Thumbnails (miniaturas) de imágenes con Php

Como hacer miniaturas de imágenes usando Php.

El lenguaje de programación Php, entre otras cosas, nos brinda la posibilidad de generar imágenes en varios formatos, entre los cuales están: PNG, GIF, JPG.

Las imágenes pueden ser creadas a partir de una imagen que ya existe o creando el archivo de imagen a partir de cero.

Estas operaciones las logra utilizan la biblioteca GD, que permite además de manipular imágenes, obtener información sobre las mismas.

Hablando un poco mas en concreto, php nos permite además de generar html, generar imagen, en ambos casos la salidad producida por php será interpretada por el navegador como un archivo .html o como un archivo de imagen, .gif, .jpg, .png, .tif etc.

Esto nos da la posibilidad de agregar al src del tag de una imagen un archivo php, por ejemplo:

<img
src="imagen.php" width="80" height="80">

Lo que nos mostraría en el navegador una imagen de 80x80 pixels, una imagen creada a partir de código php.

Hasta aca la idea, ahora lo que tendríamos que hacer es ponerle el código a nuestro archivo Php para que nos genere la imagen.

GENERANDO IMAGENES CON PHP

Como vamos a crear miniaturas de imágenes, tenemos que crear nuestras miniaturas a partir de imágenes que ya existen.


$filename = "original_default.jpg";
$lado_thumb = 80;

//determinando el tipo
header('Content-type: image/jpeg');

//crear Lienso de la imagen
$thumb = imagecreatetruecolor($lado_thumb,$lado_thumb);
$image = imagecreatefromjpeg($filename);

//conocer las dimensiones de la imagen original

$size = getimagesize($filename);

$ancho_inicial = $size[0];

$alto_inicial = $size[1];

//tomamos el lado más grande de la imagen para tener
una imagen cuadrada

$lado = $ancho_inicial>$alto_inicial ? $alto_inicial : $ancho_inicial;

//creamos la miniatura en base al original
imagecopyresampled($thumb, $image, 0, 0, 0, 0, $lado_thumb, $lado_thumb, $lado, $lado);

// Salida calidad 70%
imagejpeg($thumb, null, 70);

Con este código vamos a generar una miniatura de la imagen original, esta imagen es generada 'al vuelo', por lo que se genera en tiempo de ejecución de la página, y no la estamos guardando en el servidor.

Ya tenemos el código necesario para generar 1(una) miniatura, pero siempre de la misma imagen.


APROVECHANDO LA BASE DEL CÓDIGO

Haciendo algunos cambios podemos hacer más útil nuestro código, por ejemplo para generar miniaturas de distintas imágenes, y hasta de distintos tamaños.

nuestra llamada original a la pagina que genera las miniaturas era:

<img src="miniatura.php" width="80" height="80">

Pasando parametros por Querystring podemos hacer nuestro codigo mas util.

Vamos indicarle a nuestro archivo que nos genere la miniatura de una imagen determinada:


<
img src="miniatura.php?imagen=sol.jpg" width="80" height="80">

Ahora tenemos que modificar nuestro archivo php, el cambio es pequenio pero muy util.

Agregamos y modificamos las siguientes lineas


//modificamos la linea donde determinamos el nombre
del archivo
$filename = isset($_REQUEST["imagen"]) ? $_REQUEST["imagen"] : "original_default.jpg";


Indicando el tamaño de la imagen de salida

Ahora vamos a pasar los parámetros de la dimensión de la imagen de salida.


<
img src="miniatura.php?imagen=sol.jpg&ancho=80&alto=80">

y modificamos nuestro php para que nos genere una imagen de las medidas deseadas.

Practico no?

todo el codigo fina junto:


$filename = isset($_REQUEST["imagen"]) ? $_REQUEST["imagen"] : "original_default.jpg";

$ancho_thumb = isset($_REQUEST["ancho"]) ? $_REQUEST["ancho"] : 80;

$alto_thumb = isset($_REQUEST["alto"]) ? $_REQUEST["alto"] : 80;

//determinando el tipo
header('Content-type: image/jpeg');


//crear Lienso de la imagen
$thumb = imagecreatetruecolor($ancho_thumb, $alto_thumb);

$image = imagecreatefromjpeg($filename);

//conocer las dimensiones de la imagen original

$size = getimagesize($filename);

$ancho_inicial = $size[0];
$alto_inicial = $size[1];

//tomamos el lado mas grande de la imagen para tener una imagen cuadrada
$lado = $ancho_inicial>$alto_inicial ? $alto_inicial : $ancho_inicial;

//creamos la miniatura en base al original

imagecopyresampled($thumb, $image, 0, 0, 0, 0, $ancho_thumb, $alto_thumb, $lado, $lado);

// Salida calidad 70%
imagejpeg($thumb, null, 70);

Gerardo Benitez

lunes, 12 de noviembre de 2007

Por que php no es un lenguaje amateur

Mucha gente tiene la falsa idea de que php es un lenguaje amateur o que solo puede usarse para proyectos "chicos", esta idea se debe en muchos casos a:
- Ignorancia de su potencial y sus verdaderos alcances.
- Creencia de que un lenguaje de uso libre no puede ser bueno, o no puede funcionar mejor que un lenguaje de licencia privativa.
- Creencia de que Php no tiene soporte oficial.
- Su libertad de uso, se puede hacer tanto buenos sitios como malos sitios solo hay que saber usar el lenguaje.

¿Por que PHP no es un lenguaje amateur?

Por Uso:

Php es usado en promedio por el 35% de los sitios del mundo de internet, esto lo convierte en el lenguaje de programación web más utilizado.
En Algunos paise como Corea, Ucrania, Mongolia, Unión sovietica, se encuentra funcionando en el 50% de los servidores.

En Paises como Estados Unidos, Canada, Polonia, Belgica, Alemania, América Latina en General, su uso supera el 30% de instalaciones.

En Argentina se encuentra funcionando en el 31.7% de los servidores.

Aquí tenemos un gráfico que indica la densidad de uso de php en el mundo, la estadistica fue tomada en agosto de 2007.







Fuente: www.nexen.net

Por que lo usan los grandes:
PHP es usado por:
Yahoo Inc
Wikipedia.org
Digg.com
Sourceforge.org
Flickr.com
Facebook.com
Friendster.com

Y no nos olvidemos de los administradores de contenido (cms) como Wordpress y Drupal, tampoco nos olvidemos de los foros que usan phpBB y vBulletin como foros del web.

Por Su comunidad de desarrolladores:

Php tiene seguidores alrededor de todo el mundo, en todos los idiomas, si estas interesado en conocer y compartir código o desarrollos en Php, solo tenes que buscar, un poco, por que hay mucho para ver...

Por Historia:
Nace en el año 1995, no ha detenido su evolución desde entonces, actualmente la versión estable es la versión 5, y ya se esta encuentra la version 6 en fase Beta.

Gerardo Benitez