December 18, 2014

Programania

Notas sobre tuneo de IntelliJ Idea

Esto son solo unas notas sobre los flags y settings que se proponen aquí para tunear el rendimiento de IntellJ Idea. Ha resultado ser una buena excusa para aprender sobre algunas de las opciones de la JVM.

-server

Si lo arranco en modo servidor, el compilador añade optimizaciones más cachas. Tarda más en arrancar, pero luego tira mejor

-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m

Heap y permgen

-XX:+UseCompressedOops

http://javarevisited.blogspot.com.es/2012/06/what-is-xxusecompressedoops-in-64-bit.html

-XX:ParallelGCThreads=3

http://es.slideshare.net/jclarity/hotspot-garbage-collection-tuning-guide slide 46

-XX:MaxTenuringThreshold=1

Cuántos ciclos de GC puede aguantar cada objeto antes de ser promocionado al old space (y ser GCado)

(with high values) As your old space is useless (as it is empty), server will do much more full ‘stop-the-world’ GCs to defragment heap. This will have an impact to your applications, as you will see many unnecessary pauses.

http://stackoverflow.com/questions/13543468/maxtenuringthreshold-how-exactly-it-works

-XX:SurvivorRatio=8

Esto indica el ratio (1:8) en el tamaño de cada espacio de supervivientes.

Si los espacios son pequeños, los objetos pasaran directamente a espacios más viejos. Si son demasiado grandes estarán vacíos, provocando stop-the-world

-XX:+UseCodeCacheFlushing

https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-4-heap-tuning/

-XX:ReservedCodeCacheSize=64m

Idea viene 224 por defecto

Mirar link de UseCodeCacheFlushing

Es para darle un tamaño a la cache de codigo

-XX:+AggressiveOpts

Turns on point performance optimizations that are expected to be on by default in upcoming releases. The changes grouped by this flag are minor changes to JVM runtime compiled code and not distinct performance features (such as BiasedLocking and ParallelOldGC). This is a good flag to try the JVM engineering team’s latest performance tweaks for upcoming releases. Note: this option is experimental! The specific optimizations enabled by this option can change from release to release and even build to build. You should reevaluate the effects of this option with prior to deploying a new release of Java.

http://www.oracle.com/technetwork/java/tuning-139912.html#section4.2.4

Opciones del Garbage collector

-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC

Usar el colector de basura Concurrent Mark Sweep

http://blog.takipi.com/garbage-collectors-serial-vs-parallel-vs-cms-vs-the-g1-and-whats-new-in-java-8/

http://sanjaal.com/java/tag/jvm-option-parameter-xxuseconcmarksweepgc/

-XX:+CMSClassUnloadingEnabled

Este activa sweep de clases que ya no se usan. Antiguamente lo haría en la permgen. Tiene que ir de la mano del UseConcMarkSweepGC

-XX:+CMSIncrementalMode

http://www.fixdeveloper.com/2014/03/jvm-tuning-cmsincrementalmode-overrides.html

After some digging around, I found that -XX:+CMSIncrementalMode was set in the parameter. The mode is also known i-CMS and it is scheduled to occur mid-way between minor GC. By doing the GC in small units of time and creating multiple small pauses over the same period, it avoid a long pause. This is helpful for application where low latency is a priority.

-XX:+CMSIncrementalPacing

https://themindstorms.wordpress.com/2009/01/21/advanced-jvm-tuning-for-low-pause/

Enables automatic adjustment of the incremental mode duty cycle based on statistics collected while the JVM is running

-XX:+CMSParallelRemarkEnabled

http://www.liferay.com/es/documentation/liferay-portal/5.2/administration/-/ai/performance-tuning-1

+CMSParallelRemarkEnabled: For the CMS GC, enables the garbage collector to use multiple threads during the CMS remark phase. This decreases the pauses during this phase.

-XX:+UseCMSInitiatingOccupancyOnly

http://stackoverflow.com/a/9698982

Para que el siguiente setting XX:CMSInitiatingOccupancyFraction funcione.

-XX:CMSInitiatingOccupancyFraction=65

https://blog.codecentric.de/en/2013/10/useful-jvm-flags-part-7-cms-collector/

The Throughput Collector starts a GC cycle only when the heap is full, i.e., when there is not enough space available to store a newly allocated or promoted object. With the CMS Collector, it is not advisable to wait this long because it the application keeps on running (and allocating objects) during concurrent GC. Thus, in order to finish a GC cycle before the application runs out of memory, the CMS Collector needs to start a GC cycle much earlier than the Throughput Collector.
As different applications have different object allocation patterns, the JVM collects run time statistics about the actual object allocations (and deallocations) it observes and uses them to determine when to start a CMS GC cycle. To bootstrap this process, the JVM takes a hint when to start the very first CMS run. The hint may be set via -XX:CMSInitiatingOccupancyFraction=<value> where value denotes the utilization of old generation heap space in percent. For example, value=75 means that the first CMS cycle starts when 75% of the old generation is occupied. Traditionally, the default value of CMSInitiatingOccupancyFraction is 68 (which was determined empirically quite some time ago).

-XX:+CMSScavengeBeforeRemark

CONTROVERTIDA

https://blogs.oracle.com/jonthecollector/entry/did_you_know

There is an option CMSScavengeBeforeRemark which is off by default. If turned on, it will cause a minor collection to occur just before the remark. That’s good because it will reduce the remark pause. That’s bad because there is a minor collection pause followed immediately by the remark pause which looks like 1 big fat pause.l

-XX:-TraceClassUnloading

Para desactivar el debuggado de carga/descarga de clases

-ea

Versión EA
EA significa “acceso anticipado (del inglés Early Access)”; EA es una versión preliminar a la siguiente versión del software. Esta versión puede contener muchas funciones nuevas y correcciones de errores y, como versión preliminar, puede contener algunos problemas inesperados. No se recomienda el uso de esta versión preliminar en un entorno de producción. Actualice a la última versión disponible en java.com

-Dsun.io.useCanonCaches=false

WAT

http://konigsberg.blogspot.com.es/2009/10/answer-to-symbolic-puzzler.html

So by default, the cache canonicalization is on, but when you specify the VM arg -Dsun.io.useCanonCaches=false, the cache is never used.

Getting back to the puzzler, the first call to TESTDIR_SYMLINK.getCanonicalPath() always returns the path to the symlink, while the second call returns either the cached value (the path to the symlink) or the up-to-date resolved symlink, but only when -Dsun.io.useCanonCaches=false is specified.

by Guille at December 18, 2014 10:30 AM

Davilac

Google News cierra en España pero se mantiene la indexación de noticias

La noticia del cierre de Google News el pasado 16 de noviembre ha creado algunas dudas sobre qué servicios desaparecen de nuestro país exactamente. De hecho, lo único que Google ha eliminado es su actividad como agregador de noticias, su buscador sigue mostrando contenidos actuales como normalmente.

