Uso excesivo de capas y estilos en CSS

Un buen artículo en el que nos comenta sobre el uso excesivo de capas y de clases. Sobre todo de DIVs, muchas veces se encierra en una capa unas etiquetas para darles formato cuando se puede evitar la capa contenedora por tener solamente un elemento hijo en su interior:

<div id="header>
<img src="logo.jpg" alt="My site name" />
</div>

Se puede sustituir por:

<h1>My site name</h1>

con estos estilos

h1 {
background:url(logo.jpg);
text-indent:-9999px; /*(that will remove the text from the page)*/
width:800px;
height:150px;
}

¿Por qué evitar estos usos incorrectos?

  • No es semántico: solo están puestos allí para maquetar.
  • No es bueno para SEO: los buscadores hacen uso de las etiquetas de cabecera para obtener datos significativos.
  • Sobran

El error sobre el uso excesivo de clases es cuando en vez de usar estilos anidados, repetimos el estilo en varias etiquetas:

<div id="menu">
<span class="menu_item">Menu Item</span>
<span class="menu_item">Menu Item</span>
<span class="menu_item">Menu Item</span>
<span class="menu_item">Menu Item</span>
</div>

CSS Diseases: Divitis & Classitis

Vía / CSS Globe

Manual de instalación y configuración de Suhosin

Ya hace un año hablé de Suhosin, un sistema avanzado diseñado para proteger los servidores y a los usuarios de defectos conocidos y desconocidos del core de PHP y de las aplicaciones realizadas con PHP.
Ahora, en el relanzado PHPFreaks nos muestran como realizar la instalación en Debian y CentOS, y cómo configurarlo.
Por cierto, curioso que un manual tan corto te lo dividan en 4 páginas, será para ganar visitas…
Hardening PHP with Suhosin

Nuevo agregador social de Bitacoras.com

Hoy en Bitacoras.com estrenamos un agregador social. ¿Qué es eso?:

  • la posibilidad de evaluar las anotaciones registradas en Bitacoras.com mediante votos
  • conocer qué es lo más importante que se publica en la blogosfera
  • poder promocionar tus entradas
  • comentar los post de otros bloggers
  • añadir un botón para votar en tu propio blog

agregador.png

Algunos dirán que ya está Digg o Menéame (o DZone para temas de programación), y que otros parecidos no han triunfado. Está claro que le idea de Digg, a parte de buena, parece ser el futuro de la web2.0, ya que la participación de los usuarios es esencial. En Bitacoras.com nos diferenciamos un poco de estos dos servicios porque la gente no añade anotaciones nuevas, se añaden mediante los pings de los blogs y, o la votas o no la votas. A parte, el que un blog te referencie te proporciona votos directamente. Y como en el resto de Bitacoras.com, solo nos centramos en blogs, en los otros servicios las URLs pueden ser de páginas de cualquier estilo (blogs, medios, paginas corporativas, …).

Metodología

El agregador social de Bitacoras.com tiene en cuenta tanto los enlaces recibidos por un post como los votos emitidos por los usuarios. Su metodología puede resumirse básicamente del siguiente modo:

La suma total de puntos de un post viene determinada por

Enlaces desde blogs

Nuestro sistema filtra las anotaciones (posts) que los usuarios nos envían mediante el ping, en busca de enlaces hacia otros posts presentes en Bitacoras.com

Cantidad y calidad. Cuando detectamos un enlace, otorgamos una puntuación al post enlazado en función de la posición en el TOP Bitacoras.com del blog desde el que se ha emitido dicho enlace. Cada enlace detectado se suma a los anteriores con sus puntos correspondientes.

Votos de los usuarios

Cualquier usuario anónimo puede valorar los posts de nuestro sistema; su voto tiene por valor “1 punto”. Para los usuarios registrados contamos con un sistema de tramos mediante el que un voto puede oscilar entre “1 punto” y “5 puntos” en función de su posición en el Top Usuarios.

Si estás registrado en Bitacoras.com, para que tus votos no sean interpretados como los de un usuario anónimo, debes estar logueado en el sistema.

