infografía : anatomía de una landing pages perfecta



Consejos para mejorar las conversiones de tus Landing Pages


Cuando un visitante llega  o “aterriza” en cualquier página de tu web, lo más importante es conseguir:

Captar su atención
Persuadirlo
Convertirlo en lead y luego cliente

Para conseguir lo anterior, hay que alinear todos los elementos que componen cada página de aterrizaje o landing page para obtener el objetivo deseado:



Los primeros pasos

1. Envía a la gente a una página relevante. La primera pregunta que el visitante se hará cuando llegue a tu página será algo así como ¿estoy en el sitio correcto para encontrar lo que busco?. Si llega a la home page, posiblemente se pierda entre todas las opciones y se irá. Por ello, lo mejor es dirigir el tráfico hacia una página especialmente diseñada para que el visitante sienta que ha llegado a la página que estaba buscando: la landing page para ese producto o servicio.

2.  Crea una experiencia consistente. No importa la procedencia del visitante, ya puede ser desde SEO, SEM, desde otra página o desde una campaña de email marketing. Lo importante es que ha llegado haciendo click en un enlace o banner que le proponía algo. Por tanto, se consistente con el mensaje del paso anterior y presenta en la landing page el contenido que espera. No hagas que se sienta frustrado al llegar a la página y se vaya. Si el visitante estaba buscando galletas, no le presentes una landing page relacionada con la venta de hornos porque no es lo que estaba buscando.

3. Elimina la navegación. Al igual que en los grandes centros comerciales, donde eliminan la luz solar y todo tipo de referencia horaria para que te concentres en el proceso de compra, en una landing page hay que eliminar las distracciones para conducir al visitante a la acción deseada: la conversión. Si se mantiene la navegación en una landing page, se corre el riesgo de que el visitante haga click sobre alguno de los enlaces, se pierda en el camino y nunca vuelva para convertirse en nuestro cliente.

4.  El primer impacto. Lo que mejor explica esto es la siguiente frase: “Nunca hay una segunda oportunidad de crear una buena primera impresión“. En internet sucede lo mismo: el visitante llega, analiza en 4-5 segundos y si no encuentra lo que busca se va. Por tanto, es extremadamente importante situar en la primera parte de la página los elementos más importantes (ver siguientes puntos) para conseguir la atención del visitante. No olvides lo siguiente: leemos de arriba a abajo y de izquierda a derecha.

5. El tamaño ideal de una landing page. Dependerá del público y de cómo se presente la información. En repetidos tests, las landing pages largas que contienen información detallada del producto o servicio convierten mejor que las más cortas. La única forma de saber el tamaño ideal es haciendo tests.

6. ¿Vídeo o imagen? Por regla general el vídeo tiene más capacidad de retener la atención que una imagen ya que, una vez se hace click sobre reproducir,  el visitante focaliza toda su atención en el vídeo. Evidentemente el vídeo debe explicar el producto y sus beneficios pues no servirá de nada mostrar un vídeo corporativo si lo que quiere el visitante es comprar galletas. Tiene el inconveniente de ser más costoso, pues  se requieren más recursos para realizar un vídeo profesional que ayude a las conversiones. El vídeo debe de ser, como máximo, de 2-3 minutos. Después habrás perdido la atención del visitante.



Título

El objetivo del título es conseguir la atención del visitante para que siga leyendo el resto del mensaje:

VER ANATOMIA DE UN LANDING PAGE

7. Deja espacio alrededor del título para que destaque.

8. Utiliza una tipografía apropiada para titulares. Es muy importante que llame la atención.

9. Mueve el título fuera de la alineación del texto.

10. No olvides que las palabras clave principales utilizadas en SEO y PPC para captar tráfico hacia tu landing page han de estar presentes a lo largo del texto y también en el título.

La “imagen vendedora”

No solo se trata de la foto principal de tu producto o servicio. También has de tener en cuenta que todos los elementos gráficos de la landing page pueden tener un impacto significativo en el resultado de tus campañas, tanto para mejorarlo como para dinamitar las conversiones.


11. Numerosos estudios han demostrado que las fotos con personas convierten mejor.

12. Diversos estudios han demostrado que las fotos de productos que se pueden rotar 360º consiguen aumentar significativamente las conversiones.

13. Utiliza la “imagen vendedora” para evocar sensaciones positivas en la mente del visitante. Eso ayudará a generar confianza.

14. Las imágenes que se utilizan en las landing pages han de tener una clara relación con el mensaje que se desea transmitir en la landing page.



La Llamada a la Acción (CTA o Call to Action)

La “llamada a la acción” o “Call to Action” es el elemento de la web que le solicita al visitante realizar una acción.

15. Cambios sutiles en el botón de acción (como el color, tamaño o ubicación) pueden impactar significativamente en la tasa de conversión.

16. La redacción del mensaje es un elemento fundamental en la conversión. Opta por un mensaje sencillo, claro y llamativo que inspire al visitante a realizar la acción. Asegúrate de que llame la atención. Normalmente, cuanto más grande, mejor.

17. Ten muy en cuenta lo que el usuario ve cuando se carga la página sin tener que hacer scroll. En esa parte de la página pasará el 80% del tiempo. Por tanto, mantén los elementos más importantes en este espacio.

18. Utiliza siempre el mismo CTA: si cada vez que presentas el botón  ese tiene un mensaje, color y tamaño distintos, terminaras por despistar al visitante. Lo recomendado es utilizar siempre el mismo CTA a lo largo de toda la landing page.

Formulario

Es el punto clave de conversión. El objetivo es que el visitante deje sus datos.

19. Revisa que el formulario sea fácil de entender y presente las instrucciones de forma clara y concisa.

20. Utiliza flechas u otros tipos de señales direccionales para indicar al visitante la acción a seguir.

21. Indica educadamente los errores al rellenar el formulario.

22. Normalmente un formulario con menos campos obtiene un mayor número de conversiones, pero no siempre es así. Ten cuenta que, en ocasiones, la falta de preguntas en el formulario nos puede conducir a una información pobre de los leads, lo cual dificulta cerrar el ciclo de venta. Lo mejor es probar para ver qué te funciona mejor.



Beneficios

¿Cómo puede ayudar tu producto o servicio a un potencial cliente?

23. Los visitantes no leen, escanean el texto. Por tanto, considera resumir los párrafos en sencillos puntos.

24. Cuando redactes los beneficios, lo primero es entender a la audiencia a la cual quieres llegar para poder conectar emocionalmente con ella. Si escribes para todo el mundo, no terminarás conectando con nadie.

25. Como regla general, vende los beneficios, no las funcionalidades. Quien compra un taladro, no quiere un taladro. Lo que realmente quiere es hacer un agujero. Centra tus esfuerzos en explicar cómo tu producto o servicio puede beneficiar al potencial cliente.



Credibilidad

26. Haz que el  número de teléfono sea visible. De esta forma se consigue confianza del visitante al hacerle saber que hay un negocio y alguien listo para responder al teléfono.

27. Testimonios:  Los testimonios son una forma muy eficaz de generar confianza. Eso sí, un testimonio falso también puede crear desconfianza. Incluye imágenes de personas reales, no las que encuentres en Internet.

28. Certificaciones: Tanto la pertenencia a asociaciones como logos de entidades certificadoras también ayudan a generar confianza.

29. Política de privacidad: más allá de los requisitos legales de cada país respecto a la privacidad de datos, los usuarios son plenamente conscientes del mal uso que se puede hacer con su información personal y a nadie le gusta recibir spam no deseado. Por ello, la política de privacidad es otro elemento a no olvidar en tus landing pages. Cuando muestres la política de privacidad, hazlo con un lightbox para mejorar la experiencia del usuario y evitar tener que redirigirlo fuera de la página.

30. Marca: se consistente. Todas y cada una de las veces que se menciona la marca se ha de hacer de forma uniforme ¿te imaginas empezar un proceso de compra y encontrar un logo distinto al de la página del producto?.

31. La autenticidad vende más que la venta agresiva: en Internet es fácil comparar y descubrir quien miente. Céntrate en los beneficios y en cómo puedes ayudar al visitante, en vez de  prometer cosas que no se pueden cumplir. Lo que menos quieres es tener clientes insatisfechos.

32. Utiliza hechos que puedas probar: Afirmaciones como “líder en el sector” o “el mejor restaurante de la ciudad” son poco contrastables y tienden a generar más desconfianza que otra cosa. Por tanto, céntrate en aquellos hechos que puedas probar.  Si se tratara de una pizzería se podrían utilizar: “5 veces nombrado el mejor  restaurante italianos por la institución Y”, “Servimos más de 26039 pizzas a nuestros clientes en 2011″, “importamos la materia prima directamente de Italia”, etc.

33. Diseño profesional: Aunque se perfeccionen todos los demás aspectos, si el diseño es poco profesional todo el esfuerzo no servirá de nada. Según un estudio reciente, el 94% de visitantes rechaza o desconfia de un sitio Web por su apariencia. En otras palabras, no te puedes permitir perder clientes por no tener un diseño profesional.