Es decir, si buscamos en la sección de noticias del buscador, veremos como este sigue indexando noticias de actualidad. En cambio, si entramos al agregador news.google.es, veremos que nos aparece un aviso de la compañía anunciando el cierre de Google News en nuestro país y los motivos:

cierra google news españa

by Alicia at December 18, 2014 09:09 AM

December 17, 2014

Adseok

El 2014 en búsquedas

Artículo El 2014 en búsquedas publicado en Adseok SEO.

Google Trends ya tiene su vídeo de 2014, un año en búsquedas, un año que ha dado para mucho tanto dentro como fuera del SEO.

Nos referimos al movimiento provocado con Panda y Penguin, que parece que este año ha estado subiendo el tono tanto en frecuencia como en intensidad, y que aún así, deja la impresión de que solo son los primeros coletazos de los cambios que sufrirá el algoritmo de Google en 2015.

La web móvil parece que irá aumentando su importancia, con Google probando ránkings especiales y nuevas herramientas para ayudar a los webmasters.

Si tienes webs con infinite scroll, especialmente si son responsive, añade paginación si sobrepasas los 50MB de HTML, y elimina las pestañas “click to spand” ya que Google dejará de indexar ese contenido porque considera que es contenido oculto al usuario.

Este tipo de contenido en pestañas, muy usado por Amazon, lo está eliminando. Y hablando de Amazon, y siempre según Eric Schmidt, Amazon es el principal rival de Google en cuanto a búsquedas, y no otros buscadores. Más de la mitad de los usuarios que entraron en internet para comprar algo lo hicieron directamente en Amazon y no en Google u otros buscadores.

En cuanto a lo que toca en estos momentos, Google News España, cada vez que me preguntan sobre el tema digo lo mismo: aunque creo que no durará mucho el cierre, me divierte de forma casi insana hablar con compañeros SEOs de estos medios que se están tirando de los pelos – parece algo increíble – pero estoy extremadamente interesado en ver la evolución de las visitas. Pero por dejarlo ahí, ¿hay realmente alternativas sólidas a estos medios? Solo pregunto porque no lo se.

Por lo demás, esperamos un 2015 movidito y quizá también más movimiento en Adseok. Un saludo.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="360" src="http://www.youtube.com/embed/DVwHCGAr_OE" width="640"></iframe>

Artículo El 2014 en búsquedas publicado en Adseok SEO.

by Adseok at December 17, 2014 12:11 PM

Davilac

Google muestra las búsquedas más populares del 2014

Como bien sabéis, Google hace cada año un recopilatorio de las búsquedas más populares del año; ayer hizo públicas las estadísticas para este 2014. El nombre del conocido actor Robin Williams, el Mundial de Fútbol de Brasil y el ébola encabezan la lista de las búsquedas más populares realizadas durante este año.

Le siguen de cerca las búsquedas relacionadas con Malaysia Airlines, el famoso desafío del cubo de agua helada Ice Bucket Challenge y el juego para smartphones Flappy Bird. La lista también incluye búsquedas de Conchita Wurst, la cantante ganadora de Eurovisión, ISIS, el juego animado Frozen y los Juegos Olímpicos de Sochi.

Podéis ver la lista completa en “El año en búsquedas” de Google.

by Alicia at December 17, 2014 09:13 AM

December 16, 2014

Variable not found

Filtros asíncronos en MVC 6

ASP.NET MVC 6Como ya hemos visto por aquí en alguna ocasión, hace tiempo que MVC soporta controladores asíncronos, permitiendo la implementación de acciones muy eficientes desde el punto de vista de la utilización de los recursos del servidor.

Sin embargo, en cuanto pretendíamos llevar a los action filters la misma filosofía nos encontrábamos con que la infraestructura no estaba preparada, es decir, no teníamos una forma clara de introducir llamadas asíncronas en el cuerpo de los filtros. Como consecuencia, todas las tareas que se realizaban en su interior eran puramente síncronas y dejaban bloqueados los hilos destinados a procesar peticiones mientras se completaban las operaciones, lo cual es especialmente un despilfarro cuando se trata de tareas de entrada/salida.

Afortunadamente esto parece que va a terminar con MVC 6, que soportará ya esta solicitada característica. Pero ojo, que MVC 6 está aún en desarrollo, por lo que todo lo que cuento a continuación puede cambiar.

Pero empecemos desde el principio, viendo qué ha cambiado por abajo para que sea posible crear filtros con código asíncrono en su interior. Quizás sea una lectura un poco densa, pero creo que es interesante para comprender cómo funcionan las cosas por dentro.

Abriendo el capó

Hasta MVC 5, era posible crear filtros personalizados tomando como base varias clases abstractas e interfaces, ofreciendo cada una de ellas un conjunto de métodos a implementar o sobrescribir para introducir nuestro código personalizado.

Por ejemplo, la implementación de la clase abstracta ActionFilterAttribute, una base usada con mucha frecuencia para crear filtros personalizados, era de la siguiente forma:
public abstract class ActionFilterAttribute : 
FilterAttribute, IActionFilter, IResultFilter
{
public virtual void OnActionExecuting(ActionExecutingContext filterContext) { }
public virtual void OnActionExecuted(ActionExecutedContext filterContext) { }
public virtual void OnResultExecuting(ResultExecutingContext filterContext) { }
public virtual void OnResultExecuted(ResultExecutedContext filterContext) { }
}
Como se puede observar, no hay rastro de las “marcas” que indican la presencia de asincronía, como el uso de las clases Task o Task<T>, o de las palabras clave async y await. Los métodos OnXXX() presentes en la signatura eran invocados de forma síncrona antes y después de la ejecución de las acciones y del  resultado (objetos ActionResult) retornado por éstas. Dado que estos métodos son virtuales, la creación de filtros personalizados consistía normalmente en heredar de ActionFilterAttribute y sobreescribir uno o varios de ellos.

Pues fijaos ahora en la implementación de esta misma clase en MVC 6:
public abstract class ActionFilterAttribute: Attribute, IOrderedFilter,
             IActionFilter, IAsyncActionFilter,
             IResultFilter, IAsyncResultFilter
{
public int Order { get; set; }

public virtual void OnActionExecuting(ActionExecutingContext context) { }
public virtual void OnActionExecuted(ActionExecutedContext context) { }

public virtual async Task OnActionExecutionAsync(
              ActionExecutingContext context, ActionExecutionDelegate next)
{
OnActionExecuting(context);
if (context.Result == null)
{
OnActionExecuted(await next());
}
}

public virtual void OnResultExecuting(ResultExecutingContext context) { }
public virtual void OnResultExecuted(ResultExecutedContext context) { }

public virtual async Task OnResultExecutionAsync(
              ResultExecutingContext context, ResultExecutionDelegate next)
{
OnResultExecuting(context);
if (!context.Cancel)
{
OnResultExecuted(await next());
}
}
}
¡Esto ya es otra cosa! Siguen existiendo los mismos métodos síncronos OnXXX() que teníamos en las versiones anteriores, pero ahora se han implementado un par de métodos nuevos, OnActionExecutionAsync() y OnResultExecutionAsync(), ambos definidos en sus respectivos interfaces IAsyncActionFilter y IAsyncResultFilter, que brindan la posibilidad de introducir código asíncrono de forma sencilla.

