August, 2008

Modificar el código de Woopra para validar el Xhtml..y como bonus, el de Ayuda Blogs

Hoy estaba tratando de validar un theme y me di cuenta que Woopra por defecto nos provee de un código muy sencillo en javascript, tan sencillo que no valida Xhtml.

Me puse a leer lo que me sugería el validador de la W3c y me parecía raro que no valide, el código por defecto es así:

[sourcecode language='php']


[/sourcecode]

Me decía “required attribute “type” not specified.” a lo que me quedaba con cara de WTF?, si indicaba que era javascript, pero el problema viene que luego de indicar que es javascript en la línea: [sourcecode language='php']script type=”text/javascript”[/sourcecode]
cierra el script y cuando llama al código que se encuentra en woopra no indica que pide un javascript ( hablando entre nosotros :P ).
Entonces se me ocurrió indicarle antes de que lo llame al script que también era un javascript.
Quedando así:

[sourcecode language='php']


[/sourcecode]
Donde xxxxxxxx es el id del sitio ;) . Practicamente es una pavada pero si no se indica que es javascript parece que el validador no se da cuenta y da problemas.

Otro Problema que tuve fue con el Plugin de Ayuda Blogs que creo Rogelio junto con Javi, me decía “cannot generate system identifier for general entity “title”.” y el problema está en el código usado para el envío con el título. En sí, el plugin valida pero agregándolo “a mano” no.

El código que javi suguiere, que a mi gusto, debería llevar un Nofollow, ya que no tiene sentido linkear ahí, es este (Ver txt porque sale un espacio que no debería si pongo el código acá).

El código que hay que poner para que el Xhtml valide -y el que yo recomiendo- es el siguiente.

Nota: No olviden cambiar url_de_la_imagen.jpg por la ruta donde este la imagen de Ayuda Blogs.

Evitar Hotlink mediante htaccess

¿Qué es Htaccess?

de glosario informático:

es un archivo de configuración en un servidor Web, y contiene comandos en el lenguaje del servidor que le indican cómo debe comportarse en ciertas situaciones. Alguno de los usos más comunes de un archivo htaccess son la restricción del acceso a determinados archivos o carpetas en Internet (o en una intranet) mediante el uso de contraseñas. Adicionamente, los htaccess se usan para redirigir usuarios automáticamente, para bloquear o permitir el acceso al servidor a ciertas direcciones de IP, y para llamar páginas de error customizadas en lugar de las páginas de error 404 standard del servidor. Los servidores Web Apache, y otros servidores que cumplimentan las normas del NCSA pueden usar htaccess.

Como estos días me di cuenta que estaba sufriendo el tan odiado Hotlink me he puesto a averiguar algo mas sobre el tema y ver que podía hacer para evitarlo, antes tenía 100000Gb de transferencia, ahora solo 30, y si no los cuido podría estar caído a mitad de mes el blog y no es lo que quiero.

Entre la infinidad de utilidades que se le puede dar a un archivo htaccess – parece mentira que un fichero de texto plano pueda hacer tantas maravillas – están las mas usadas por los que usamos WordPress que es la modificación de la estructura de los permalink, hacer redirecciones, banear comentaristas insoportables , parar el hotlink de imágenes, entre otras.

Antes de editar el htaccess a mano, he probado con plugins para -supuestamente- evitar el hotlink pero nada me sirvió, ¿por que?, ni idea, pero el asunto es que nada de eso me servía.

Voy a tratar de ir juntando varias utilidades en relación al htaccess, pero en este artículo voy a contar lo que hize yo y me fue útil para parar el hotlink ya que podría servirle a varios que estuvieron -o están como yo estuve- , como es el caso de Cecilia.

Por defecto, este era mi htaccess:

1
2
3
4
5
6
7
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>

Que solo esta configurado para que modifique las urls del tipo:

http://tengoun.com.ar/?p=1

a el formato:

http://tengoun.com.ar/nombre-del-post/categoría/mes/año/

Para evitar el hotlink de todos los sitios, o sea, que no se vea una imagen alojada en nuestro servidor en ningún lado debemos agregar esto a nuestro htaccess:

1
2
3
4
5
6
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]

(reemplazar tusitio.com por la url de tu sitio)

Estas lineas de código dicen que ningún fichero del tipo gif, jpg, jpeg, png o bmp puedan visualizarse desde cualquier otro sitio.