Lo que NO debes hacer – No molestes a tu visita

34. Texto, texto y más texto. Si aburres al visitante, se irá. Una vez que tengas todo el texto redactado, elimina la mitad y tendrás una aproximación de lo que debes publicar. Lo siguiente es distribuirlo de forma de sea fácilmente escaneable y no sea necesario leer cada palabra para saber de qué se trata. Utiliza todo lo que esté en tu mano: bullet points, colores, negritas, imágenes, etc.

35. Popups: ¿hay algo más incómodo que un pop up? Para no incomodar a tus visitantes y evitar que Google Adwords te elimine la cuenta, lo mejor es no hacer uso de ningún tipo de popups.

36. Utilizar fotos que gritan que son de stock , sobre todo si son las que aparecen en los primeros resultados de Google Images porque todos las hemos visto en cientos de webs.  Las imágenes han de parecer naturales y propias. De lo contrario puede provocar desconfianza.



Métricas, analítica y reporting

37. Utiliza una herramienta de analítica web. Lo más sencillo y económico es darse de alta en Google Analytics. Hay otras herramientas más enfocadas como KISSMetrics o GetClicky que tienen un precio bastante razonable.

38. Medir la conversión: lo primero que debemos tener claro es qué constituye el éxito dentro de una landing page. Normalmente cuando se completa una acción, como rellenar un formulario, el visitante es redirigido a otra página como “thankyou.html”. Entonces diremos que la conversión se produce cuando un visitante llega a esta página. Por tanto, estamos en predisposición de medir la tasa de conversión, es decir, el % de visitas que convierte. Recuerda: lo que no se puede medir, no se puede gestionar…¡y menos mejorar!

39. Mapas de calor y de scroll : Es una forma sencilla de conocer cómo se comporta el visitante en la landing page. Por una parte el mapa de calor ofrece información sobre dónde hace click el visitante y cómo mueve el ratón. Por otra parte el mapa de scroll permite conocer cuáles son las zonas de la página donde pasa más tiempo y hasta dónde ha llegado. Con esta información se puede empezar a hacer cambios y pruebas para mejorar el performance de la landing page. Una herramienta económica  y con versión de prueba que permite hacer esto es Crazy Egg.

Testing

Es imposible alcanzar la perfección a la primera. El comportamiento humano es impredecible y en muchas ocasiones nos llevaremos grandes sorpresas. Lo bueno es que Internet nos permite experimentar y testear de forma rápida y efectiva para ir mejorando la efectividad de nuestras campañas.

40. ¿Qué testear? En primer lugar se ha de probar la efectividad de los elementos principales de la landing page: título, beneficios y la imagen principal. También se puede optar por probar dos diseños totalmente distintos para ver cómo reaccionan los visitantes ante cada uno de ellos.

41. Test A/B: Es un test para elegir entre dos versiones de la misma landing page para quedarnos con la que más conversiones nos proporciona. En el test A/B se puede probar a cambiar elementos individuales (título, imágenes, beneficios, botones, etc) o todo el diseño para ver cuál funciona mejor. Si no has realizado tu primer test, te enseñamos paso a paso cómo hacerlo.

42. Test Multivariable: Al contrario que el anterior, al usuario no se le presentan dos páginas distintas, sino que es siempre la misma y lo que va cambiando son los elementos individuales para ver cuáles funcionan mejor. Técnicamente es más complejo y requiere de un mayor número de visitas para tomar decisiones estadísticamente relevantes.

43. No existe una landing page perfecta. Mantén siempre los ojos bien abiertos y haz brainstormings para recabar nuevas ideas que puedan testearse e intentar mejorar la conversión. Pregunta a tu fuerza de ventas, al departamento de marketing,  y a todo el personal encargado de la comercialización para intentar conseguir los inputs e ideas que te permitan seguir mejorando.

44. Medir la efectividad de las fuentes de tráfico:   Al igual que se puede medir la efectividad de cada uno de los elementos, las herramientas de analítica web permiten conocer cuáles son las fuentes de tráfico que mejor convierten y, por tanto, las más rentables. Con esta información será más fácil distribuir el presupuesto de forma más eficiente.

45. Conecta Adwords con Google Analytics: para conseguir información no solamente cuantitativa, sino también cualitativa. Con Adwords conocerás el número de impresiones, CTR, Clicks, conversiones, tasa de conversión y su coste. Sin embargo, una vez se ha conectado con Google Analytics la información es de gran valor para tomar decisiones: tasa de rebote, navegadores, ruta de navegación, tiempo en el sitio, etc.  Si no lo has hecho, ¡ya es tarde! Con este manual no tendrás ningún problema.



¿Cuándo utilizar una landing page?

46. PPC: El objetivo de cada click es, por definición, conseguir una conversión (excepto cuando se trata de una campaña de branding). Por tanto, las campañas de PPC junto con la landing page han de estar optimizadas para conseguir el mayor número de clicks, reducir la tasa de rebote, aumentar la posición media y el quality score y mejorar las conversiones. Cuando haya suficiente información empieza a  reducir pujas o pausa las palabras clave con menor conversión y dale más protagonismo a las más rentables. No te asustes, en esta infografía se explica con más detalle todo lo anterior.

47. Afiliación: No importa la procedencia del tráfico, ya sea desde motores de búsqueda o desde otras páginas de referencia. Lo importante es maximizar las conversiones y si tienes afiliados, tienes la obligación de hacerlo no sólo por tí, sino también por todos ellos que están confiando en tí y en tu negocio para generar ingresos. Además, si eres capaz de ofrecerles datos con tasas de conversión altas será más fácil conseguir nuevos afiliados.

48. Display: Cuando un usuario hace click en tu banner es muy recomendable que la página a donde llega cumpla con las expectativas generadas por el propio banner. Una vez se han cumplido, la landing page cumplirá su función.

49. Email marketing: Si haces email marketing, los enlaces hacia tu web han de apuntar hacia tus landing pages para conseguir que las promociones tengan la mayor efectividad posible. Ten en cuenta que las personas que forman parte de tu lista ya han dado  su consentimiento y su predisposición a convertir es mucho mayor.

50:  SEO: El tráfico orgánico que busque tus productos o servicios convertirá mucho mejor si las páginas de destino están pensadas para convertir. A diferencia de los casos anteriores, este tipo de tráfico tiene una peculiaridad y es que requiere de navegación y enlaces internos para que pueda posicionar bien y atraer tráfico. Por tanto, lo mejor que puedes hacer es crear una landing page, testarla con PPC, analizar los resultados para ver las palabras clave que mejor convierten, optimizarla para esas palabras, añadir la navegación e incorporarla a tu web para que empiece a generar tráfico cualificado.

51. Social Media: Las redes sociales son una fuente cada día más importante de generación de tráfico.  Al igual que en todos los casos anteriores si se comparte un enlace, los seguidores y fans harán click en él y llegarán a la landing page. Por ejemplo, en BlueCaribu solemos compartir en redes sociales las landing pages de los ebooks que publicamos de forma periódica.



Niveles de conversión

En función de lo que se pretenda conseguir con cada Landing Page habrá variaciones y la disposición de los elementos y los mensajes ha de ser distinta:

52. Para que pidan más información: Generalmente cuando se ofrecen servicios, el objetivo es que pidan presupuesto o más información.

53. Para que inicien una compra: si se ofrece un producto, el objetivo ha de ser la venta. Por tanto, la landing ha de ser el primer paso hacia la compra.

54. Para una descarga, webinar, muestra gratuita o similar: El objetivo es intercambiar algo de valor por sus datos de contacto de manera que ambas partes consigan un beneficio de la transacción: la empresa genera un lead cualificado e interesado en su producto o servicio y el visitante tiene lo que buscaba de forma gratuita. Si se trabaja la relación con esa persona mediante email marketing, las posibilidades de que terminen convirtiendo en clientes son mucho mayores.



Debes utilizar una Landing Page cuando…

Crear una landing page requiere de conocimientos de marketing, diseño, analítica y técnicos que pueden resultar costosos. Por tanto, si no cuentas con los recursos para crear una landing page para cada campaña, promoción y producto aquí te contamos cuándo debes hacer el esfuerzo de utilizarla.

 55. Para tu producto / servicio principal: Lo importante es crear la primera Landing Page. Una vez la tienes y todos los elementos están pensados para maximizar las conversiones será mucho más fácil reutilizar la misma plantilla para adaptarla a promociones puntuales, u otros productos.

56.  Para Mejorar tu web: antes de embarcarte en un rediseño de la web, utiliza las landing pages para probar los mensajes que mejor funcionan, los títulos a los que mejor responden los visitantes, imágenes, etc.

57. Para campañas puntuales como Navidad, día de la madre o San Valentín son momentos en los que el consumo se dispara y preparar o modificar una landing page puede significar un incremento de las ventas que marque una diferencia.