Acerquémonos ahora a la implementación de estos métodos. Son muy similares, por lo que nos centraremos en un principio en OnActionExecutionAsync():
public virtual async Task OnActionExecutionAsync(
           ActionExecutingContext context, ActionExecutionDelegate next)
{
OnActionExecuting(context);
if (context.Result == null)
{
OnActionExecuted(await next());
}
}
Como podemos observar, en su interior se encuentra en primer lugar una llamada síncrona a OnActionExecuting(). Esto lo pone sencillo para los escenarios en los que no sea necesario asincronía, manteniendo retrocompatibilidad con filtros escritos para versiones anteriores del framework.

Sólo si no se ha cortocircuitado la ejecución de la acción estableciendo un resultado “precocinado” desde el propio filtro, es cuando se ejecuta la acción realmente mediante la invocación al delegado next(), y su retorno será enviado como parámetro al método síncrono OnActionExecuted().

Exactamente lo mismo ocurre con OnResultExecutionAsync(); se encargará de invocar a los tradicionales métodos síncronos OnResultExecuting() y OnResultExecuted() antes y después de la ejecución del resultado, proporcionando una interfaz síncrona para aquellos escenarios donde no sea necesario la asincronía.

Pero en cualquier caso, lo interesante de esto es que tenemos un punto asíncrono de entrada a nuestros filtros que, como ya os habréis dado cuenta, son métodos virtuales, es decir, fácilmente reemplazables por código propio en nuestros filtros personalizados.

Creando filtros asíncronos personalizados

Si habéis llegado hasta este punto, probablemente la creación de un filtro asíncrono os resultará totalmente trivial. Basta con heredar de ActionFilterAttribute y sobrescribir OnActionExecutionAsync() u OnResultExecutionAsync() dependiendo de si queremos tomar el control durante la ejecución de la acción o del resultado, respectivamente.

El siguiente ejemplo muestra un sencillo profiler implementado en forma de filtro que envía de forma asíncrona los tiempos de ejecución de la acción y del resultado a un logger que podría estar almacenando esta información en disco o en una base de datos:
public class ProfilerAttribute : ActionFilterAttribute
{
private ILogger _logger = new Logger();
public override async Task OnActionExecutionAsync(
               ActionExecutingContext context, ActionExecutionDelegate next)
{
var stopWatch = Stopwatch.StartNew();
await base.OnActionExecutionAsync(context, next);
stopWatch.Stop();

var message = FormatProfilerInfo("Action", context, stopWatch);
await _logger.Log(message);
}

public override async Task OnResultExecutionAsync(
               ResultExecutingContext context, ResultExecutionDelegate next)
{
var stopWatch = Stopwatch.StartNew();
await base.OnResultExecutionAsync(context, next);
stopWatch.Stop();

var message = FormatProfilerInfo("Result", context, stopWatch);
await _logger.Log(message);
}

private string FormatProfilerInfo(
               string what, FilterContext context, Stopwatch stopWatch)
{
return string.Format("{0}.{1} >> {2} execution: {3}ms",
context.RouteData.Values["Controller"],
context.RouteData.Values["Action"],
what,
stopWatch.ElapsedMilliseconds);
}
}
Por cierto, seguro que más de uno ha pensado que el filtro anterior usa una forma algo chunga para obtener la referencia a la clase Logger. Pues sí, pero está hecho aposta ;) La forma en que se consigue la inyección de dependencias en filtros de MVC 6 es muy interesante, pero para no desviarnos mucho lo dejaré para un post futuro :)

Publicado en Variable not found.

by José M. Aguilar (noreply@blogger.com) at December 16, 2014 12:45 PM

December 15, 2014

Variable not found

Enlaces interesantes 180

by José M. Aguilar (noreply@blogger.com) at December 15, 2014 12:45 PM

December 12, 2014

Davilac

Google celebra los 100 años de “Platero y yo” en su nuevo doodle

100 años han pasado desde que, el 12 de diciembre de 1914, se publicara la primera edición del clásico “Platero y yo”. Como conmemoración a este acontecimiento, Google ha creado para hoy un doodle muy especial.

El doodle de hoy, que podremos ver durante todo el día al utilizar el buscador, recrea la imagen del protagonista de esta conocida obra que, como reza el inicio de esta obra, es “pequeño, peludo, suave; tan blando por fuera, que se diría todo de algodón, que no lleva huesos”.

“Platero y yo”, escrito por el poeta español Juan Ramón Jiménez, es una de las obras en castellano más leídas de la literatura universal, además de ser el tercer libro más traducido a diferentes idiomas.

by Alicia at December 12, 2014 12:03 PM

December 11, 2014

Davilac

Facebook ha superado a YouTube como plataforma para compartir vídeos

El análisis realizado por Social Bakers confirma los datos: el número de vídeos que se publicaron a través de las páginas de Facebook en Noviembre superó al número de creaciones registradas en YouTube. Facebook consigue de esta manera convertirse en la plataforma más popular para compartir vídeos con otros usuarios.

Durante los últimos meses hemos podido ver muchos esfuerzos de la red social por mejorar sus funcionalidades y características. Según afirma la compañía, entre los meses de mayo y julio ha habido un gran aumento del número de reproducciones, un incremento de alrededor del 50%.

Con el objetivo de mantener y mejorar esas cifras, Facebook ha estado realizando modificaciones en los algoritmos para dar preferencia a los vídeos que cuentan con más interacciones.

by Alicia at December 11, 2014 11:50 AM

December 10, 2014

Maestros del Web (Editorial)

Mejorando.la Navidad: vive un 2015 de mucho aprendizaje desde ya

Hace un año con el Team Mejorando.la lanzamos una promoción de Navidad: doce meses de todos los cursos por solo $299 dólares. Todos los cursos pasados y futuros. Demostramos que ser Mejorando.la por un año vale la pena.

Todos los cursos

Enfocamos todas nuestros esfuerzos para dar lo mejor a nuestros estudiantes: 14 cursos actualizados, más de 80 clases en vivo, 16 tecnologías diferentes y reconocidos profesores del campo de la tecnología. Con Platzi llevamos educación a todos los países de habla hispana, mejorando la experiencia en nuestra plataforma día tras día.