He aquí el problema, si denegamos el acceso a las imagenes alojadas en nuestro servidor a todas las url`s los lectores desde google reader (por ejemplo) no podrán visualizarlas.Por eso, y como somos buenas personas, tenemos que hacer una lista de sitios donde se visualizarán las imagenes, en este caso, vamos a permitir el acceso solamente a google reader.
Nos debería quedar así:

1
2
3
4
5
6
7
8
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]

Pueden seguir agregando Url´s a la lista blanca, aquí un ejemplo, agregando a Planetaki, bloglines y feedburner:

1
2
3
4
5
6
7
8
9
10
11
12
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/urldetufeed$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]

Ustedes, según sus lectores seguramente sabrán mediante que lector de feed son leídosy deberían ir agregando.

Para que no queden dudas de como y donde se debe agregar el código, les dejo un ejemplo de como quedaría el mío completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/urldetufeed$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</ifmodule>

Configurandolo así directamente no se mostrará ninguna imagen, ahora si querés mostrar una imagen a cambio de la elegida por quien hace hotlink podés hacer así:

RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://dominio-de-la-imagen-/no-hotlink.jpe [R,NC,L]
Nota: como los jpg no se visualizan, hay que ponerle la extensión jpe a la imagen en caso de alojarla en nuestro servidor

Ejemplo de como se ve:

Ejemplo de como quedaría todo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/TengoUncomar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://tengoun.com.ar/no-hotlink.jpe [R,NC,L]
</ifmodule>

Nota: no olviden reemplazar los dominios.

Por último, mi opinión es que si quieren que se muestre una imagen elegida en lugar de la “robada” obviamente la deberían alojar en un servidor que no sea al que estamos protegiendo ya que no tendría sentido y dejaríamos de lado el propósito de evitar el hotlink para disminuir el consumo de ancho de banda.Lo mas recomendable sería que no se muestre nada.
Nota de nuevo: Agradecería que si alguien no puede ver las imagenes desde su lector de feeds lo comente para así poder agregar su lector a la lista blanca ;) .

A continuación, una muestra de mi htaccess actual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.feedburner.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/TengoUncomar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.planetaki.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</ifmodule>

Mucho de lo que aprendí y publiqué sobre htaccess lo encontre por Perishable Press.

Actualización: Mediante un comentario preguntaron como se haría para permitir el hotlink a todos menos a un sitio, lo que hay que hacer es esto:

1
2
3
4
5
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://url-a-excluir.tld/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</ifmodule>

si alguien tiene problemas o alguna duda que avise y vemos que podemos hacer ;)

¿Y si probamos incrementar las ganancias en adsense?

Acabo de leer un post escrito por Brian Armstrong en Problogger en el cual escribe sobre algunas pruebas “para aumentar los ingresos de adsense de la noche a la mañana”, pero vamos, seguramente quien este leyendo esto y sepa lo que es adsense se estará riendo como hize yo cuando leí el título, ya que si fuera tan fácil todos seríamos millonarios con un blog, no se puede ser millonario, pero si se puede probar y tratar de mejorar un poco las ganancias.
Luego de empezar a leer el contenido me gusto mucho lo que se ha echo.

Han comparado los diferentes formatos de anuncios de adsense y su ubicación:

#1 - Imagenes alineadas a la izquierda y a la derecha dentro de los artículos.
Ejemplo:

# El anuncio alineado a la derecha obtuvo un CTR de 0,78% y un CPM de $ 1,41

# El anuncio alineado a la izquierda obtuvo un valor de 1.30% de CTR y $5.31 de CPM.

Por lo que se deduce que el mas rendidor es el anuncio alineado a la izquierda por un 276% sobre el alineado a la derecha.

# 2 – Arriba y a la derecha, anuncios de imagenes contra anuncios de texto.
Ejemplo:

Ente caso se terminó la idea mia de que se generan mas clicks en un anuncio de texto que en un banner, aunque el de texto pagó mas (siempre hablando de este experimento).

# Los anuncios gráficos obtuvieron un CTR de 0,35% y un CPM de $ 1,74.
# Los anuncios textuales obtuvieron un CTR de 0.33% y CPM de $2.15.

#3 – Al final de cada artículo, Banner de imagenes contra anuncios textuales.
Ejemplo:

# Los banners gráficos tuvieron un 0,58% de CTR y un CPM de $ 1,86.
# Los anuncios textuales lograron 0,43% de CTR y $ 2,27 de CPM.

Quien quiera mas detalles acá subi una captura de la planilla con los datos presentados para quien le interese analizarlo mas “a fondo”.

Sacando algunas conclusiones y comparando los que menos rendimiento generaron con los mas rendidores hay una diferencia de mejoría del -increíble- 94%.

Como bien sabemos todos cada blog es diferente y puede que un anuncio ande en un blog muy bien y en el otro sitio no rinda, en realidad lo mejor es probar, probar y sacar las propias conclusiones, pero siempre es bueno mirar un poco para el costado.

Incluso, como comenta Brian, hay muchas cosas mas para probar, como por ejemplo, alinear los anuncios al final de cada post a la izquierda o viceversa. Probar con diferentes esquemas de color, etc.

En verdad ha sido un buen análisis y a veces sirve como empujón para seguir probando y no quedarse siempre con que “así esta bien”..
Espero que el post les alla servido tanto como a mi ;)

Las imagenes y los datos de ctr, cmp y demás fueron extraídos de ProbloggerSplit Testing: How To Increase Your Adsense Earnings 94% Overnight.

Fotos de un iPhone 3G Roto…y desarmado!

Increíbles las imagenes que ha subido un usuario de flickr a su cuenta sobre un iPhone 3G Roto y ensima lo ha desarmado..

Pueden ver las restantes 26 fotos en la galería

Vía Digg

Página 1 De 212