58. Para segmentar por fuentes de tráfico: Si se quiere medir el comportamiento de los usuarios en función de la fuente de tráfico (por ejemplo: Adwords, Facebook SEM, Banners, display, etc) o crear variaciones, también puede ser interesante tener landing pages independientes. También es cierto que con un mix de todas las fuentes se tiene una foto más amplia del comportamiento del visitante.

59. Para maximizar el ROI: a diferencia de la web, una landing page suele tener un diseño flexible en el que los cambios y la experimentación son mucho más fáciles de implementar. Por tanto, mediante prueba y error será más fácil aumentar la rentabilidad de la inversión. Eso sí, ese conocimiento ha de ser transpasado también a la web una vez se tengan las conclusiones de los tests.

Otros consejos

En este punto queremos darte los últimos consejos para que le des un buen empujón a las tasas de conversión y lleguen a niveles que no te podías ni imaginar.

 60. Pricing: Hay toda una ciencia sobre pricing y ahora son muchas las empresas que se dedican a dar con el precio perfecto de cada producto. Se trata de algo extremadamente complejo y que tiene muchos matices. Sin embargo, es interesante aplicar algunos conceptos para mejorar las landing pages. En nuestra experiencia hemos utilizado el precio para mejorar la conversión de las siguientes maneras:

-Ocultar el precio: Cuando el objetivo es maximizar el número de leads para intentar cerrar la venta por otros medios (teléfono, email, etc) ocultar el precio hace que muchos visitantes den el paso de dejar sus datos para conseguir más información.  La parte positiva es que se consiguen más leads, pero serán menos cualificados. Piensa qué es lo mejor para tu negocio y prueba qué opción tiene mayor impacto en tu cuenta de resultados.

-Haz que parezca más barato: $97, $499 ó $999 son precios que no te cansarás de ver. La razón es plenamente psicológica ya que los consumidores reaccionan mejor ante este pequeño truco.

-Ahora sí es más barato: “$97 (antes $147)” es otra forma hacerle ver al visitante de que está ante una ganga que no puede dejar pasar.

61. Cuenta atrás: “Sólo hasta el día X“.  Como en los siguientes ejemplos, la sensación de que se va a perder la posibilidad de conseguir lo que se quiere hace que tu conversión pueda aumentar generando urgencia.

62. Últimas plazas / unidades : ciertamente no me creo que siempre que quiero reservar un billete de avión queden solamente  las “últimas 2 plazas“.  Sin fallar. Las aerolíneas son conscientes de que sus clientes saben que los precios suben y bajan y nadie quiere pagar más por el mismo producto. Por ello crean sentido de urgencia para que la decisión sea lo más impulsiva posible.

63. Descuentos: Diversos tests nos han demostrado que los descuentos expresados en unidades monetarias (-115€ de descuento) funcionan mejora que un porcentaje (10% de descuento). Pese a que la cuantía sea igual, psicológicamente funciona mejor el primero. Una idea: puedes combinar urgencia + descuento en algo así como “Ahorra 115€ si reservas antes del 15 de agosto“.

64. La conversión no es fin del camino, solo un paso intermedio. Desde que se produce la conversión, la máquina ha de estar perfectamente engrasada para que se incrementen las posibilidades de que los leads se conviertan en clientes, y los clientes se fidelicen. Imagina que eres un posible cliente y pides un presupuesto mediante el formulario de la web y no recibes respuesta en una semana ¿Qué pensarías? ¿Contratarías? Lo cierto es que no solo se proyecta una mala imagen, sino que esa misma persona muy probablemente haya pedido cotización en otras empresas de la competencia para comparar y se te hayan adelantado.

65. Always be Testing: Si has conseguido implementar todos los consejos anteriores habrás conseguido mejoras significativas, pero es sólo el comienzo. Cuanto más trabajes la optimización de conversiones, mayor será el impacto en la cuenta de resultados. Una mejora de la tasa de conversión de un 15% puede no parecer mucho, pero si se traduce en un aumento del 15% de las ventas la diferencia puede ser significativa.

Si estás interesado en optimizar las conversiones de tus campañas SEM, te recomendamos esta infografía que te ayudará a entender cómo reducir el rebote, disminuir el CPC y aumentar las conversiones.

gracias a http://www.bluecaribu.com/consejos-conversiones-landing-pages/

Cómo llegar a tus clientes en AdWords para video




Una de las mayores ventajas de AdWords para video es que puedes combinar los medios audiovisuales para convencer a tus clientes en menos de 5 segundos para que vean todo tu anuncio, luego, tienes menos de 25 segundos para convencerlo de que tienen una necesidad que tu producto o empresa pueden satisfacer.

Los mejores anuncios de video duran de 15 a 30 segundos, a pesar de esto, AdWords nos permite tener video de máximo 4 minutos << ¿pero quien vería un comercial de 4 minutos? >>, en AdWords para video, tienes los primeros 5 segundos del video para exponer tu marca, y enganchar al cliente para que siga viendo tu video, por esto, la mejor recomendación es que tengas una excelente imagen de apertura, con un call to action <<llamado a la acción>> muy claro e incluir la marca para que desde el inicio sepa quien eres.



Los videos deben ser cortos e interactivos, videos que invitan a el usuario a realizar alguna acción o interacción que lleven de una u otra forma a generar una conversión para nosotros.


Dónde puede aparecer mi anuncio


En AdWords para video tenemos dos tipos de campañas, campañas de reserva y las campañas de subasta, las campañas de reserva tratan de anuncios especiales que tienen un precio fijo según la demanda, estas campañas se configuran con un asesor de Google AdWords, los anuncios de subasta, se dividen en dos, anuncios en la red de display como video y los anuncios TrueView, en donde solo pagas cuando los usuarios realmente vieron tu video.


Estos anuncios aparecerán en YouTube y en los sitios que pertenezcan al programa de socios certificados de YouTube, que pueden ser socios de transmisión tradicional, productores de contenido profesional o popular generado por los usuarios.


Cómo llegar al público


Con AdWords para video tienes varias opciones para segmentar el público al que quieres llegar:

 -    Orientación contextual por palabras clave: le das un grupo de palabras clave a AdWords, y a partir de estas, Google va a determinar el contenido que coincide con cada palabra clave, y según esto se publica el anuncio.

 -    Segmentación demográfica y geográficos: orienta tu audiencia según su ubicación, sexo o edad.

 -    Temas: aparece en el momento indicado según el tema del contenido que el cliente esté viendo.

 -    Intereses: segmenta tu público según sus intereses o afinidades, llega a las personas que les gustaría saber de ti.

 -    Remarketing: llega a el publico que ya ha tenido interacciones con tu canal o tu sitio web.                           


Campañas de reserva: FP- First Position



La primera impresión importa, los usuarios recuerdan más el primer anuncio que ven a comparación del resto de anuncios que van a ver mientras navegan por YouTube.

Con los anuncios de primera posición, puedes generar reconocimiento de marcar en tu audiencia en el momento más factible para que te recuerden, siendo el primer video que vean en una sesión de YouTube.

Una sesión de YouTube inicia cuando un usuario entra a YouTube y finaliza pasados 30 minutos en el que el usuario no haga ninguna interacción con la aplicación o sitio de YouTube, así nuestro anuncio puede ser el primer anuncio que ve el usuario al crear una nueva sesión en YouTube.

Beneficios


 -    Crear conocimiento de marca: Ofrece llegar a una audiencia masiva porque puede ser la primera posición en cualquiera de las orientaciones.

 -    Exclusividad: La primera posición es como el primer anuncio que ve un usuario en la TV, la primera posición es el primer anuncio que ve un usuario en cada sesión.

 -    El mejor inventario: Permite manejar los anuncios premium de video -aumenta el alcance y ofrece flexibilidad en la orientación- los anunciantes pueden ahora comprar para una ubicación geográfica o una categoría específica.

 -    Ser el primero importa: El anuncio de vídeo in-Stream que se muestra primero, típicamente recibe 50% más clics que cualquier otra campaña in-stream el mismo día.

 -    Tasa de CTR: 4 de 5 de las campañas que salen en la primera posición, tuvieron un CTR de in-Stream más alto que cualquiera de las que tienen otra orientación - 1,81% frente a 1,2%

Características del anuncio


Este anuncio se reproduce como el primer anuncio de la sesión del usuario, de las campañas de reserva, es el único tipo de anuncio que permite una orientación flexible, en donde podemos elegir la geolocalización, el contenido y la plataforma en la que se publicará el anuncio.

Este anuncio no tiene un limite de duración del video, pero se recomienda que dure menos de un minuto, además si recordamos, los mejores anuncios duran entre 15 y 30 segundos.

La forma de pago de este anuncio será cada mil impresiones, pero el ser CPM no quita que sea una campaña de reserva, la cual solo podrás configurar contactándote con un especialista de YouTube.

¿Por qué anunciar en AdWords para video?


Desde siempre hemos visto los comerciales de televisión de grandes empresas y no es un secreto que para aparecer en TV debes pagar una millonada por tan solo unos segundos de fama, segundos que se basan en estimados y datos aproximados de la gente que recibe el mensaje que estas empresas quieren mandar.