Platzi

Mejoramos la experiencia de usuario, estudiamos y escuchamos a nuestra comunidad. También creamos un sitio web de la mejor calidad, con un diseño muy cuidado y con un juicioso y elegante trabajo a nivel de código.

Mejorando.la

Hicimos presencia en Ciudad de México y Bogotá, con eventos y nuevas oficinas. Para el 2015 tendremos presencia en más países y anuncios que te sorprenderán.

No lo dejes pasar dos años seguidos, aquí llega de nuevo nuestro paquete navideño. Aprovecha esta nueva oportunidad de hacer parte de la mejor comunidad de aprendizaje online en tecnología.

Ahora queremos ofrecerte un año de todos nuestros cursos (futuros y pasados), pero no solo eso, además:

  • Sé un experto en diseño, programación web, de apps y marketing
  • Por un año tendrás todos los cursos, clases en vivo, diplomas, todo
  • Un taller de cómo crear startups online, sólo con este plan
  • Tú decides los cursos futuros de Mejorando.la
  • Acceso VIP y gratuito a todos nuestros eventos del 2015

¿Quieres ser un experto en tecnología? ¿Quieres regalar conocimiento a otros?  Haz parte de Mejorando.la Navidad y aprende de diseño, experiencia de usuario, programación web, de apps y marketing con profesionales de calidad mundial durante el 2015. Únete y empieza a crear desde ya el futuro de Internet.

The post Mejorando.la Navidad: vive un 2015 de mucho aprendizaje desde ya appeared first on Maestros del Web.

by Juan Pablo Rojas at December 10, 2014 11:18 PM

December 09, 2014

Variable not found

Enlaces interesantes 179

Enlaces interesantesAhí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)

.Net

ASP.NET

Azure / Cloud

Data access

Html/Css/Javascript

Visual Studio/Complementos/Herramientas

Otros

Publicado en Variable not found

by José M. Aguilar (noreply@blogger.com) at December 09, 2014 01:05 PM

December 03, 2014

Maestros del Web (Editorial)

¿Facebook video ad es el nuevo rey de la publicidad en video?

Desde que empecé a trabajar con Facebook Ads he visto algunos cambios importantes dentro de la plataforma que hacen muy diferente su uso. Por ejemplo, gracias a su último update es posible establecer un presupuesto específico para unos cuantos días, pero del cambio que me interesa hablar es de la promoción de video en Facebook.

Ya sabíamos que podíamos publicar un video directamente en Facebook para usarlo como anuncio, impulsando el post por medio de la plataforma. Pero ahora Facebook Ads nos da la opción de crear un anuncio de video dentro las configuraciones iniciales de una campaña.

facebook para videos

Pero ¿por qué anunciar video en Facebook si tenemos AdWords para video?

tamaño de imagen del video

Una de las grandes ventajas que tiene Facebook frente a AdWords es la posibilidad de segmentar al público de una forma tan exacta que a veces creemos que es magia negra, pero en realidad se debe a la facilidad que tiene esta red de recolectar datos por cada usuario, de acuerdo a su comportamiento dentro del sitio.

Lo que no sabemos pero Facebook sí, es que entre el 60% y 80% del tiempo que los usuarios gastan en esta red social lo invierten en revisar el newsfeed en busca de nuevas noticias o post de amigos.

Otro dato importante es la cantidad de gente por día que está conectada con Facebook: tan solo en México al día son más de 34 millones, en Argentina 17 millones, Colombia 12 millones y Chile 7.1 millones. ¿Estos datos no te hacen pensar que puedes alcanzar más del 10% de esta audiencia solo en tu país y que esto es un factor importante para crear un anuncio de video?

¿Por qué un video en Facebook y no en YouTube?

  1. Un vídeo subido directamente a Facebook tiene 11x más de imagen a diferencia que un post de un video de YouTube.
  2. Podemos crear thumbnails personalizados para cada video. Esto es una buena noticia, ya que no tenemos la restricción de usar una captura del video como imagen de muestra (como en YouTube) y podemos aplicar algo de diseño a primera vista.
  3. Otro de los poderes de Facebook a la hora de segmentar el público es crear audiencias similares que permiten ampliar significativamente nuestro alcance. ¿Qué quiere decir audiencias similares? público muy similar al de nuestra configuración, que tiene relación directa con alguna persona que ya está dentro de nuestro segmento, es decir, podemos alimentar una base de datos directamente en la plataforma (mínimo 1000 personas para anuncios de video). Facebook busca una a una personas del segmento similar para una efectividad superior a la de los anuncios en YouTube.
  4. Y lo que yo definiría como el santo grial de anunciar en Internet: el remarketing. Con Facebook para video podemos generar una excelente estrategia de remarketing y tener la posibilidad de crear una historia con diferentes anuncios. ¿Cómo? Podemos hacer una primera campaña de introducción que dure unos cuantos días, al finalizar este lapso, podemos continuar la historia con un video diferente cada vez que se finalice la campaña, esto puede generar un 30% más de visitas y un engagement rate muy alto, debido a que así a la gente le encantan las buenas historias que los atrapen, guíen y enamoren, que los hagan sentir parte de ella. Podemos crear y excluir audiencias que ya nos hayan comprado o hayan hecho parte de nuestro funnel y así no gastar presupuesto en personas que ya adquirieron un producto.
  5. Y lo más importante, nos permite configurar un CTA al final de video que puede ser la cereza que le hacía falta al postre. De esta manera podemos trackear el rendimiento de la campaña y, porque no, el camino final para lograr una conversión.

CTA-buttons-video
Pero ¿qué es una campaña sin estadísticas?

Para los que trabajamos en marketing es muy importante saber los resultados de cualquier campaña que ejecutamos, es por eso que para estos nuevos features de video Facebook hizo una actualización hermosa de su sistema de reportes, dándonos datos exactos de todo lo que ocurre.

De una forma muy sencilla podemos saber la cantidad de usuarios que vieron nuestro video, pero no es solo eso, podemos ver exactamente en qué parte el video quedaron, cuántas personas vieron un 25%, el 50%, 75% o la totalidad, para eso es recomendable usar videos de no más de 30 s, para poder lograr una mayor efectividad.

Debemos recordar que el éxito de una campaña depende en gran medida de nuestro funnel de conversiones, para saber dónde compran, cómo compran y si son fieles y siguen con nosotros o son de aquellos usuarios que solo compran una vez y nos olvidan.

metricas

Por último quiero dejarles algunas recomendaciones básicas que pueden ayudarlos a mejorar el rendimiento de las campañas de video que hagan de ahora en adelante, gracias a este último update de Facebook para los anuncios de video.

