2010/12/27

Plugin Maven to insert GoogleAds in a generated site

Hace poco creé la cuenta de Google AdSense para insertar publicidad en mi proyecto Open Source manejado con Apache Maven y esperar si se puede ganar algo de dinero.
Para tal efecto, creé la cuenta en la página , esperé los días necesarios para que activaran la cuenta, y entonces estaba listo para adicionar la publicidad en la página.
Como hay miles de plugins para Maven, pensé que solo bastaba con escribir unas palabras claves en Google, seleccionar el plugin deseado, leer la documentación, configurar el plugin, y voilà.
Sin embargo, dicha búsqueda fue infructuosa. No encontré nada relacionado con la adición de publicidad a sitios web generados con Apache Maven. No creo ser la primera persona en tener esa idea, pero no he encontrado nada relativo con eso, y me parece muy extraño, viendo la gran cantidad de proyectos existentes publicados en Internet.
Por tal motivo me puse a pensar cómo adicionar la publicidad en un sitio Web, y es así como les presento esta idea. Claro está que queda como una idea, y hasta ahora voy a comenzar el proyecto del plugin Maven.
Lo primero que todo fue ver los tipos de publicidad de Google (https://www.google.com/adsense/static/es/AdFormats.html), y la estructura de página que ofrece Maven. En ese caso, los mejores lugares son:
  • En la columna izquierda donde están las secciones, a la altura del PoweredBy se podría poner "Botón (125x125)", "Skyscrapper (120x600)", "Banner Vertical (120x400)".
  • En la parte superior donde están los logos se podría poner un grande como: "Rectángulo pequeño (180x150)", "Cuadrado (200x200)", "Cuadrado (250x250)", "Rectángulo mediano (300x250)"; o un banner horizontal como: "Skyscrapper horizontal (728x90)", "Banner (468x60)", "Medio banner (234x60)", "Muestra hasta 4 o 5 vínculos (468x15)", "Muestra hasta 4 o 5 vínculos (728x15)".
  • En cualquier parte de una página (como encabezado, pie de página o intermedio): "Skyscrapper horizontal (728x90)", "Banner (468x60)", "Medio banner (234x60)", "Muestra hasta 4 o 5 vínculos (468x15)", "Muestra hasta 4 o 5 vínculos (728x15)".
Teniendo las posibles ubicaciones y formas que van de acuerdo a la estructura de una página Maven, ahora es necesario insertar el código.
Para este caso vamos a suponer que vamos a insertar una publicidad en la columna izquierda, a la altura del logo PoweredBy.
La estrategia será crear un PoweredBy ficticio para que nos genere un código html, el cual se reemplazará con el contenido de la publicidad GoogleAds.
El estilo escogido fue Skyscrapper y Google nos indica que es necesario insertar el siguiente código:

<script type="text/javascript"><!--
google_ad_client = "ca-pub-9663595078690574";
/* Maven */
google_ad_slot = "4093121225";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Ahora, en el archivo site.xml, usted pondrá una etiqueta o tag en la sección 'Proyecto' la cual será así ():

<logo name="googleAds" img="googleAds"/>

En este momento, el descriptor de Site está configurado para generar un PoweredBy ficticio. Procedemos a generar el sitio via 'mvn site site:deploy' lo cual creará los archivos del sitio web y los desplegará en el servidor.
Nos conectamos al servidor donde esté hospedado el sitio web (en mi caso es conectarme al shell de SourceForge) y creamos un archivo llamado 'subst.sed' que tendrá la información necesaria para ser procesado con 'sed'. El contenido es:

N;N;N;s/<a href="" title="googleAds" class="poweredBy">.*<img alt="googleAds" src="googleAds" \/>.*<\/a>/\n\n<script type="text\/javascript"><!--\ngoogle_ad_client = "ca-pub-9663595078690574";\n\/\* Maven \*\/\ngoogle_ad_slot = "4093121225";\ngoogle_ad_width = 120;\ngoogle_ad_height = 600;\n\/\/-->\n<\/script>\n<script type="text\/javascript"\nsrc="http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js">\n<\/script>\n/g

Ahora, para finalizar, ejecutamos sed sobre el archivo index.html para reemplazar el contenido:

sed -f subst.sed index.html > index.html2 ; mv index.html2 index.html

Qué falta? hacer esto con un plugin para maven, que se pueda aplicar sobre todas las páginas generadas por el plugin site. Esto evitará usar sed (ya que así solo funciona para plataformas Linux/Unix y NO en Windows sin Cygwin) y en su lugar utilizar el plugin ant que permite reemplazar texto usando expresiones regulares.
En el plugin poder escoger el tipo de publicidad que se quiere poner, y buscar un comodín para las otras partes (la parte de logos, o en el cuerpo de la página) tal como se hizo con PoweredBy.
El plugin debe ser configurable para introducir los id de GoogleAds (google_ad_client).
In the Maven life-cycle, the plugin should be executed in the phase post-site of the site life-cycle.

2010/12/15

Idea Facebook - Morphing para las fotos

A finales del 2010 salió una nueva versión de perfil de Facebook. Creo que esta es la tercera vez que hacen cambios drásticos, y pues hasta el momento me parece buena, pero de acuerdo a lo que me presentaron falta aun algo.

En el video para actualizar al nuevo perfil, mostraban un video en el que se veía la cara de un hombre la cual iba cambiando con las fotos, y pues yo creí que esa era la nueva funcionalidad del nuevo perfil, sin embargo no la encuentro.

Por tal motivo se me ocurre la idea de hacer un morphing con las fotos que están en el Facebook y así ver cómo es la progresión de la persona. Por tal motivo hay que hacer las siguientes cosas:

- Escoger las fotos que van a hacer parte del Morphing, ya que no todas las imágenes de un perfil son fotos de la persona.
- No se puede decir que todas las fotos donde está taggeada la persona son verdaderas fotos de la persona, hay veces que taggean una foto en donde no aparece.
- Las mejores fotos serían en las que aparece de frente la cara y de un buen tamaño, ya que hay fotos en las que la cara es muy pequeña.
- Se podría poner la opción de zoom, para las fotos en las que la cara está muy pequeña, y así se tiene un morph de cabezas del mismo tamaño.
- Siguiendo la mismo idea, se podrían cortar fotos, ya que hay fotos en las que aparecen varias personas.
- Una vez que se tiene una lista de las fotos que se quiere hacer morphing, se deben organizar cronológicamente. Se podrían poner por defecto de acuerdo a la fecha con que se publicaron, sin embargo sabemos que es falso, porque hay veces que se publican fotos de infancia.
- Ya teniendo las fotos a las que se quiere hacer morphing, con una fecha de captura en una línea de tiempo, y el tamaño adecuado se puede hacer un video del morphing.
- Un extra podría ser indicar la distribución de la cara (ojos, nariz, boca y orejas) en 3D para así ayudar a la aplicación a hacer mejor el trabajo.

En cuanto a la parte técnica, la aplicación se puede hacer siguiendo los siguientes artículo o utilizando las siguientes aplicaciones:

- Cómo hacer una aplicación Facebook desde Eclipse usando Java http://www.ibm.com/developerworks/opensource/library/os-eclipse-facebook/index.html

- Algoritmo para hacer morphing http://code.google.com/p/javamorph/
http://www.java2s.com/Code/Java/3D/Morphing.htm