El mundo evoluciona y para muchos el TV ahora esta en internet, servicios de entretenimiento que nos permiten escoger el contenido que queremos ver y cuando nosotros lo queremos ver, entre estos encontramos al más grande de internet: YouTube. El segundo buscador más usado en el mundo, el servicio de video con mas de mil millones de visitantes únicos al mes y 6 millones de horas de video vistas al mes. Ademas de ser una gran fuente de entretenimiento, también es un gran generador de contenido con 100 horas de video que suben cada minuto a esta red social.


Todos los negocios tienen un público en YouTube


“Comunica tu mensaje a las personas adecuadas en el momento preciso con los anuncios de video. Todos los negocios tienen un público en YouTube.“, es la promesa que hace YouTube cuando inicias tu aventura en la publicidad en AdWords para video, al ser una plataforma con gran cantidad de contenido en múltiples categorías de interés, puedes alcanzar al público indicado, conectar con tu audiencia, medir tu éxito y aún más importante, solo pagas por lo que recibes.


Con AdWords para video, vas a poder limitar las veces que un usuario ve tus anuncios, alcanzar a la gente según su edad, género o ubicación geográfica, según el contenido que visitan o los intereses que los identifican y fidelizar a los usuarios que ya conocen tu producto por medio de listas de remarketing.

Además de todo esto, no solo están anunciando en YouTube, también en la red de socios de video de Google para poder llegar a la mayor cantidad de clientes posible.

Campañas de Google Adwords para Video

Tips para un buen anuncio de video


- Máxima duración: cuatro minutos (los mejores anuncios son de 15 a 30 segundos).
- Buena imagen de apertura.
- Respeto por marcas registradas y derechos de autor.
- Videos cortos y entretenidos.
- Capturar la atención del espectador en los primeros cinco segundos.
- Incluir un call to action en la imagen de apertura y al final del anuncio.
- Usar la marca como punto de referencia.

Tips para una campaña exitosa


- Manejar varios grupos de anuncios para una campaña con la intención de alcanzar a más público objetivo.
- Definir videos negativos en los anuncios in-stream o in-display.
- Crear palabras clave negativas para los anuncios in-search.
- Definir objetivos: ¿qué interesa más? ¿los views o los clics?
- Generar grupos de orientación relevantes al anuncio y al sitio de destino.
- Revisar las pujas a diario, muchas veces debe subirse o bajarse la puja según las subastas del día.

Nota: las campañas de video se costean a partir de CPV (cost per view), este costo será cobrado cuando un usuario vea 30 segundos de tu video o lo vea completo, lo que suceda primero.

Importante: AdWords para video solo sirve en los siguientes países en Latinoamérica:

   - México
   - Chile
   - Argentina
   - Peru
   - Colombia
   - Brasil

Google Adwords : Conceptos, definiciones, estrategicas.

Red de busqueda:

Enfoque donde el usuario tiene una intención definida e interes ej: "guantes de futbol"
el usuario ya está mostrando el interés de querer saber mas sobre un producto específico y el indice de querer
comprarlo va en aumento segun la informacion que pueda encontrar.

Aun si el usuario solo quiere saber mas sobre un producto puntual (en el ejemplo guantes de futbol), nosotros
como proveedores ya estamos buscando mostrar nuestra marca y derivar el trafico a nuestra web.


Red de display:

Aqui el usuario no tiene una intención clara, va navegando y de un momento a otro mostramos la publicidad relacionada.
ej: pagina de entrenamiento de arqueros, el usuario navegando en la nota podra ver un anuncio visual sobre "venta de guantes de futbol"


CPC o PPC:(cost per click / costo por clic)
Pagas cuando la gente llegue a tu sitio web.
(robot de reembolo clics falsos)

CPM: costo por cada mil impresiones
google adwords espera que se llegue a esta cantidad para recien cobrar.

CPA: costo por adquisicion
nosotros como anunciantes definimos que es lo que estamos buscando (aquisicion). (vender,afiliar,seguidores,etc)
existen dos tipos de conversiones que definimos nosotros como anunciastes

1 MicroConversiones:
Conversiones pequeñas, tipo newsletter.
2 MacroConversiones:
Conversiones de mayor valor, tipo compra de productos online.

CPV: costo por vista / view
pagas cuando el usuario vio tu video. (ejemplo de publicidad en video, se tiene 5 seg antes de poder dar skipad
la publicidad, si el cliente vio mas de 30 seg o termino el video, se cuanta como view CPV, si termina antes no.)


KPI : key performance indicator
que me conozcan(CPM, branding)
que me compren (CPA, ventas online, crear campañas que funcionen)
que me visiten (CPV,aumentar el tráfico a mi web)


Cómo empezar tus campañas en AdWords

Cuando empezamos a utilizar una cuenta de AdWords debemos tener en cuenta dos cosas: la primera, cómo organizar nuestros anuncios en campañas y grupo de anuncios; la segunda, fijar los objetivos de cada campaña para crearla.

Cómo organizar nuestra cuenta de AdWords


Imaginemos que vamos a crear una cuenta para una tienda de muebles. Las campañas en este caso definirán las categorías de nuestra tienda: una campaña podría involucrar anuncios sobre mesas, otros sobre camas, y así.

Desde nuestra cuenta podremos tener acceso al tipo de anuncios a implementar y al tipo de puja que vayamos a usar.

Tipo de anuncios


- Red de búsqueda: a este tipo de campaña podremos agregar anuncios de texto. Solamente aparecerán en la búsqueda de Google y, si queremos, en su socio de búsqueda.

- Red display: en este caso tendremos anuncios de imagen o de texto que aparecerán en la red de display de Google, conformada por todos los usuarios que usan AdSense en su página web.

- Red de búsqueda y display: esta es la mejor oportunidad de llegarle a la mayor cantidad de clientes pues es una mezcla entre las posibilidades de la red de búsqueda y la red de display.

- AdWords para video: aquí podrás anunciar con videos en la red de socios para video de Google, en donde pagaras solo cuando un usuario realmente vea tu contenido.

Luego de una campaña tenemos los grupos de anuncios, es decir anuncios con temas en común y relevantes a la orientación que definamos. En este caso, un grupo de anuncios para una campaña sobre camas podría ser “camas matrimoniales”.



Recordemos: organizar las campañas de manera que reflejen el asunto central de nuestro sitio web. Para el ejemplo que exponemos todo el contenido de la cuenta está relacionado con la tienda de muebles, las campañas están organizadas por grandes áreas de productos y cada grupo de anuncios en una línea de productos específica.




Concordancia :



Son las opciones que nos da gadwords para clasificar nuestras palabras claves 
Amplia : palabras sin comillas ni corchetes

Exacta: entre corchetes [] ej : sillas + [trabajo]
Con esto le decimos que busque todo que lleve sillas y la palabra exacta trabajo.

Frase: entre comillas doble "" ej : sillas + "trabajo"
Con sto le decimos que la frase debe tener sillas, y ne la oracion tambien trabajo.


Eliminando:

Exacta: entre corchetes [] ej : sillas - [gratis]
que no lleve la palabra gratis

Frase: entre comillas "" ej : sillas - "gratuita"
que en la frase no lleve gratuita

una buena pagina para saber definir las palabras claves 

http://keywordtool.io/


Conceptos Básicos de AdWords

Beneficios de pautar en Google AdWords

- Actualmente Google tiene más de 88 mil millones de búsquedas mensuales.
- El 20% de búsquedas en Google son sobre algún servicio o producto.
- La red display tiene un 92% de alcance en internet.
- Los anuncios son publicados según su relevancia, lo que incrementa las posibilidades de un clic o de una conversión.
- Los anuncios serán publicados en todos los dispositivos.
- La presencia de tu empresa en Google le asegura a tu empresa un crecimiento sustancial.

AdRank: ¿cómo aparecer en la primera posición?

Actualmente Google hace una subasta para definir el orden en el que aparecen los anuncios en la red de búsqueda. Esta es lanzada cada vez que se hace una búsqueda, se recogen todos los anuncios relevantes y se evalúa su AdRank.

           Ad Rank     =      Nivel de calidad    x    Maxima Oferta 
Posición del anuncio                                          costo por clic

En caso de que los anuncios relevantes no tengan definido como método de pago el costo por clic se estimará a partir del histórico de la campaña.


Nivel de calidad

La calidad es un estimativo de la relevancia de los anuncios, las palabras clave y la página de destino en relación a la persona que está realizando la búsqueda.
Palabras clave con un buen nivel de calidad

- CTR de la palabra clave: un buen CTR es igual o mayor a 2%.
- Relevancia texto del anuncio: que la palabra clave y el anuncio estén en contexto, una buena práctica es poner palabras clave en el copy del anuncio para demostrar relevancia.
- Desempeño histórico: este desempeño se basa en el tiempo de vida de la campaña y el éxito del anunciante en la misma.

Nota: un buen nivel de calidad para una palabra clave es mayor a 5/10.

Calidad de un sitio web