Recomendaciones

  1. Hacer videos con un peso mínimo de 500 MB a 700 MB.
  2. Subir los videos en un formato .MOV que es el más recomendable y compatible con Facebook.
  3. La resolución del video debe ser 720P como mínimo.
  4. El aspecto del video debe estar sobre el formato 16:9.
  5. No puede durar más de 30 s o el usuario se aburrirá.
  6. Crear un thumbnail llamativo que invite a los usuarios a ver el video.
  7. Crear copys claros, cortos y concisos que tengan la información necesaria sobre el video.

 

The post ¿Facebook video ad es el nuevo rey de la publicidad en video? appeared first on Maestros del Web.

by Santiago Eastman at December 03, 2014 10:11 PM

Variable not found

Quo vadis, ASP.NET MVC?

Aunque aún en beta e inmersa en un intenso proceso de desarrollo, la próxima versión de ASP.NET MVC está tomando forma en los hornos de Microsoft, y, sin ser definitivas, ya se pueden ver cuáles serán las novedades principales que la acompañarán.

En futuros posts iremos entrando en mayor detalle, pero de momento vamos a echar un vistazo desde una cierta distancia para tener la idea general sobre dónde estamos y la evolución que vamos a encontrar en las nuevas versiones de tecnologías y plataformas, de forma que podamos ver en qué nos afectará como desarrolladores y, en definitiva, para qué tenemos que irnos preparando.
Disclaimer: estamos aún en una fase en la que algunas cosas pueden cambiar y aún no existe información exhaustiva de muchos detalles, por lo que pueden existir ausencias o imprecisiones. Pero bueno, digo yo que el grueso será más o menos correcto ;-)

Piedras en la mochila

En estos momentos, tenemos una versión de ASP.NET MVC estable, potente, rápida y con una gran comunidad de desarrolladores, tanto noveles como los que encontraron en este framework la alternativa a Webforms que estaban esperando. En los cinco años transcurridos desde la aparición oficial de la primera versión, se ha convertido, sin duda, en el estándar de facto para el desarrollo web basado en tecnologías Microsoft.

imageSin embargo, ASP.NET MVC aún arrastra una pesada losa heredada de los primeros tiempos de .NET, allá por 2002: el mastodóntico core de ASP.NET, llamado de forma genérica “System.Web”. Este núcleo, que conforma la monolítica infraestructura básica sobre la que corren casi todas las aplicaciones ASP.NET actuales, es enorme, complejo, pesado, muy ligado a tecnologías y servidores, y en muchos aspectos está mal diseñado, o al menos no diseñado con los parámetros y buenas prácticas que hoy en día entendemos como razonables.

MVC sigue irremediablemente atado a System.Web porque internamente lo utiliza en demasiados puntos, y esta dependencia no es buena para la evolución del framework, ni para la apertura de nuevas fronteras como el salto a entornos multiplataforma, además de suponer un lastre importante en cuanto la velocidad y consumo de recursos de las peticiones, tan importantes en entornos escalables y servicios en la nube.

OWIN y Katana, de los que hemos hablado por aquí extensamente, vinieron al rescate hace algún tiempo como los aislantes que necesitábamos entre los marcos de trabajo de alto nivel y la infraestructura, y las últimas versiones de los frameworks más jóvenes como WebAPI y SignalR los utilizaron de forma correcta para desvincularse totalmente de System.Web. Esta independencia hizo posible que pudieran alojarse servicios WebAPI o SignalR en cualquier tipo de proceso (aplicación web, servicio windows, aplicación de consola…) y que fueran muy eficientes.

Sin embargo, migrar MVC a los conceptos propuestos por OWIN para  no era una tarea sencilla, por lo que la versión 5 continuó atada a System.Web, y el uso de componentes OWIN/Katana se limitaba a la inclusión de middlewares de plataformas ajenas al framework MVC, como Identity Framework.

Los nuevos aires


Y estando así el patio, aparece por el horizonte .NET Core 5 (aka Core CLR), un subconjunto del .NET tradicional escrito desde cero, open source, con vocación multiplataforma (soportado directamente en Linux y Mac), fácilmente distribuible a través de Nuget y optimizado en el mundo web para obtener lo mejor de los entornos servidor, tanto cloud como on premise.

.NET Core 5 no supone, al menos de momento, la desaparición del .NET “clásico”, cuya próxima versión será la 4.6, y que seguirá una línea más continuista con las versiones anteriores. NET Core es sólo una alternativa optimizada para distintos entornos, entre ellos los servidores, pero seremos nosotros los que decidiremos sobre qué infraestructura queremos construir. Pero por poner un ejemplo de las ventajas de Core CLR en el mundo web, se estima que al usarlo una petición típica puede requerir 2Kb de memoria de servidor para ser procesada, frente a los 30Kb que se ocuparía en caso de seguir usando la infraestructura tradicional. Imaginad la repercusión que puede tener esto en cuanto a aprovechamiento de recursos de un servidor.

¿Y qué tiene todo esto que ver con ASP.NET MVC 6? Pues la respuesta está en ASP.NET 5. La próxima versión de ASP.NET será un framework unificado en el que encontraremos tecnologías de desarrollo como MVC, WebPages o SignalR, y que podrá correr sobre .NET 4.6 en Windows/IIS o sobre .NET Core en cualquier plataforma (por supuesto, incluida Windows).

Si todo esto os parece algo confuso, que probablemente lo es, podéis profundizar en este gran post de César de la Torre, de donde he tomado prestado el par de diagramas que veis por aquí porque creo que resumen muy bien la estructura general del nuevo escenario:


Algunas novedades de ASP.NET 5

Siguiendo la línea iniciada por la idea “One ASP.NET” que casi monopolizó las novedades en la última oleada de tecnologías de desarrollo para la web, en ASP.NET 5 crearemos aplicaciones web de cualquier tipo usando una infraestructura común, a la que iremos añadiendo las piezas necesarias para cubrir nuestras necesidades: MVC, SignalR, seguridad, logging, etc. Con esto se consigue una modularidad que hasta ahora era imposible de serie, aunque muy a la filosofía OWIN que ya comenzó a cuajar tiempo atrás; de hecho, si en su momento comprendisteis o trabajasteis con OWIN/Katana la forma de configurar sistemas ASP.NET 5 os resultará bastante familiar.

Y dado este nuevo contexto, el primer cambio que encontraremos en MVC 6 y el resto de frameworks es que no hay ningún tipo de vínculo con componentes de ASP.NET clásico (System.Web), lo cual incide en muchos  aspectos generales, como el propio tamaño del framework o su la velocidad de ejecución, pero también en detalles que nos afectarán a la hora de desarrollar.

