links for 2006-11-18

|

Lógica de aplicación y plantillas mediante PHP

Cuando desarrollamos una aplicación web, algo muy importante es separar la lógica de la aplicación de la presentación. En el siguiente artículo, nos comentan como hacerlo mediante PHP y el sistema de plantillas Smarty.

Primero nos explica la direfencia entre la lógica de aplicación, la cual se encarga de las operaciones como acceso a base de datos, validación de formularios, de la lógica de plantillas, que es la que se preocupa únicamente de mostrar la información.

Dentro de la lógica de aplicación nos tenemos que ocupar de la inicialización y configuración de la lógica de plantillas:

<?php
$smarty = new Smarty();
$smarty->display('index.tpl');
?>

Y en la plantilla mostraremos la información:

<p>
Title: {$title|strtoupper}
Summary: {$summary|truncate}
</p>

Hay que tener cuidado de no cometer el error de en la plantilla modificar el formato del texto, por ejemplo quitarle espacios u otras cosas que corresponden a la lógica de aplicación.

Os recomiendo el artículo, porque viene muy claramente explicado, con ejemplos y nos puede ser de mucha ayuda.

Application logic versus template logic

Firebug 1.0, lo que nos va a ofrecer

firebug1.0.pngYa en otras ocasiones hemos hablado de Firebug, y esta vez no puede ser menos debido a todo lo que nos va a ofrecer la versión 1.0, lo cual es mucho:

  • Usabilidad: posibilidad de abrirlo en una ventana nueva, pudiendo situarla en un segundo monitor. Listas de páginas en las que queremos que esté activo o no Firebug. Tecla de acceso directo para abrir Firebug de forma normal o en una ventana nueva. Facilidad de lectura ya que se puede aumentar o disminuir el tamaño de la letra.
  • Código HTML: visor de código fuente de forma estructurada, con posibilidad de desplegar etiquetas. Ver qué es lo que se está modificando en la página web. Editar el código HTML en el momento. Encontrar elementos HTML en el código posicionándonos en ellos con el ratón. Busquedas. Si se modifica la página y se recarga, Firebug seguirá apuntando al elemento que teníamos antes de la recarga. Copiar el código HTML al portapapeles.
  • CSS: Inspección en cascada. Previsualización de colores e imágenes. Facilidad para ajustar los estilos mediante la edición de las propiedades. Autocompletado. Modificar los valores numéricos aumentando y disminuyendo los valores usando las flechas de cursor. Selección de valores posibles de los estilos. Posibilidad de desactivar propiedades en los estilos para ver las diferencias. Inspeccionar cualquier hoja de estilos. Copiar al portapapeles colores y rutas de imágenes.
  • Visualización de CSS: Se puede ver el modelo de caja de los elementos HTML. De igual manera, se puede visualizar las medidas de la caja del elemento. Uso de reglas y guías como si se tratara de un programa de diseño gráfico. Modificación de las medidas de las cajas en el acto.
  • Monitor de red: Toma los tiempos de carga de del fichero y de los ficheros adjuntos. Separar los tiempos por tipo de fichero. Distinción entre ficheros de la caché y los que se han descargado de la red. Visualizador de la cabecera HTTP. Monito de las peticiones XMLHTTPRequest.
  • Debug: Permite encontrar ficheros js de forma sencilla. Poner puntos de interrupción en nuestro código. Incluir condiciones en los puntos de interrupción. Ejecución paso a paso. Parar automaticamente la ejecución si encuentra un error. Cuando se produce un error existe la posibilidad de ver la pila de llamdas a funciones que esperan respuesta. Visor de los valores de los objetos y de las propiedades. Uso de tooltips cuando está parada la ejecución del script para ver el valor de las variables. Medición de tiempos de ejecución. Logs de las llamadas a funciones. Acceso rápido a números de línea.
  • Búsqueda de errores: Los errores se muestran en la barra de estado del navegador. Visualización de los errores javascript solo de la página a la que se accede. Información descriptiva de los errores. Acceso fácil al debugger. Búsquedas rápidas. Filtro por tipo de errores.
  • Inspector DOM: Diferenciación entre código estándar y el creado mediante Javascript. Resumen informativo de los objetos inspeccionados. Edición de los objetos con posibilidad de autocompletado. Al recargar la página accede al mismo objeto que estaba seleccionado anteriormente. Navegación por el código Javascript.
  • Ejecución de código Javascript: consola para ejecución de código javascript. Autocompletado. El texto de la consola no es tratado como texto plano sino como hipertexto.
  • Trazas: posibilidad de mostrar trazas en la consola desde Javascript. Las trazas pueden ser de texto, objetos y texto formateado usando variables. Distintos colores para distintos tipos de logs (error, warm, debug e info). Marcas de tiempo. Stack traces. Agrupación de trazas. Inspección de objetos.