- Tiempo carga y navegabilidad: el tiempo de carga recomendado por Google es el mismo que demora el buscador en darte un resultado.
- Transparencia: que el usuario tenga tranquilidad de saber quién está detrás de esto, una recomendación es ofrecer información de contacto.
- Relevancia: que la página de destino sea 100% relevante a lo que prometes en tu anuncio.

Importante: la página de destino afecta mucho la relevancia del anuncio, esto sube la calificación del sitio, si no tomas en cuenta esto, tus anuncios no serán exitosos. 

ver video 



¿Cómo se posicionan los anuncios de display y de video?

Se tendrá en cuenta la oferta a nivel de grupo de anuncios y el nivel de calidad de la página de destino, además del rendimiento del anuncio en el pasado. A partir de esto un anuncio aparecerá en una página con mejor o peor ranking.
Formas de pagar en Google AdWords

- CPC: costo por clic
- CPM: costo por mil impresiones
- CPA: costo por adquisición (conversión)
- CPV: costo por vista (para video)

La forma de pago de un anuncio es configurado al nivel de la campaña, para el costo por adquisición debe tenerse configurado el sistema de transacciones en Analytics o el código de conversiones de AdWords.
CPC real: calculando los costos reales

Al definir la puja máxima para una palabra clave o un grupo de anuncios AdWords no cobrará el valor total de ésta al recibir un clic, pues este valor sólo se tendrá en cuenta en el AdRank, el valor que se pagará por un clic será solo $0,01 USD más que el anuncio que está por debajo, es decir, si la competencia tiene un CPC real de $1 USD y nuestro sitio ofrece $2 USD, solo se pagará $1,01 por el clic.
Las campañas exitosas tienen:

- Una visión y objetivo claro.
- Palabras clave por temas o productos similares.
- Rendimiento de la cuenta monitoreado prácticamente a diario.

ver video 



MongoDB: qué es, cómo funciona y cuándo podemos usarlo (o no)

Descripción y licencia

MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Como ya os expliqué, esto significa que cada entrada o registro puede tener un esquema de datos diferente, con atributos o “columnas” que no tienen por qué repetirse de un registro a otro. Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas. Además, está licenciado como GNU AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.
Las características que más destacaría de MongoDB son su velocidad y su rico pero sencillosistema de consulta de los contenidos de la base de datos. Se podría decir que alcanza un balance perfecto entre rendimiento y funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en nuestro sistema relacional preferido, pero sin sacrificar en rendimiento.

Terminología básica en MongoDB

En MongoDB, cada registro o conjunto de datos se denomina documento. Los documentos se pueden agrupar en colecciones, las cuales se podría decir que son el equivalente a las tablas en una base de datos relacional (sólo que las colecciones pueden almacenar documentos con muy diferentes formatos, en lugar de estar sometidos a un esquema fijo). Se pueden crear índices para algunos atributos de los documentos, de modo que MongoDB mantendrá una estructura interna eficiente para el acceso a la información por los contenidos de estos atributos.

Formato de los documentos e ideas para la organización de datos

Los distintos documentos se almacenan en formato BSON, o Binary JSON, que es una versión modificada de JSON que permite búsquedas rápidas de datos. Para hacernos una idea, BSONguarda de forma explícita las longitudes de los campos, los índices de los arrays, y demás información útil para el escaneo de datos. Es por esto que, en algunos casos, el mismo documento en BSONocupa un poco más de espacio de lo que ocuparía de estar almacenado directamente en formatoJSON. Pero una de las ideas claves en los sistemas NoSQL es que el almacenamiento es barato, y es mejor aprovecharlo si así se introduce un considerable incremento en la velocidad de localización de información dentro de un documento.
Sin embargo, en la práctica, nunca veremos el formato en que verdaderamente se almacenan los datos, y trabajaremos siempre sobre un documento en JSON tanto al almacenar como al consultar información. Un ejemplo de un documento en MongoDB podría ser perfectamente éste:
  {
    “_id”          : “4da2c0e2e999fb56bf000002”
    “title”        : “Una introducción a MongoDB”,
    “body”         : “Lorem ipsum dolor sit amet…”,
    “published_at” : “2011-05-09T18:17:07-07:00”,
    “author_info”  : {
                       “_id”  : “4dc8919331c0c00001000002”
                       “name” : “Carlos Paramio”
                     },
    “tags”         : [“MongoDB”, “NoSQL”, “Bases de datos”]
    “comments”     : [
                       {
                         “author_info” : { “name” : “Jorge Rubira”, “email” : “email1@example.com” },
                         “body”        : “Test”,
                         “created_at”  : “2011-05-10T10:14:01-07:00”
                       },
                       {
                         “author_info” : { “name” : “Txema Rodríguez”, “email” : “email2@example.com” },
                         “body”        : “Otro test”,
                         “created_at”  : “2011-05-10T10:14:09-07:00”
                       }
                     ]
    “liked_by”     : [“4d7cf768e999fb67c0000001”, “4da34c62ba875a19d4000001”]
  }
Como podemos adivinar, este documento pretende representar la manera en que podrían almacenarse los datos correspondientes a un post de un blog. Los atributos “_id” (o clave principal) pueden tener el formato que se desee, aunque MongoDB utiliza un valor parecido a un UUID en hexadecimal por defecto si no se ha especificado ninguno. A pesar de parecer un valor completamente aleatorio (aunque ya sabemos que la aleatoriedad real no existe en informática), utilizan como base una semilla basada en la MAC de la interfaz de red de la máquina (y otros detalles de la misma) para evitar que dos máquinas diferentes puedan generar el mismo valor para la clave de un documento. Y los primeros bytes corresponden a una marca de tiempo, de modo que las claves se ordenan de forma natural por orden de creación (o casi, pues está claro que las distintas máquinas corriendo MongoDB deben tener la fecha y hora sincronizadas) sin tener que mirar cuál fue el último valor usado. Una solución inteligente, a mi modo de ver bastante más eficiente que un campo autonumérico, en especial para evitar que una máquina bloquee la inserción de registros en una colección sólo para asegurarse que no se dan condiciones de carrera al intentar dos máquinas diferentes escribir un documento con el mismo valor para “_id”. Por cierto, este atributo “_id” es el único obligatorio para un documento.
Las etiquetas y los comentarios están en el propio documento que representa al post, en lugar de guardarlos en colecciones separadas y utilizar claves foráneas para referenciar a los mismos. Sin embargo, en el atributo “liked_by” sí que guardamos una relación de claves, que corresponden a los usuarios que han marcado el post como que les ha gustado. Utilizar una forma u otra dependerá de las necesidades de acceso a estos datos En este caso, por ejemplo, sabemos que no vamos a pintar información sobre los usuarios que han marcado un post con un “me gusta”, pero sí queremos ver cuántos lo han marcado así, o si el usuario actual ya lo ha marcado o no, con lo que almacenar únicamente las claves de esos usuarios y guardar su información personal detallada en otra colección es lo más conveniente.
Por supuesto, no es necesario pedir a MongoDB que nos devuelva todo el documento cada vez que lo consultamos. Si por ejemplo vamos a pintar únicamente un listado de posts recientes, seguramente sea suficiente obtener el atributo “title”, con los documentos ordenados por “published_at”. Así,ahorramos ancho de banda entre el motor de base de datos y la aplicación, al mismo tiempo quememoria dado que no hay que instanciar todo el documento. Además, si tenemos muchos miles de visitantes, el atributo “liked_by” podría llegar a crecer bastante. Aunque el tamaño de un documentode MongoDB puede llegar hasta los 16 Megabytes, con lo que podemos almacenar bastante información dentro de un único documento sin necesidad de utilizar referencias, si así lo necesitamos. En caso de que tuviéramos que almacenar mucho más, habría que optar por utilizar otro esquema.
A veces, toca desnormalizar para poder tener a mano la información necesaria a la hora de pintar un post. Es por eso que en el atributo “author_info” he utilizado una versión intermedia: Si bien tenemos la clave principal del usuario que ha escrito este post, como es habitual que pintemos el nombre del autor, he almacenado también dicho nombre en el documento que representa al post, para que no sea necesario realizar una segunda consulta a la colección “usuarios”. Estas desnormalizaciones dependen nuevamente del uso que se den a los datos. En este caso, tengo claro que el nombre de un usuario no va a cambiar demasiado, así que recorrer todos los posts para cambiar este valor en caso de que el usuario realice esta operación, si bien es una modificación que podría llevar un tiempo considerable para ejecutarse, no es una operación habitual frente a la consulta del nombre del autor, y por tanto compensa. Incluso podríamos llegar a tratar el post como algo más permanente, de modo que aunque un usuario cambiara su nombre a posteriori, el nombre utilizado para firmar los posts anteriores no varíe, o sencillamente los posts puedan firmarse con diferentes pseudónimos.
Como creo que habrá quedado patente a estas alturas, el modelado del esquema de datos con MongoDB depende más de la forma en que consultaremos o actualizaremos los datos que de las limitaciones del propio sistema.

Cómo consultar los datos

