Para 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...

Primero 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.

ejemplo

Debug en PostNuke

En: PHP|Zikula

10 Mar 2007

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:

  1. /**
  2. * Funcin interna de depurado
  3. *
  4. */
  5. function pnfdebug($name='', $data, $die = false)
  6. {
  7. $modname = pnModGetName();
  8. if(pnSecAuthAction(0, $modname . '::', '::', ACCESS_ADMIN)) {
  9. $type = gettype($data);
  10. echo "\n<!-- inicio del depurado de $name -->\n<div style=\"color: red;\">$name ($type";
  11. if(is_array($data)||is_object($data)) {
  12. $size = count($data);
  13. if($size>0) {
  14. echo ", tamao=$size entradas):<pre>";
  15. echo htmlspecialchars(print_r($data, true));
  16. echo "</pre>:<br />";
  17. } else {
  18. echo "):vacio<br />";
  19. }
  20. } else if(is_bool($data)) {
  21. echo ") ";
  22. echo ($data==true) ? "verdadero<br />" : "falso<br />";
  23. } else if(is_string($data)) {
  24. echo ", longitud=".strlen($data).") :$data:<br />";
  25. } else {
  26. echo ") :$data:<br />";
  27. }
  28. echo "</div><br />\n<!-- fin del depurado de $name -->";
  29. if($die==true) {
  30. die();
  31. }
  32. }
  33. }

(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:

  • GLOB_MARK _ Agrega una barra a cada elemento devuelto
  • GLOB_NOSORT _ Devuelve los archivos como aparecen en el directorio (sin ordenar)
  • GLOB_NOCHECK _ Devuelve el patrón de búsqueda si no se han encontrado archivos coincidentes
  • GLOB_NOESCAPE _ Las barras invertidas no indican metacaracteres
  • GLOB_BRACE _ Expande {a,b,c} para que coincida con ‘a’, ‘b’, o ‘c’
  • GLOB_ONLYDIR _ Devuelve únicamente entradas de directorios que coinciden con el patrón

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:

  • Totalmente personalizable, pues usa un archivo XML externo de configuración.
  • Fácil de controlar, permite desplazar en todas las direcciones.
  • Permite incluir texto descriptivo, totalmente configurable (Tipo de letra, tamaño, color, fondo).
  • Cargador dinámico, el cual muestra segmentos de la imagen desde el primer instante, evitando el uso de barras de carga o similares.
  • Listo para usar.
  • Su uso es totalmente libre.

Apesar de que Miralo aun se encuentra en una etapa BETA ya presenta 4 ventajas destacadas respecto a otros programas:

  • Pesa solo 10 kb.
  • Totalmente personalizable sin necesidad de software especial, únicamente un editor de texto.
  • La imagen se muestra inmediatamente, no hay que esperar hasta que la “barra de carga” marque el interminable 100%.

Lo puedes encontrar en Miralo o ver su demo

Docking boxes (dbx), usa básicamente 4 elementos:

  • dbx-group, el cuál agrupa los “dbx-box”.
  • dbx-box, encierra el contenido.
  • dbx-handle, encargado básicamente de mostrar / ocultar los elementos.
  • dbx-content, el contenido.

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

Argent 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:

  • Hardware CPU, RAM, Cache, etc.
  • Oracle
  • SQL Server
  • Exchange

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)

Acerca de UnderMedia

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.

Twitter UnderMedia

Comunidad

Ultimas visitas

Raking

  • Blogalaxia
  • Top Blogs Ecuador

Switch to our mobile site