Estoy deseando que salga la beta para poder probarla.

Firebug

Vía / Ajaxian

Adobe dejará de lado al SVG

adobe.pngAbode ha decidido dejar el desarrollo del visor de SVG a partir del 1 de enero de 2008. A partir del 1 de enero de 2009 no se podrá descargar de los servidores de Adobe.
Algo que nos esperábamos todos los somos usuarios de SVG desde el mismo momento en el que Adobe compró Macromedia, teniendo en cuenta que SVG y Flash podría considerarse “la competencia”.
La verdad es que parece que SVG no despunta demasiado, pero el hecho de que Firefox y Opera incluyan visores propios de SVG es algo que quita preocupación a esta noticia.
Vía / SVG.org

|

Fireflix: controla tu cuenta de Flickr desde Firefox

fireflix.pngEncuentro en firefoXtensions (página que recomiendo que sigas si eres usuario de Firefox), una extensión que facilitará mucho el trabajo a los usuarios de Flickr.
Con esta extensión podras subir fotos nuevas, crear thumbnails en formato HTML de las fotos seleccionadas, buscar fotos en Flickr, eliminiar fotos, trabajar con sets de fotos y más cosas.
La primera vez que lo ejecutas, te aparecerá en Flickr una pestaña nueva para poder permitir el acceso a la extensión, una vez concedido ya podrás trabajar con ella perfectamente.
fireflix
Vía / firefoXtensions

Protocolo para Sitemaps de Google adoptado por Yahoo y Microsoft

Yahoo y Microsoft han adoptado el protocolo que Google sacó en el 2005 para que los administradores de sitios web puedan incluir sus páginas en Google y saber si han sido indexadas por este. Así, las tres compañias adoptarán el Sitemaps 0.90 para que esta labor sea única y más sencilla.
Para los usuarios, permite gran calidad de servicio y resultados actualizados. Al menos los usuarios ganamos con todo esto, lo cual no es poco, esperamos que sigan con este tipo de iniciativas conjuntas.
Vía / CNET News.com

10 reglas esenciales para depurar

Más consejos que siempre viene bien, algunos los conoceremos, otros simplemente los usaremos de forma automática y otros serán nuevos para nosotros. En este caso se trata de consejos para depurar nuestras aplicaciones.

  • Comprueba los datos: comprueba que los datos son los que se esperan. Una buena opción sería darle la funcionalidad al sistema de exportar los datos a un fichero de texto plano para poder comprobarlo mejor.
  • Comprende el sistema: leer el manual, seguir las instrucciones, compara tu código con los ejemplos que ofrecen, puede ayudarte a usar el sistema correctamente y no mandar datos que no son los correctos.
  • Hazlo fallar: para encontrar posibles fallos no hay nada mejor que hacerlo fallar a proposito. Si algo falla rara vez, puede ser algo bastante importante, no asumas cosas cuando intentes encontrar el problema, te puede hacer perder mucho tiempo.
  • Tómate tu tiempo: sacar conclusiones usando poca información nos puede hacer no encontrar el problema real, sino parchear un problema menor.
  • Divide y conquistarás: estrecha tu búsqueda, limita los sitios donde pueda darse el error, sigue el código hasta la zona más exacta donde pueda fallar.
  • Cambia cosas una a una: cuando encuentres varios errores, corrígelos uno a uno, para evitar encontrarte con otros errores, o que cuando algo falle por los cambios, no sepas por qué se ha producido.
  • Realiza una auditoría: da igual que parezca que todo funciona bien, sigue mirando los logs por posibles errores, por si aparecen casos que no habías visto antes.
  • Comprueba primero lo obvio: no asumas que tus ideas son correctas, cuestionate todo.
  • Pide ayuda: los test de caja negra dicen que quien debe testear la aplicación no debe ser quien la ha desarrollado, ya que muchas veces caemos en el error de pensar que algo en particular no va a fallar porque sabemos cómo funciona.
  • Si no lo corregiste, no está solucionado: las cosas no se arreglan solas, si no se reproduce de nuevo el error no quiere decir nada, el error sigue estando allí.

