En: PHP
18 Mar 2007Para quienes desarrollan en PHP o piensan hacerlo a continuacion presento algunas de las llamadas Best Practices o Mejores Practicas relacionadas con PHP y mas especificamente con el archivo deconfiguracion php.ini
Algunas configuraciones en el archivo php.ini controlan como PHP interpreta nuestros scripts. Estas configuraciones pueden traer errores inesperados al mover nuestros programas de un ambiente de desarrollo al de produccion. Las siguientes recomendaciones reducen la dependencia de nuestro codigo con la configuracion del archivo php.ini
short_open_tag
Siempre debemos utilizar los tags largos de PHP para iniciar nuestro codigo, es decir: < ? php echo "visita portalquito.com!"; ?>
No se debe utilizar los impresiones cortas con echo =.
asp_tags
No utilizar tags al estilo ASP: <% echo "visita ecuadormusical.com"; %>
gpc_magic_quotes
Es recomendable que en nuestro codigo incluyamos un archivo o funcion antes de ejecutar nuestras rutinas para obtener los parametros mediante $_GET o $_POST o $_COOKIE. Este archivo/funcion que debemos incluir deberia chequear si esta activadala opcion gpc_magic_quotes y luego a todos valores de $_GET, $_POST y $_COOKIE le corremos la funcion stripslashes para eliminar las barras invertidas agregadas por la opcion pgc_magic_quotes.
register_globals
Nunca confiar que esta opcion este seteada. Siempre se debe acceder a todos los valores de GET, POST y COOKIE con las variables superglobles $_GET, $_POST y $_COOKIE. Es conveniente entonces declarar $PHP_SELF = $_SERVER['PHP_SELF']; en nuestro archivo descrito en el punto anterior y despues del chequeo de gpc_magic_quotes. Como podemos apreciar, este archivo es el comunmente llamado de inicializacion y que todas nuestras aplicaciones deben tener.
File uploads:
El maximo tamaño para subir un archivo es determinado por los siguientes parametros:
file_uploads deberia estar en 1 (por omision)
memory_limit deberia esta ligeramente mayor que las variables post_max_size y upload_max_filesize
post_max_size deberia ser lo suficientemente grande
upload_max_filesize deberia ser lo suficientemente grande
Hay varios aspectos mas que se deben considerar dentro de las mejorar practicas y en posterior post los dare a conocer...
En: Fireworks
11 Mar 2007Primero creamos un circulo de cualquier color pero debe incluir un degradado radial con un tono mas claro en el centro. A continuacion debemos crear otro circulo 10 px mas pequeño y debe estar sobre el anterior, pero de color blanco con degradado lineal y transparencia alfa hacia abajo, por ultimo le aplicamos un borde fundido de la magnitud que desee. El resultado es mas realista y atractivo.
Las tareas de depurado al desarrollar en PHP pueden resultar ser algo tedioso, la verdad es que existen varias formas de hacerlo, desde el simple uso de echo, print_r, vardump, die, etc hasta el uso de sofisticados scripts, clases e IDEs de desarrollo.
Sin embargo cuando depuramos código en nuestros desarrollos en un CMS como PostNuke el depurado de código no es una tarea simple por ello a continuación muestro dos maneras de simplificar el depurado basado en un articulo de Frank Schummertz (Landseer).
#1: La forma sencilla
Utilizar una función de depurado que produce la salida necesaria.
Codigo:
/*** Funcin interna de depurado**/function pnfdebug($name='', $data, $die = false){$modname = pnModGetName();if(pnSecAuthAction(0, $modname . '::', '::', ACCESS_ADMIN)) {$type = gettype($data);echo "\n<!-- inicio del depurado de $name -->\n<div style=\"color: red;\">$name ($type";if(is_array($data)||is_object($data)) {$size = count($data);if($size>0) {echo ", tamao=$size entradas):<pre>";echo htmlspecialchars(print_r($data, true));echo "</pre>:<br />";} else {echo "):vacio<br />";}} else if(is_bool($data)) {echo ") ";echo ($data==true) ? "verdadero<br />" : "falso<br />";} else if(is_string($data)) {echo ", longitud=".strlen($data).") :$data:<br />";} else {echo ") :$data:<br />";}echo "</div><br />\n<!-- fin del depurado de $name -->";if($die==true) {die();}}}(Tomado de pnForum y ligeramente mejorado).
Se necesita ACCESS_ADMIN (acceso de administrador) para el modulo que se quiere depurar. El motivo de incluir esto es que se puede dejar el código de depurado en un sitio on-line para continuar el depurado sin que tus usuarios se den cuenta de esto.
#2: La forma difícil
Utilizar debugconsole si es que utilizas PHP 5.0.1 o superior.
Primeramente hay que copiar todos los archivos (excepto example.php) en includes/classes/debugconsole/ y actualizar el archive principal (index.php) para que se parezca a lo siguiente:
Codigo
// código normal hasta phpInit(), luego agregar:
include 'includes/classes/debugconsole/debugConsole.php';
// ahora agregamos las variables que queremos mostrar
dc_watch('modulo');
dc_watch('variable');
declare(ticks=1) {
// inicia un cronometro para observar cuanto se demora el modulo en ejecutarse
$myTimer = dc_start_timer('Tiempo de Ejecución:');
// El código original del index.php va aquí
// fin del cronometro
dc_stop_timer($myTimer);
}
Esto abrirá una popup javascript (asegúrate que tu navegador esta configurado para aceptarlos) mostrando un sin numero de información de depurado y más. Para mayor información sobre las opciones y posibilidades de la clase debugconsole dirígete a su documentación
Enlaces relacionados:
debugconsole
Si deseamos obtener determinados archivos de una carpeta accediendo con PHP, podemos utilizar la función glob(), por ejemplo si deseamos el nombre de las imágenes localizadas en el path modulos/galeria/imagenes podemos tener:
<?php
$imagenes = glob("modulos/galeria/imagenes/{*.jpg,*.png,*.gif}",GLOB_BRACE);
foreach ($imagenes as $ima)
$nombres[]=array_pop(split("/",$ima));
print_r($nombres);
?>
De esta forma obtenemos únicamente archivos .jpg .png y .gif que se encuentran en la carpeta modulos/galeria/imagenes/
La estructura de la función es:
glob ( string patrón [, int banderas]) que devolverá un arreglo
Las banderas que podemos utilizar son:
UnderMedia S.A. acabó de lanzar Miralo un generador en linea de visores para imágenes 360 o panorámicas, desarrollado en flash.
Las características que MIRALO presenta son:
Apesar de que Miralo aun se encuentra en una etapa BETA ya presenta 4 ventajas destacadas respecto a otros programas:
Lo puedes encontrar en Miralo o ver su demo
En: Scripts
6 Mar 2007Docking boxes (dbx), usa básicamente 4 elementos:
Docking boxes (dbx) usa diferentes tecnologías (CSS, HTML, JavaScript) para poder operar. La documentación es muy buena y con ella nosotros podemos personalizarlo modificando cualquiera de sus elementos.
Su uso es relativamente sencillo, veamos un ejemplo
En: Linux
6 Mar 2007Argent SNMP Monitor es un poderoso sistema que nos permite monitorear servidores Linux, Windows, Unix, Solaris entre otros.
Tenemos un sin número de objetos que se pueden monitorear por ejemplo:
La arquitectura que usa Argent se sintetiza en Rules, Alerts, Monitoring Groups y Ralators
Rules, nos permite definir cuando “algo esta mal”, por ejemplo podemos decir que una que una regla se rompa “Broken Rule” cuando el procesador está siendo usado en mas del 85%. Una excelente característica es que Argent tiene predefinido una serie de RULES que lo usaremos sin problemas, pero si requerimos algo especial no hay problema podemos definir nuestras propias reglas.
Alerts, son las acciones a realizar cuando una regla se rompa, por ejemplo enviar un mail a una determinada dirección, al igual que las “RULES”, existen un conjunto de alertas predeterminadas y también podemos crear otras.
Monitoring Groups, son los equipos que deseamos monitorer.
Ralators, relaciona todos los elementos es decir dice CUANDO (When) monitorear un equipo (Monitoring Groups), que reglas (Rules) debe evaluar y que acciones debe tomar (Alerts)
Inspiración y Determinación |
En Blog UnderMedia se recopilan y publican periódicamente noticias, artículos o comentarios generados dentro de UnderMedia S.A.