Por ejemplo, el global.asax dejaba de tener sentido como tal, pues en su interior encontrábamos código vinculado a eventos de objetos propios de ASP.NET clásico. El código de inicialización, de nuevo, será más parecido al de sistemas basados en OWIN y la implementación de funcionalidades trasversales como un logging las haremos a base de construir middlewares. Tampoco será ya necesario el archivo Web.config, que durante tantos años ha servido para configurar tanto el servidor como las aplicaciones. Los archivos de configuración de los proyectos han cambiado a un modelo mucho más potente y flexible que estudiaremos en su momento.

Claro, y puestos a retocar infraestructura, se ha aprovechado para poner al día algunas asignaturas pendientes en ASP.NET, como la inyección de dependencias, que ahora vendrá integrada de serie y aplicada internamente en todos los frameworks, o el uso de la asincronía de forma generalizada. Si hasta ahora habéis ignorado los célebres async/await, Task y otras hierbas similares,  me temo que tendréis que iros poniendo al día si queréis sacar provecho de las tecnologías que se avecinan.

Roslyn es otro gran protagonista en el nuevo ASP.NET, tanto que incluso está dispuesto a cambiar la forma en que desarrollamos. El ciclo “Editar>Salvar>Ejecutar>Parar>Editar…” se va a simplificar porque ya no hará falta compilar de forma explícita, será Roslyn el que se encargue por detrás de esta tarea. Por ejemplo, si cambiamos el código de un controlador bastará con recargar la página en el navegador para ver el resultado, no habrá que parar la ejecución y volver a empezar. Como podréis suponer, esto no sólo afecta al workflow del proceso de desarrollo, sino que además posibilita otros escenarios de despliegue que hasta ahora no existían. Es un cambio fuerte para los que llevamos años con ASP.NET, pero seguro que podemos acostumbrarnos  ;-)

En cuanto al tooling, también cambia bastante la cosa. Todas las herramientas de build y ejecución pueden lanzarse fácilmente desde la línea de comandos, supongo que porque se trata del común múltiplo en un contexto multiplataforma. Así, es posible realizar estas tareas exactamente de la misma forma independientemente de si estamos en Windows, Mac o Linux. Pero ojo, esto no significa que tengamos que usar oscuros comandos continuamente en nuestro día a día, seguro que Visual Studio y otras herramientas proporcionarán interfaces más similares a los que estamos acostumbrados a utilizar, aunque probablemente determinadas acciones estarán accesibles exclusivamente, al menos de momento, desde línea de comandos.
image
Puede usarse cualquier tipo de editor para programar aplicaciones ASP.NET, e incluso existen proyectos como  Omnisharp para llevar utilidades como intellisense o herramientas de refactorización a editores ajenos a Microsoft como Brackets, Emacs o Sublime Text, desde cualquier sistema operativo. De nuevo, la idea es que el desarrollo de aplicaciones ASP.NET pueda hacerse desde cualquier plataforma y herramienta, y dejar que el desarrollador decida si prefiere alejarse de Windows/Visual Studio.

De la misma forma, y siguiendo una tendencia que se apunta desde hace ya algún tiempo, Visual Studio 2015 se alinea y hace uso de herramientas ya asentadas en otras comunidades de desarrolladores web, como el gestor de paquetes de frontend Bower o el sistema de automatización Grunt. Esto, unido a la necesidad de dar un poco de coherencia a las necesidades de mejora en la organización interna de los propios proyectos, tiene también su incidencia en la estructura de carpetas de las soluciones, que seguirán a partir de ahora un esquema más cercano a la realidad del desarrollo web.

Observad que todo lo que estamos comentando son cambios y novedades generales de la infraestructura de ASP.NET 5 y, por tanto, aplicable para todos los frameworks que se construyan sobre ella. Nada específico de MVC hasta el momento.

Y entonces… ¿qué cambios concretos encontraremos en ASP.NET MVC 6?

Pues en primer lugar, encontraremos los cambios derivados de todas las novedades introducidas en ASP.NET 5 anteriormente comentados:
  • Posibilidad de crear aplicaciones MVC sobre .NET 4.6 o Core CLR.
  • La estructura de los proyectos cambiará.
  • Cambios en el workflow de desarrollo debido a la compilación automática. Si queremos.
  • Tendremos nuevas fórmulas para configurar los proyectos y aplicaciones.
  • En la mayoría de los casos no será necesario usar contenedores IoC para inyectar dependencias, puesto que ASP.NET ya incluirá este mecanismo de serie.
  • Desplegable en cualquier plataforma (Windows, Linux, Mac), y ejecutable en cualquier tipo de host (IIS  u otro servidores web, servicios del sistema operativo, aplicaciones…)
Pero claro, no podía queda ahí la cosa. Ya habíamos comentado por aquí en alguna ocasión que la ausencia de una infraestructura común estaba haciendo que nacieran arquitecturas y componentes paralelos, duplicados, por cada uno de los frameworks de desarrollo web. Esto era especialmente notable con MVC y WebAPI, que compartían muchos conceptos y entre los que existía mucha duplicidad a nivel de arquitectura y componentes. Estaba claro que era un escenario difícil de sostener a largo plazo, por lo que se ha aprovechado el momento para unificar MVC y WebAPI.

A lo bestia, podríamos decir que MVC se ha comido a WebAPI. Un ejemplo práctico es que ya no existirá la clase ApiController, sino que su comportamiento habrá sido absorbido por los habituales controladores MVC (que por cierto, podrán ser objetos POCO puros). Esto implica algunas modificaciones al sistema de routing, al binding, a los mecanismos de negociación de contenidos, y a la forma de retornar resultados desde las acciones, pero estos cambios afectarán principalmente a las aplicaciones WebAPI, las basadas exclusivamente en MVC sufrirán poco debido a esta unificación.

Otra novedad interesante es la introducción de los View Componentes, un nuevo tipo de elementos reutilizables que permiten realizar acciones y componer porciones de vista de forma más eficiente y mejor integrada que las conocidas acciones hija o vistas parciales. Lo veremos en mayor detalle más adelante, pero si queréis ir echando un vistazo, el amigo Eduard escribió sobre ellos hace unos meses.

Con MVC6 encontraremos también una nueva versión de Razor que incluye también novedades interesantes para la capa vista, como la integración de la asincronía en procesos de renderizado, flush parciales de páginas, inyección de dependencias sobre las propias vistas, o los nuevos e interesantísimos tag helpers, para mi gusto una de las novedades más interesantes de esta revisión, pues permiten seguir eliminando ruido de las vistas y hacerlas más fáciles de leer y escribir. Podéis ir leyendo algo sobre ello en el blog de Unai.

En general, no se trata de grandes novedades en sí mismas. De hecho, de no ser por los cambios en infraestructura y las modificaciones internas que esto ha acarreado casi casi podría pasar por un incremento menor de versión.

Pero lo importante, ¿me dolerá, doctor?