10 essential debugging rules

Vía / dzone

¿Qué es un LDAP?

En este artículo pretendemos dar una pequeña explicación sobre LDAP para aquellos que lo desconozcan y así luego poder ampliar sus conocimientos.

LDAP (Lightweight Directory Access Protocol) o Protocolo de Acceso Ligero a Directorio no se trata de un sistema de almacenamiento como muchas veces se piensa, se trata de un protocolo de comunicación para acceder y modificar información almacenada en un directorio, conocido normalmente como directorio LDAP. Por lo tanto, cuando se dice: “guardemos los datos en el LDAP”, se está cometiendo una equivocación.

Al tratarse de un protocolo, que funciona bajo TCP/IP, es independiente de la plataforma. Es lo que se usa para conectarse a un directorio LDAP, el cual puede estar implementado como sea, ya sea una versión comercial, open source, bajo Windows, UNIX o cualquiero otra plataforma.

¿Es el directorio LDAP una base de datos?, sí, lo es, pero no se trata de una base de datos relacional como pueda ser Oracle o MySQL. Se trata de un directorio, como pueda serlo el que guarda las fichas de los libros en una biblioteca. Al tratarse de un directorio, está totalmente jerarquizado y está optimizado para muchas lecturas y de pequeño volumen. Aunque se puede guardar lo que se quiera, está pensado para almacenar datos de poco tamaño (email, teléfono, dirección, permisos) y, a su vez, no está optimizado para que haya muchas modificaciónes, piensa que por ejemplo la dirección de correo electrónico no es algo que se modifique con mucha frecuencia.

Como ya hemos dicho anteriormente, el protocolo LDAP accede a la información contenida en un directorio, este directorio se trata de un árbol compuesto de entradas de directorio, las cuales son un conjunto de atributos, formados por nombre-valor, según se indica en un esquema.

Para identificar una entrada en el directorio LDAP, se precisa de su DN o Distinguished Name, el cual estará formado por su atributo nombre (CN o Common Name, cn=”Fulano Perez”) y otros atributos que lo relacionen con las jerarquías superiores, ya sea usando O u C (formato X.500 o=”Mi Empresa”, c=ES), O (según internet o=”empresa.com”), DC (componentes de dominio dc=empresa, dc=com). Después del DN habrá otra serie de atributos que definan la entrada.

Un ejemplo de esto, representado en formato LDIF y que nos puede hacer entender mejor el concepto, sería el siguiente:

 dn: cn=Fulano Perez,dc=empresa,dc=com
cn: Fulano Perez
givenName: Fulano
sn: Fulano
telephoneNumber: +34 555 11 22 33
mail: fulano.perez@empresa.com
manager: cn=Mengano Martinez,dc=empresa,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top

Como se puede apreciar, en esta entrada diríamos que “Fulano Perez”, perteneciente a “empresa.com” (en este caso se organiza como si se tratara de internet, porque puede darse el caso de que sea un grupo de empresa .com de las cuales “empresa.com” es una de ellas). Después veremos que hay datos referentes al empleado, como son un email y su teléfono, y datos a cerca del tipo de registro, en este caso de una persona empleada en la empresa, y datos sobre su jefe, que si los usamos en un acceso al directorio LDAP podremos obtener una información parecida.

Para que quede más claro el concepto de directorio, vamos a ver como sería la estructura:

- com
- otraempresa
...
- empresa
...
- Mengano Martinez
...
- Fulano Perez

Directorios LDAP

Algunas de las implementaciones del servidor LDAP o directorio LDAP son las siguientes:

Clientes

Librerías

LDAP in Python

Más información