Sin entrar demasiado en detalles acerca de todas las posibilidades que MongoDB nos ofrece para consultar los datos almacenados, sí quisiera nombrar algunas de ellas, para hacer notar que no estamos frente a un sistema simple de almacenamiento de pares clave-valor.
En primer lugar, MongoDB nos permite utilizar funciones Map y Reduce escritas en Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos (unificarlos, simplificarlos) en la manera deseada, respectivamente. Esto es algo habitual en muchos sistemas NoSQL, y en algunos casos es incluso la única forma posible de consultar datos. Claro está que muchas veces necesitamos algo bastante más sencillo que ésto.
En MongoDB se pueden utilizar consultas al valor de un atributo específico. Por ejemplo, podemos capturar el post que tiene un determinado título:
  db.posts.find({‘title’ : ‘Una introducción a MongoDB’})
El valor a consultar puede estar anidado en un tipo de datos más completo en el atributo del documento (por ejemplo, como valor de un hash asociado al atributo, o como el valor de uno de los ítems de un array). Se utiliza un punto como separador de los nombres de las claves de los diferentes hashes que hay que recorrer hasta llegar al valor deseado. Por ejemplo, la siguiente consulta devolvería todos los posts escritos por un determinado autor:
  db.posts.find({‘author_info._id’ : ‘4da2c0e2e999fb56bf000002’})
Y esta otra los posts etiquetados con MongoDB:
  db.posts.find({‘tags’ : ‘MongoDB’})
El hash utilizado como conjunto de condiciones que deben cumplir los documentos a devolver puede incluir operadores de muy diversos tipos, no sólo comparadores del valor absoluto buscado. Algunos de ellos son:
  • $all : Para indicar que el array almacenado como valor del atributo debe tener los mismos elementos que el proporcionado en la condición.
  • $exists : Para comprobar que el atributo existe en el documento.
  • $mod : Para comprobar el resto de una división del valor del atributo por un número.
  • $ne : Para indicar que el valor no puede ser el proporcionado.
  • $in : Para indicar que el valor debe estar entre alguno de los proporcionados.
  • $nin : Contrario de $in.
  • $or : Para indicar que se debe cumplir al menos una condición de entre un grupo de condiciones.
  • $nor : Contrario de $or.
  • $size : Para indicar el número de elementos que debe haber en el array almacenado como valor.
  • $type : Para comprobar el tipo del valor almacenado (número, cadena…)
  • Expresiones regulares : El valor debe concordar con la expresión regular indicada.
Y muchos, muchos más. Los resultados se pueden agrupar, ordenar, contar, paginar, y otras tantas operaciones comunes sin necesidad de recurrir al farragoso Map / Reduce. Y siempre que los atributos consultados tengan definidos un índice, la velocidad de las consultas es espectacular.
Bueno, por ahora creo que es suficiente como para que sirva de introducción a este fabuloso motor de base de datos. En futuros artículos procuraré hablaros de sus otras características a la hora de escalarlo para su uso en múltiples máquinas, así como otros mecanismos interesantes de MongoDB como los índices geoespaciales. Si queréis experimentar con él, y trabajáis habitualmente con Ruby, tal vez os interese echar un vistazo a un Object Document Mapper para este lenguaje que escribí para un proyecto, y que facilita la interacción con el motor desde tus modelos: MongoODM.
Una de las diferencias más importantes con respecto a las bases de datos relacionales, es que no es necesario seguir un esquema. Los documentos de una misma colección – concepto similar a una tabla de una base de datos relacional -, pueden tener esquemas diferentes.
Imaginemos que tenemos una colección a la que llamamos Personas. Un documento podría almacenarse de la siguiente manera:
{
  Nombre: "Pedro",
  Apellidos: "Martínez Campo",
  Edad: 22,
  Aficiones: ["fútbol","tenis","ciclismo"],
  Amigos: [
   {
     Nombre:"María",
     Edad:22
   },
   {
     Nombre:"Luis",
     Edad:28
   }
  ]
}
El documento anterior es un clásico documento JSON. Tiene strings, arrays, subdocumentos y números. En la misma colección podríamos guardar un documento como este:
{
  Nombre: "Luis",
  Estudios: "Administración y Dirección de Empresas",
  Amigos:12
} 
Este documento no sigue el mismo esquema que el primero. Tiene menos campos, algún campo nuevo que no existe en el documento anterior e incluso un campo de distinto tipo.
Esto que es algo impensable en una base de datos relacional, es algo totalmente válido enMongoDB.

¿Cómo funciona MongoDB?

MongoDB está escrito en C++, aunque las consultas se hacen pasando objetos JSON como parámetro. Es algo bastante lógico, dado que los propios documentos se almacenan en BSON. Por ejemplo:
db.Clientes.find({Nombre:"Pedro"});
La consulta anterior buscará todos los clientes cuyo nombre sea Pedro.
MongoDB viene de serie con una consola desde la que podemos ejecutar los distintos comandos. Esta consola está construida sobre JavaScript, por lo que las consultas se realizan utilizando ese lenguaje. Además de las funciones de MongoDB, podemos utilizar muchas de las funciones propias de JavaSciprt. En la consola también podemos definir variables, funciones o utilizar bucles.
Si queremos usar nuestro lenguaje de programación favorito, existen drivers para un gran número de ellos. Hay drivers oficiales para C#, Java, Node.js, PHP, Python, Ruby, C, C++, Perl o Scala. Aunque estos drivers están soportados por MongoDB, no todos están en el mismo estado de madurez. Por ejemplo el de C es una versión alpha. Si queremos utilizar un lenguaje concreto, es mejor revisar los drivers disponibles para comprobar si son adecuados para un entorno de producción.

¿Dónde se puede utilizar MongoDB?

Aunque se suele decir que las bases de datos NoSQL tienen un ámbito de aplicación reducido,MongoDB se puede utilizar en muchos de los proyectos que desarrollamos en la actualidad.
Cualquier aplicación que necesite almacenar datos semi estructurados puede usar MongoDB. Es el caso de las típicas aplicaciones CRUD o de muchos de los desarrollos web actuales.
Eso sí, aunque las colecciones de MongoDB no necesitan definir une esquema, es importante que diseñemos nuestra aplicación para seguir uno. Tendremos que pensar si necesitamos normalizar los datos, denormalizarlos o utilizar una aproximación híbrida. Estas decisiones pueden afectar al rendimiento de nuestra aplicación. En definitiva el esquema lo definen las consultas que vayamos a realizar con más frecuencia.
MongoDB es especialmente útil en entornos que requieran escalabilidad. Con sus opciones de replicación y sharding, que son muy sencillas de configurar, podemos conseguir un sistema que escale horizontalmente sin demasiados problemas.

¿Dónde no se debe usar MongoDB?

En esta base de datos no existen las transacciones. Aunque nuestra aplicación puede utilizar alguna técnica para simular las transacciones, MongoDB no tiene esta capacidad. Solo garantiza operaciones atómicas a nivel de documento. Si las transacciones son algo indispensable en nuestro desarrollo, deberemos pensar en otro sistema.
Tampoco existen los JOINS. Para consultar datos relacionados en dos o más colecciones, tenemos que hacer más de una consulta. En general, si nuestros datos pueden ser estructurados en tablas, y necesitamos las relaciones, es mejor que optemos por un RDBMS clásico.
Y para finalizar, están las consultas de agregación. MongoDB tiene un framework para realizar consultas de este tipo llamado Aggregation Framework. También puede usar Map Reduce. Aún así, estos métodos no llegan a la potencia de un sistema relacional. Si vamos a necesitar explotar informes complejos, deberemos pensar en utilizar otro sistema. Eso sí, esta es una brecha que MongoDB va recortando con cada versión. En poco tiempo esto podría dejar de ser un problema.

¿Cómo se instala MongoDB?

La instalación de una instancia del servidor es un juego de niños. Simplemente tenemos que bajar los binarios para nuestro sistema operativo. Hay versiones par Windows, Linux y MacOs. Una vez bajados podremos arrancar el servicio de MongoDB con un solo comando.
mongod --dbpath data
Con este comando arrancamos el servicio mongod, que empezará a escuchar peticiones por el puerto 27017. Es importante indicar el parámetro —dbpath, con la ruta dónde se almacenarán los ficheros de nuestra base de datos.

¿Cómo puedo usar la consola?

Si ya tenemos el servidor lanzado en nuestra máquina, bastará con lanzar desde la consola el siguiente comando
mongo localhost
Desde ese momento entraremos en la consola y podremos realizar consultas. Si escribimos helptendremos un listado con los comandos más comunes y su descripción.

Y de momento lo dejamos aquí. En próximos artículos veremos como se pueden hacer inserciones, consultas y actualizaciones de datos.

trabajando con Git - Parte 3 - Tips