Restricciones del sistema

  • El usuario sólo puede realizar un voto por anotación.
  • Un usuario anónimo puede enviar un máximo de 10 votos por hora
  • Sólo tenemos en cuenta los 3 primeros enlaces detectados hacia un post enviados desde blogs de un mismo usuario. El cuarto enlace y sucesivos aparecerán en Referencias pero no otorgan puntos en el sistema.

Nota: Tanto el Top Bitacoras.com (blogs) como el Top Usuarios están sometidos a constante revisión por parte del equipo gracias a la colaboración de los propios usuarios mediante sus sugerencias, por lo que los valores asignados a blogs y usuarios pueden variar sensiblemente con el objeto de mantener un agregador fiable y útil.

Leer Google Notebook desde PHP

La gente de IBM se ha creado un tutorial que nos muestra como recuperar los datos de nuestro Google Notebook, aplicación que nos permite crear notas dentro de las aplicaciones ofrecidas por Google.
Inicialmente nos explican como es la API que ofrece Google, ya que devuelve los datos en formato REST. Después leeremos la respuesta usando la librería SimpleXML y mostraremos los notebooks disponibles. Pasando después a mostrar el contenido de cada uno de ellos.
El único problema que hay con Google Notebook y su API es que el notebook debe ser público para poder acceder a él.
Process and integrate Google Notebook data with PHP

SecureImage: CAPTCHA en PHP

SecureImage es un CAPTCHA realizado en PHP (necesario GD) que nos permite evitar el abuso del spam protegiéndonos de sus ataques.
secureimage.png
Es muy fácil de usar, ya que en solo 3 líneas de código te muestra la imagen o valida la entrada en 6 líneas de código. Permite seleccionar el juego de caracteres, la fuente TTF o fuentes GD, permite añadir imagenes de fondo, modificar el color, el ángulo y la transparencia del código, añadir líneas que tachen la imagen o generar ficheros wav con el CAPTCHA audible.
SecureImage
PHPDeveloper.org

VCL for PHP: framework para PHP

VCL para PHP es un framework pensado para ser usado en el IDE Delphi for PHP. Quizás no sea el framework ideal, pero permite realizar aplicaciones de forma rápida, y eso, en muchos proyectos, suele ser lo que importa.
Nos ofrece la posibilidad de crear aplicaciones orientadas a objetos, sistema MVC, internacionalización, motor de plantillas, abstracción Ajax, abstracción de la base de datos, filtros para los datos de entrada e integración con webservices.
Se puede ver unos ejemplos aquí
Gracias InnovacionWeb.com por el aviso

jHeidi: cliente MySQL multiplataforma

jHeidi es una versión de Heidi realizado en Java para que se pueda ejecutar en otras plataformas y no solo en Windows.

jheidi.png

Entre las características que ofrece nos encontramos con:

  • Navegador de bases de datos, tablas y campos
  • Crear, actualizar y borrar BD, tablas, campos e índices
  • Ventana para queries
  • Administrador de usuarios
  • Mantenimiento de tablas
  • Administrador de conexiones
  • Exportar datos (CSV, HTML, …)
  • Importar CVS

jHeidi

Laboratorio: detectar parametros de la URL en Javascript

Algo bastante sencillo y que puede sernos útil es detectar los parámetros que se envían por URL para así modificar el comportamiento de nuestro Javascript, por ejemplo si se envía un parámetro o tiene cierto valor, se podría cargar un objeto o implementar una función.

El script sería el siguiente:

// Obtenemos la URL
var url = document.location.href;
// Nos quedamos con los parámetros
url = url.substring(url.lastIndexOf('?')+1);
// Dividimos los distintos parámetros
url = url.split('&');
// Almacenamos los parámetros en un array(param => valor)
var res = new Array();
for(var i=0; i

Si nuestra URL es amigable, no hay parámetros sino que se indican en la propia URL (http://servidor/metodo/accion/parametro/parametro), deberíamos hacer algo así:


//Obtenemos la Query String (URL - host)
var url = document.location.href;
url = url.substring(url.lastIndexOf(document.location.host)+1);
// Separamos mediante la barra (/)
var res = url.split('/');

Como se puede apreciar es muy sencillo, pero nos puede ser muy útil, sobre todo si queremos ganar en rendimiento y no cargar todo el js, que a veces no está muy optimizado y en todas las páginas se carga cuando a veces no sería necesario.