Pues depende, amigo. Para las nuevas aplicaciones, probablemente ASP.NET 5 y MVC 6 serán las plataformas naturales sobre la que trabajaremos siempre que el entorno de desarrollo y explotación nos lo permitan. Las novedades de ASP.NET y MVC comenzaremos a usarlas de forma progresiva y seguro que en poco tiempo nos haremos con el nuevo entorno. En este sentido, no creo que el aterrizaje de MVC 6 sea demasiado doloroso.

La entrada de ASP.NET 5 tampoco afectará especialmente a aplicaciones escritas con versiones anteriores de los frameworks como MVC 5, pues seguirán ejecutándose sin problema sobre .NET 4.6, el entorno completo. Pero obviamente no podrán beneficiarse de las novedades de ASP.NET 5 si no son migradas.

Y los problemas los encontraremos precisamente en la migración de una aplicación existente MVC 5 o anteriores a MVC 6. Pero observad que la mayor parte de una aplicación MVC convencional podría valer: los controladores seguirán siendo controladores, seguiremos teniendo vistas, y nuestro modelo podría seguir siendo el mismo (dependiendo de cómo lo hayamos construido, claro). Las mejoras al propio framework MVC 6 (view components, controladores POCO, inyección de dependencias de ASP.NET…) son opcionales y podemos usarlas según las necesitemos, pero no nos van a condicionar una migración, exceptuando quizás la unificación con WebAPI, que sí implicaría la adaptación o reescritura de componentes.

Por ello, las cosas más complicadas en una migración vendrán provocadas principalmente por los cambios en la infraestructura, que van a impedir que se pueda de forma directa, “a la copy&paste”. Los múltiples breaking changes nos obligarán siempre a revisar, replantear y reescribir en algunos casos partes de nuestra aplicación como:
  • La propia estructura de proyecto.
  • La configuración (lo que antes teníamos en el web.config).
  • El routing.
  • Código de inicialización (lo que hasta ahora teníamos en el Application_Start) o eventos de aplicación.
  • El sistema de inyección de dependencias.
  • Módulos, handlers y otros especímenes de esta fauna.
  • Todos los controladores WebAPI, debido a la fusión con MVC.
  • Si pensamos usar Core CLR y en nuestra aplicación hacemos uso de características no soportadas (recordar que se trata de un subconjunto de .NET, no incluye todo), tendremos que reescribirlas usando las alternativas que tengamos disponibles.Y si no las hay, tendremos un problema.
  • Lo mismo ocurrirá si hacemos uso de componentes de terceros que tengan dependencias a componentes no soportados.
  • Si usamos temas algo avanzadillos y hemos sustituido o extendido componentes internos del framework por personalizaciones podríamos encontrar también algunos problemas, pues muchos se han reescrito para dar cabida a los cambios en infraestructura.
  • … y seguro que se me olvidan cosas y que conforme vayamos conociendo mejor MVC 6 iremos descubriendo algunos temas conflictivos más.
Visto lo visto, seguro que habrá aplicaciones cuya migración requiera tal esfuerzo que ni siquiera las intentaremos migrar a MVC 6, quedando en su versión original in aeternum, mientras que más sencillas y asequibles. En cualquier caso, desde Microsoft proporcionarán algunas herramientas para ayudarnos en los procesos de migración, aunque de momento la única ayuda que tenemos disponible es la utilidad API Portability analizer, que nos ayuda a detectar en nuestras aplicaciones los puntos en los que hacemos uso de APIs que limitan la posibilidad de portarla a otros entornos.

En definitiva, si bien los cambios a nivel de plataformas de desarrollo de alto nivel como ASP.NET MVC no son enormes (salvo para WebAPI, descanse en paz ;-)), el replanteamiento de la infraestructura (desde ASP.NET hacia abajo) sí convierte esta nueva oleada de tecnologías en una revolución bastante interesante, probablemente la de mayor calado casi desde el origen del framework, y a la que tendremos que prestar la atención que merece durante los meses venideros.

Publicado en Variable not found.

by José M. Aguilar (noreply@blogger.com) at December 03, 2014 09:25 AM

December 02, 2014

Maestros del Web (Editorial)

Aprende a crear y promover tu marca personal en Internet

Los portafolios digitales son un elemento decisivo para cualquier persona que busque mejorar su valor en el mercado, dar mayor impacto a los proyectos y empresas en los que se encuentre o generar mayor confianza en las comunidades virtuales que frecuenta.

Si bien el curriculum vitae y los títulos seguirán existiendo, debido al sistema educativo y laboral tan complejo en el que vivimos, recuerda siempre que ante todo tú eres lo que haces. Todas las personas tienen increíbles talentos, han vivido experiencias únicas y cuentan con una genialidad particular en sus áreas de trabajo. Es una responsabilidad importante comunicarlas creativamente para crecer con mejores bases.

Plataformas para crear portafolios

Imagina llegar a una entrevista de trabajo, a un cierre de venta, a presentar una conferencia. Si llegas a tener un excelente desempeño, la gente te buscará, investigará, querrá saber más de ti y de tus ambientes, tenlo por seguro. Por lo tanto aprovecha esas oportunidades y trata de crear una presencia digital tan sólida como la experiencia que les ofreciste.

 Para lograrlo es bueno tener un espacio que resuma toda tu experiencia personal. Simple, sintetizado y fácil de encontrar. Y que te permita administrarlo a tu gusto.

Comencemos con las plataformas

Entre las recomendaciones principales está Ghost con NodeJS, un proyecto que está enfocado en el fortalecimiento de publicaciones, marca y creación de contenido. La opción es descargar el proyecto desde su sitio, armar tu aplicación web y desplegarlo en tu servidor.

Aunque, importante, si no sabes programar, ellos te ofrecen un espacio “in-house” dentro de sus servidores y puedes comprar “temas” en el Marketplace, para empezar en minutos sin haberte enfrentado a ninguna línea de código. Adicionalmente te ofrecerán analíticas para saber visitas, conversiones, etc.

Existe también Jekyll con Ruby, si eres fan de GitHub seguro te gustará mucho ya que puedes armar gratuitamente un blog espectacular combinándolo con su módulo de Pages.

Una tercera opción es DjangoCMS con Python. Acá se aprovechan las bondades de Django, el framework, para crear aplicaciones web robustas, enfocadas a contenidos. Si eres fan de este lenguaje, es una excelente opción.

Finalmente, WordPress también es una plataforma madura, con muchas mejoras en sus últimas versiones. Te recomendamos conocer toda su arquitectura, comunidad y buenas prácticas, para que tengas una experiencia positiva. Ahora bien, recuerda enlazarlas con un dominio web.