COMANDOS GIT

  • git help <command>
  • git clone <uri> namedir # clona usando como nombre de directorio namedir.
  • git add <dir> # añade recursivamente todos los archivos del dir.
  • git diff --staged #compares staged changes with last commit
  • git commit -v # muestra el diff en el editor
  • git commit -a -m ” #automatically stage tracked files. No hace falta git add
  • git rm --cached <file or regexp> #Git no realiza un seguimiento del archivo, pero los deja en el directorio de trabajo. Útil cuando se olvida añadir archivos al .gitignore y ya hemos agregado dichos archivos al repositorio.
  • git rm <file> #borrarlos con git siempre.
  • git rm -f <file> # si ya está modificado y en el index.
  • git mv <file> <renamed_file>
  • gitk # tcl/tk. Herramienta gráfica para git
  • git commit --amend #Modificar el mensaje del último commit
  • git reset HEAD <file> # to unstage
  • git checkout -- <file> # Descartar cambios en el directorio de trabajo.

AÑADIR ARCHIVOS

  • git add -i #interactive staggin
  • git add -p #crea patch

STASH

  • git stash #guarda el estado en una pila y limpia el directorio para poder cambiar de rama
  • git stash list #muestra la pila
  • git stash apply # vuelve al estado original del dir. Stash{n} especifica uno concreto Y --index reaplica los cambios stagged
  • git stash pop # elimina el primero en la pila. O drop

LOGS

  • git log -p -2 # Muestra 2 últimos commits con diff
  • git log --stat
  • git log --pretty
  • git log --pretty=format:”%h - %an, %ar : %s”
  • git log --pretty=format;”%h %s” --graph
  • git log --since=2.weeks
  • git log <branch> --not master #Muestra commit de <branch> sin incluir los de master
  • git log --abbrev-commit --pretty=oneline
  • git diff master…contrib #Muestra solo el trabajo que la rama contrib actual ha introducido desde su antecesor común con master
  • git log <branch1>..<branch2> #Commits de branch2 que no están en branch1
  • git log origin/master..master #Muestra qué commits se van a enviar al servidor
  • git log origin/master.. #Igual que el anterior. Se asume master o HEAD
  • git log refA refB --not refC # commits en refA y refB que no están en refC
  • git log master…experiment #commits de master o experiment, pero sin ser comunes. Con --left-right indica a qué rama pertenece cada uno

REMOTES # REPOS EN INTERNET

  • git remote -v # lista los repos remotos
  • git remote add [shortname] [url] # crea nuevo remote, es posible descargar el contenido de ese repo con git fetch [shortname]. Master branch en [shortcode]/master
  • git fetch <remote> # descarga trabajo nuevo a máquina local, no sobreescribe nada tuyo. ( git pull sí hace merge automaticamente si se esta realizando un seguimiento de esa branch)
  • git push [remote-name] [branch-name] # sii nadie ha hecho push antes
  • git remote show [remote-name] # inspecciona remote.
  • git remote rename <old-name> <new-name> # también renombra branches: quedaría <new-name>/master
  • git remote rm <remote-name> # p.e si el contribuidor ya no contribuye más

AÑADIR VARIOS REPOSITORIOS REMOTOS

  • git remote add bitbucket git@bitbucket.org:algui91/grado_informatica_tsi_practicas.git # Añadir un nuevo repositorio remoto con el nombre deseado. Por ejemplo si ya tenemos uno en github y queremos añadir otro para bitbucket
  • git push -u bitbucket –all # Subir el proyecto a bitbucket. A partir de ahora se puede seleccionar a qué repo publicar con git push nombre_repo_remoto

TAGGING

# marcan puntos importantes en la histtoria del repo ( releases )
  • git tag # muestra las etiquetas actuales
  • git tag -l ‘v1.4.2.*’ # acepta regex
  • Dos tipos de tag:
    • Lightweight : puntero a commit ( branch que no cambia )
    • Annotated : se almacenan como objetos en la db, con checksum, nombre del creador, email, fecha, mensaje, posibilidad de firmarla conGPG. ( recomendada )
  • git tag -a <tagname> -m ‘mensaje’ # annotated tag
  • git show <tag-name> # muestra información asociada.
  • git tag -s <tag-name> -m ‘message’ # la firma con gpg
  • git tag <tag-name> # lightweight tag
  • git tag -v <tag-name> # verifica tags firmadas
  • git tag -a <tag-name> [commit-chksum] # crea tag para commit con dicho chksum
  • Por defecto no se transfieren los tags, para subirlos al servidor:
    • git push origin [tag-name] # una sola
    • git push origin --tags # Enviar todas
  • Para usar GPG y firmar tags, hay que subir la clave pública al repositorio:
    • gpg --list-keys #Coges la id pública
    • gpg -a --export <id> | git hash-object -w --stdin #Copia el SHA-1 devuelto
    • git tag -a maintainer-gpg-pub <SHA-1>
    • git push --tags #Comparte la clave con todos los usuarios
    • git show maintainer-gpg-pub | gpg --import #Cada usuario importa la clave así
    • git show <tag> #Devuelve más información sobre la etiqueta
    • git tag -d nombre_tag # eliminar la etiqueta
    • git push origin :refs/tags/nombre_tag # Eliminar la etiqueta del repositorio remoto.

    BRANCH

    # las ramas simplememte son punteros a distintos snapshots
    • git branch <nombre-rama> #crea rama. Puntero al commit actual
    • git checkout <nombre-rama> #cambiar a la rama especificada.
    • git checkout -b <nombre-rama> #crea y cambia de rama
    • git merge <rama> # Mezcla la rama actual con <rama>
    • git branch -d <rama> #elimina la rama
    • git push origin --delete <branchName> # Elimina una rama del servidor
    • git mergetool #Herramienta gráfica para resolver conflictos
    • git branch # lista ramas
    • git branch -v # lista ramas mostrando último commit
    • git branch --merged #lista ramas que han sido mezcladas con la actual. Si no tienen un *, pueden borrarse, ya que significa que se han incorporado los cambios en la rama actual.
    • git branch --no-merged #lista ramas que no han sido incorporadas a la actual.

    REMOTE BRANCHES

    • git fetch origin # Descarga el contenido del servidor
    • git push <remote> <branch> #Las ramas no se suben por defecto, has de subirlas explícitamente
    • git push <remote> <branch>:<nuevoNombre> #Igual que la de arriba, pero en el servidor se llama a la rama con nuevoNombre en lugar de branch
    • # Cuando se hace un git fetch que trae consigo nuevas ramas remotas, no se disponen de ellas localmente, solo se dispone de un puntero a la rama remota que no es editable. Para poder trabajar sobre esa rama, es necesario crearla Por ejemplo:
      • git fetch origin # Tras ejecutarlo, notamos que se ha creado una rama nueva (rama_nueva)
      • git checkout -b rama_nueva origin/rama_nueva # Crea una rama local a partir de la remota
      • git merge origin/nueva_rama # Equivalente a la de arriba, pero sin establecer el tracking a la rama
    • git push [remotename] :[branch] # elimina una rama remota
    • git push [remotename] [localbranch]:[remotebranch] #La rama en el servidor tiene distinto nombre a la local

    TRACKING BRANCHES

    • git checkout --track origin/rama #Equivalente a -b rama_nueva origin/rama_nueva
    • git chekout -b <nuevo_nombre> origin/<rama> # Establece un nombre distinto para la rama local

    REBASE

    # Rebase y merge se diferencian en que merge mezcla dos puntos finales de dos snapshots y rebase aplica cada uno de los cambios a la rama en la que se hace el rebase. No lo uses en repos publicos con mas colaboradores, porque todos los demas tendrán que hacer re-merges
    • git checkout <una rama>
    • git rebase master # aplica todos los cambios de <una rama> a master
    • git merge master #hay que hacer un merge de tipo fast forward
    • # Tenemos 3 ramas, master, client y server, en server y client tenemos varios commit y queremos mezclar client en master pero dejar server intacta:
      • git rebase --onto master server client # adivina los patches del antecesor común de las ramas server y client y aplica los cambios a master.
      • git checkout master
      • git merge client # fast-forward. Client y master en el mismo snapshot
      • # Si se quiere aplicar también los cambios de server, basta con:
      • git rebase master server
      • git checkout master
      • git merge server
    • git rebase [basebranch] [topicbranch] # sintaxis de rebase
    • git rebase -i # Rebase interactivo

    SERVIDOR

    • git instawew # Muestra una interfaz web con los commits

    GENERAR UN NÚMERO DE COMPILACIÓN (BUILD NUMBER)

    • git describe master #Solo funciona para tags creadas con -s ó -a

    PREPARAR UNA RELEASE

    • git archive master -- prefix=”project/’ | gzip > `git describe master`.tar.gz
    • git archive master -- prefix=”project/’ --format=zip | `git describe master`.zip
    • test/ export-ignore #Al crear el tarball no incluye el directorio test/

    GENERAR UN CHANGELOG

    • git shortlog --no-merges master --not <tag> #Recopila todos los commits desde <tag> y los agrupa por autor

    RECOMENDACIONES

    • Siempre hay que hacer pull antes de push en caso de que alguien haya subido cambios al servidor. Ejemplo:
      • User1 clona el repo y hace cambios, realiza un commit
      • User2 clona el repo, hace cambios, hace commit y sube los cambios con push
      • User1 intenta hacer push, pero será rechazado con: ! [rejected] master -> master (non-fast forward). No puede subir los cambios hasta que no mezcle el trabajo que ha subido User2. Así que debe hacer lo siguiente:
        • git fetch origin
        • git merge origin/master
        • git push origin master
      • Mientras User1 hacía estas operaciones, User2 ha creado una rama issue54 y realizado 3 commits, sin haber descargado los cambios de User1. Para sincronizar el trabajo, User2 debe hacer:
        • git fetch origin
        • git log --no-merges origin/master ^issue54 #Observa qué cambios ha hecho User1
        • git checkout master
        • git merge issue54 && git merge origin/master
        • git push origin master
    • git diff --check #Antes de hacer commit, ejecutar esto para ver si hemos añadido demasiados espacios que puedan causar problemas a los demás.
    • Commits pequeños que se centren en resolver un problema, no commits con grandes cambios.
    • git add --patch #En caso de hacer varios cambios en el mismo archivo
    • El mensaje del commit debe tener la estructura siguiente: Una linea de no más de 50 caracteres, seguida de otra línea en blanco seguida de una descripción completa del commit.

    PASOS A SEGUIR PARA CONTRIBUIR A PROYECYOS AJENOS, MEDIANTE FORK

    • git clone <url>
    • git checkout -b featureA
    • git commit
    • git remote add myFork <url>
    • git push myFork featureA
    • git request-pull origin/master myFork #enviar la salida por mail al propietario del proyecto, o hacer click en pull request.
    • Buena practica tener siempre una rama master que apunte a origin/master, para estar siempre actualizado con los ultimos cambios en el proyecto original.
    • #Separar cada trabajo realizado en topic branch, que trackeen a origin/master
      • git checkout -b featureB origin/master
      • (Hacer cambios)
      • git commit
      • git push myFork featureB
      • (Contactar con el propietario del proyecto)
      • git fetch origin
    • #Otro ejemplo, el propietario del proyecto quiere aceptar un pull tuyo, pero quiere que hagas algunos cambios, aprovechas la oportunidad y mueves tu trabajo para basarlo en el contenido actual de la rama origin/master, aplastas los cambios en featureB, resuelves conflictos, y haces push:
      • git checkout -b featureBv2 origin/master
      • git merge --no-commit --squash featureB
      • (cambiar la implementacion)
      • git commit
      • git push myFork featureBv2
      • #--squash coge todo el trabajo de la rama mezclada y la aplasta en un no-merge commit encima de la rama en la que estas. --no-commit no registra el commit automaticamente. Así puedes realizar todos los cambios necesarios y luego hacer el commit

    REFLOG

    En segundo plano, git crea un log de a donde han estado referenciando HEAD y el resto de ramas en los últimos meses.
    • git reflog
    • git show HEAD@{n} #Muestra información sobre el reflog número n
    • git log -g master #Muestra el log formateado como la salida de reflog
    • git show master@{yesterday} #Muestra los commits de ayer.

    UTILIDADES

    • git show <short-SHA-1> #Es posible ver un commit pasando la versión abreviada del SHA-1
    • git rev-parse <branch> #A qué SHA-1 apunta una rama
    • git show HEAD^ # Muestra commit padre
    • git show HEAD^2 #Muestra segundo padre
    • git show HEAD~2 # El primer padre del primer padre
    • git filter-branch --tree-filter ‘rm -f <file>’ HEAD #elimina el archivo de todos los commits

    DEPURACIÓN

    • File anotation
      • git blame -L 12,22 <archivo> # muestra cuando y por quién se modificaron de la linea 12 a la 22
      • git blame -C -L 141,153 <file> # cuando renombras un archivo o lo refactorizas en varios, muestra de donde vino originalmente.
    • Búsqueda Binaria: Cuando hay un bug que no puedes localizar, usas bisect para dererminar en qué commit empezó a producirse el bug.
      • git bisect start
      • git bisect bad # marcas el commit actual como roto
      • git bisect good [commit bueno] # último commit conocido que funcionaba
      • Ahora irá preguntando hasta que encuentres el commit culpable. Si esta bien indicas git bisect good. De lo contrario git bisect bad. Al terminar hay que resetear.
      • git bisect reset

    SUBMODULOS

    • git submodule add <url> # crea un directorio que contiene el comtenido de otro proyecto.
    • Clonar un repo con submodulos
    • git clone url
    • git submodule init
    • git submodule update

    CONFIGURATION

    • git config --global <opcion> <valor> #global para usuario, system todos y sin nada, especifico para el repo.
    • git config {key} # muestra el valor de key
    • git config --global core.editor <editor> #cambia el editor por defecto
    • git config --global commit.template $HOME/.gitmessage.txt #plantilla para commits
    • git config --global core.pager ‘more|less’ #paginador por defecto, puedes usar cualquiera
    • git config --global user.signingkey <gpg-key-id> # clave gpg para firmar tags
    • git config --global core.excludesfile <file> #como gitignore
    • git config --global help.autocorrect 1 # autocorrige cuando se escribe un comando incorrecto. Solo en git >= 1.6.1
    • git config --global color.ui true # colorea la salida de git. Valores: true|false|always
    • git config --global core.autocrlf input #para que usuarios linux no tengan problemas con los retornos de carro de windows
    • git config --global core.autocrlf true #para usuarios de windows
    • git config --global core.whitespace trailing-space, space-before-tab, indent-with-non-tab, cr-at-eol # respectivamente: busca espacios al final de línea, busca espacios al inicio de tabulación, busca líneas con 8 o más espacios en lugar de tabulaciones, acepta retornos de carro
    • git apply --whitespace=warn <patch> # advierte de errores de espacios antes de aplicar el patch. Con --whitespace=fix intenta arreglarlos

    GIT ATTRIBUTES

    Archivo en .gitattributes en el directorio de trabajo o en .git/info/attributes para no committearlo
    Identificando archivos binarios
    Muchos archivos son para uso local y no aportan información al repositorio. Para decirle a git qué archivos son binarios hacer añadir al archivo atributes:
    <nombre archivo o regexp> -crlf -diff # git no intentará corregir problemas de crlf ni mostrará los cambios con diff. En versiones >= 1.6 se pueden sustituir estos dos valores por la macro binary
    Diffing binary files
    En ocasiones es útil mostrar diffs de archivos binarios, como una archivo de word:
    *.doc diff=word
    #tras esto hay que definir el filtro word para que git convierta archivos word a texto:
    git config diff.word.textconv strings
    Es posible hacer lo mismo para imágenes jpeg, es necesario instalar exiftool para extraer los metadatos y luego hacer:
    echo ‘*.jpeg diff=exif’ >> .gitattributes
    git config diff.exif.textconv exiftool
    Procesar archivos antes de hacer commit y antes de hacer checkout: Es posible crear tus propios filtros para hacer sustitución. Estos filtros se llaman smudge y clean. Los puedes configurar para distintos directorios y luego escribir un script que procesará cada archivo antes de que sea checkeado (smudge) y commiteado (clean). Para ello,escribe en el .gitattributes: (En caso que quieras procesar código C)
    *.c filter=indent Luego:
    git config --global filter.indent.clean indent
    git config --global filter.indent.smudge cat
    Otro ejemplo interesante es la expansión de la palabra clave $Date$. Para ello hay que escribir un script en ruby que recibe un archivo, encuentra la fecha de su último commit e inserta dicha fecha en el archivo:
    #! /usr/bin/env ruby
    data = STDIN.read
    last_date = `git log &#45;&#45;pretty=format:"%ad" &#45;1`
    puts data.gsub('$Date$', '$Date: ' + last_date.to_s + '$')
    Puedes nombrar este script como expand_date. Crea un filtro en git, llamado dater y dile que use el script anterior:
    git config filter.dater.smudge expand_date
    git config filter.dater.clean ‘perl -pe “s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/”‘
    Para usar el filtro, simplemente escribe la palabra clave en los archivos que desees:
    echo ‘# $Date$’ > date_test.txt
    echo ‘date*.txt filter=dater’ >> .gitattributes
    git add date_test.txt .gitattributes
    git commit -m “Testing date expansion in Git”
    rm date_test.txt
    git checkout date_test.txt
    cat date_test.txt
    $Date: Tue Apr 21 07:26:52 2009 -0700$

    GIT HOOKS

    Hay dos tipos, de lado cliente y servidor, se guardan en el directorio .git/hooks. Para activarlos basta con que sean ejecutables.

    CONCEPTOS

    Fast forward: cuando se hace un merge y el commit de la rama a mezclar esta justo un commit adelantado, simplemente se hace apuntar la rama en la que se iba a mezclar al commit del merge.

    GITIGNORE:

    # a comment - this is ignored
    *.a # no .a files
    !lib.a # but do track lib.a, even though you’re ignoring .a files above
    /TODO # only ignore the root TODO file, not subdir/TODO
    build/ # ignore all files in the build/ directory
    doc/*.txt # ignore doc/notes.txt, but not doc/server/arch.txt

CommentFB