Te recomendamos generar uno que tenga que ver con la identidad que quieres promover, en el mejor caso, tu nombre (www.tunombre.com), pero es opcional. Si no estás convencido o todavía lo ves complicado, se encuentra About.me, un sitio en el que puedes vincular toda tu identidad profesional de forma rápida y ágil. Acá puedes compartir un pequeño “brief” y tus enlaces a tus redes sociales. No es tan administrable como las anteriores, pero es una opción viable.

Comunidades y redes sociales

Tener una tracción social con comunidades de tu sector es un factor vital. Un consejo es abrir un sitio en Facebook Pages. Utilízalo para generar, compartir información, actividades y sucesos de tus áreas. Maneja Twitter y púlelo profesionalmente. Aunque lo puedes utilizar de forma personal sin problema, no está mal enfocarlo también a las áreas que te apasionan.

LinkedIN es una red social a la que debes dedicar mucho tiempo. Llénalo en varios idiomas y utilízalo para exponer todo lo que tienes. Muchos departamentos de Recursos Humanos prefieren conocer tu resumen profesional por esta vía.

GitHub y Behance son comunidades de desarrollo y diseño respectivamente. Si tu perfil va por aquí, es importante tener un usuario y mostrar tus trabajos.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="480" src="http://www.youtube.com/embed/mknSfANqyFk?list=PLa28R7QEiMbmXDRVl7uzjQkBdbjhm4bMN" width="853"></iframe>

El Internet no tiene suficiente contenido

Aprende a construir, grabar y escribir contenido de tus áreas. A pesar de que existen infinidad de sitios para promover debates, análisis e información sobre cualquier tema, la mayoría de las personas solamente consumen en Internet. Pero existe un pequeño porcentaje de personas que se dedican a crear. Cuando uno forma parte de este segmento destaca rápido.

Dedicarse al contenido tiene grandes beneficios. Consolidas todo tu conocimiento, aprendes a sintetizar y conoces lo que las personas necesitan realmente. Te obligarás a leer, a reflexionar, a investigar, a ayudar. Y recuerda, aunque las visitas son importantes, lo es más la conversión que generes (conversaciones, invitaciones, apertura a negocios, etc.). ¿Consideraste abrir tu canal de YouTube? Esperamos que sí.

Destaca tanto como puedas

Olvida esa mentalidad de que tener una Fanpage es sólo para famosos, que no tienes que generar una marca porque no tienes nada que mostrar, que esta alternativa es de soberbios. Contar con un portafolio es sinónimo de liderazgo, de tener en cuenta a la comunidad, de compartir, de proponer. A estas alturas, las personas destacan y se abren puertas gracias a estos pequeños detalles. Sé una de ellas. Muéstranos tu portafolio en los comentarios y cuéntanos en qué te ha beneficiado. Será un gusto leerte.

The post Aprende a crear y promover tu marca personal en Internet appeared first on Maestros del Web.

by Miguel Nieva at December 02, 2014 12:07 AM

November 28, 2014

Maestros del Web (Editorial)

¿Todavía es importante la etiqueta meta description?

Cuando utilizas herramientas para medir la optimización de tu página, uno de los factores que está presente en todo momento es la meta description. Estas herramientas evalúan si tienes la etiqueta en el código y si la descripción que usas tiene una longitud apropiada para los buscadores.

¿Pero afecta el SEO de tu sitio web la optimización de esta etiqueta?

La verdad es que la etiqueta meta description no es uno de los factores que afectan el posicionamiento de tu sitio web. Sin embargo es recomendable utilizarla adecuadamente.

¿Por qué usarla si no afecta el posicionamiento?

Si incluyes palabras relacionadas al topic del que hablas en tu página (palabras clave), cuando los usuarios busquen algo relacionado estas palabras van a aparecer en negrita. A pesar de que esto no ayuda a mejorar el ranking de tu sitio, es un atractivo visual para aumentar el porcentaje de clics en los resultados de búsqueda hacia tu sitio web.

Cómo optimizar la etiqueta

La longitud ideal del texto para la etiqueta meta description está entre 150 y 160 caracteres. No hay un número exacto ya que con los cambios del algoritmo de Google este texto ahora está limitado por 512 píxeles y no por la cantidad de caracteres.

Lo ideal es que las palabras relacionadas con las búsquedas estén en las palabras principales para no correr el riesgo de que, si tu descripción es demasiado larga, las palabras principales no aparezcan en los resultados. Si tienes una descripción muy larga esto no va a afectar la posición de tu sitio web. Pero sí puede afectar la cantidad de clics que reciba tu página en los resultados de búsqueda.

Es recomendable escribir un texto para la etiqueta y centrarse en una descripción que incluya las palabras relacionadas al topic de cada página en tu sitio web sin que parezca que lo escribió un robot ¡recuerda que la sobre-optimización es un crimen!

Nunca repitas una descripción en una página de tu sitio, es importante que los textos en esta etiqueta sean únicos.

Puedes utilizar esta herramienta para probar los textos de tus descripciones. Si tienes un sitio web con muchas páginas y quieres saber cuales descripciones están optimizadas puedes utilizar Screaming Frog que te ayudara a rastrear todas las páginas de tu sitio y diagnosticar cuales descripciones tienen o no una buena optimización.

screaming-frog

No es necesario tener la etiqueta en todos los casos

Lo más lógico en todos los casos sería tener una etiqueta optimizada para cada página y así sacar provecho de la misma. Pero si tu página no tiene la etiqueta de meta description los buscadores mostrarán al usuario una descripción relacionada con lo que está buscando. Pero no siempre puedes confiar en que los motores de búsqueda hagan el trabajo por ti.

The post ¿Todavía es importante la etiqueta meta description? appeared first on Maestros del Web.

by Alejandro González at November 28, 2014 05:25 PM

November 26, 2014

Yukei

Capturar el nombre de un subdominio en la configuración de nginx con expresiones regulares

Al configurar el nombre del dominio en un vhost de nginx puedes utilizar una expresión regular. Esto te sirve, por ejemplo, para capturar el nombre del subdominio para reutilizarlo como variable.

En este snippet, capturamos el nombre del subdominio como subdomain (línea 2) y luego utilizamos el método de carga de imágenes remotas con proxy inverso para mostrar las imágenes que no existen en nuestra copia de desarrollo.

server {
  server_name ~^(?<subdomain>[a-z0-9-]+)\.development\.lo$;
  root /var/www/development/htdocs;
  resolver 208.67.222.222 208.67.220.220 8.8.8.8 8.8.4.4;
  location ~* ^/wp-content/uploads/(.*)$ {
	if ( !-e $request_filename ) {
	  proxy_pass http://$subdomain.testing.com$uri;
	}
  }
  include global/restrictions.conf;
  include global/wordpress.conf;
}

Tags: , ,

Related posts

The post Capturar el nombre de un subdominio en la configuración de nginx con expresiones regulares appeared first on yukei.net.

by Felipe Lavín Z. at November 26, 2014 09:25 PM