Google +1, ¿más rápido?

Hace unos días que Google ha anunciado una mejora de velocidad en el botón de Google Plus One. ¿Pero realmente estos códigos aumentan la velocidad?

Cuando hice el plugin para WordPress del Social Share Button hice algunos cambios en el código que te daban anteriormente por defecto. Y es que con la llegada de HTML5 se ha introducido un elemento en los scripts, el async que funciona en todos los navegadores desde hace algunas versiones.

Es curioso que Google esté apostando por dejar de dar soporte a varios navegadores (principalmente Explorer 7 para abajo, de Firefox 3.5 para abajo y versiones ya algo antiguas de Chrome y Opera). Sin duda Opera es el mejor navegador en cuanto a soporte de HTML5, por detrás pondría Chrome y Firefox y finalmente Explorer…

Ahora mi pregunta es… ¿realmente es necesario poner un código tal que así?

<script type="text/javascript">
  (function() {
    var po = document.createElement('script');
    po.type = 'text/javascript';
    po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(po, s);
  })();
</script>

¿O es mejor ya directamente dar soporte a algo tal que así?

<script async type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>

En ambos casos el sistema funciona “igual” de rápido, y pongo el igual entre comillas porque en una versión actualizada de los navegadores el segundo código funciona más rápido ya que no ha de ejecutar la función, algo que consume recursos.

El dilema está servido… por un lado hay que ir dejando de dar soporte a los navegadores antiguos (algo que llevo haciendo desde hace muchos años) y por otro los que deberían presionar para que esto ocurra siguen haciendo cosas extrañas según les parece.

Esto me lleva a pensar en el código de Google Analytics que también, decenas de veces he intentado optimizar… La situación es similar: ¿dejamos el código que nos ofrecen ellos, o ponemos el que realmente deberíamos poner?

<script type="text/javascript">
  (function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = 'http://www.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
  })();
</script>

Lo podemos enfrentar tranquilamente a algo más simple como:

<script async type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>

Personalmente creo que voy a empezar a aplicar ya la segunda opción en la mayoría de los proyectos, al menos en los que estoy seguro de que el segundo código va a funcionar (que van a ser todos los proyectos, con excepción de alguno concreto)… Y es que desde hace ya bastante tiempo sigo la norma básica que me va a hacer ganar dinero: quien tiene un Explorer 6 no ve Youtube y todavía menos va a pagar dinero en mi sitio para comprar algún producto.

SEO paso a paso

Hay dos cosas que suelen preguntarme bastante en cuanto a SEO se refiere: metodología y precios. Hoy voy a comentar sobre el primero de los puntos, el de la metodología. Y es que SEO hay de muchos tipos o, mejor dicho, muchas ramas, y hay que tenerlas todas en cuenta a la hora de preparar un proyecto SEO. Por cierto, hablo de SEO por llamarlo de alguna forma, porque hoy en día el SEO por sí mismo no sirve de mucho.

El primer paso de un proyecto web es saber cuáles son los objetivos. Muchos de los proyectos pueden ser simples páginas personales sin ánimo de lucro (como podría ser este blog en este momento, en el que escribo porque me apetece), otros proyectos pueden ir enfocados a conseguir ingresos por publicidad y otros pueden ir enfocados al comercio electrónico, el de vender productos. Dependiendo de qué queramos conseguir hay que plantearse muchas cosas, y si la finalidad cambia, el proyecto debería replantearse casi por completo.

El segundo paso de un proyecto es su arquitectura. En la arquitectura hemos de tener en cuenta la estructura de URL, la organización de contenidos, hacer un esquema de las distintas plantillas dentro del sitio (normalmente la página principal, navegación, fichas, páginas estáticas…). Esta arquitectura ha de permitir varias cosas, pero la principal es la escalabilidad y conseguir que los contenidos sean únicos, es decir, que la ficha de un contenido sea única y sólo exista una vez. De la misma forma, aunque algo más complejo a veces, encontramos la parte de navegación del sitio, categorías, sub categorías, tags… personalmente creo que es uno de los momentos más complejos de todo un proyecto, pero si se consigue hacer correctamente el resto del proyecto será bastante sencillo de alcanzar.

El tercer paso de un proyecto es su diseño. Ahora que sabemos qué elementos tiene cada una de las plantillas / páginas del sitio hay que plantear cómo será visualmente. En estos momentos, aunque todavía se sigue diseñando para 1024 píxeles, hay que plantearse el tipo de usuario que va a visitar nuestro sitio en cuanto a gadgets se refiere. Muy probablemente hay que plantearse un sitio multi plataforma que permita tener cada plantilla en una versión móvil (para pantallas de unos 480 píxeles) otra para tablets (que podría ser de unos 1024 píxeles) e incluso una para el resto de pantallas, de portátiles y escritorio que podría situarse hoy en día tranquilamente en un mínimo de 1280 píxeles. A la hora de preparar la documentación gráfica hay que plantearse muy bien cómo será la maquetación, CSS, imágenes para que consuman la mínima cantidad de recursos y se aproveche al máximo los estándares. Otro detalle importante es que hoy en día no se puede preparar un sitio web sin tener presente el HTML 5 (que será oficial en el segundo trimestre de 2012) y comenzar algunas incursiones en el CSS 3, aunque le quede un poco más de recorrido.

El cuarto paso de un proyecto es el desarrollo. Este paso se puede comenzar en paralelo al del diseño, ya que para crear el corazón del proyecto no suele ser necesario el diseño, y como sabemos qué ha de incluir (de la arquitectura) se puede comenzar a trabajar. Aquí, personalmente, voy a dejar claro que siempre ha de primar la calidad del software frente a la velocidad de desarrollo. Es mejor tener un buen software y tardar dos meses más que ir con prisas y lanzar una basura que luego de problemas. Optimizar las consultas SQL es básico para que luego no haya sobre cargas en el sistema. Además, hay que intentar tener la mente abierta a nuevas tecnologías, ya sean de desarrollo como capas intermedias de caché, almacenamiento, distribución, servidores estáticos… además, hay que tener siempre presente que la primera versión que se lance debe ser funcional por al menos 3 meses sin que hubiera necesidad de cambios (excepto para solventar errores graves).

El quinto paso de un proyecto es su maquetación e integración. Normalmente los programadores acaban haciendo el trabajo de maquetación, y a estas alturas de la vida en un proyecto mediano-grande es un error. Debe haber una persona que conozca perfectamente el HTML y el CSS para que aproveche al máximo las integraciones, las conversiones desde un PSD o similar a un fichero HTML totalmente funcional. Esta persona será capaz de hacer que con la mínima cantidad de código (que siempre ha de ser válido -que no validar-) consigamos la máxima cantidad de funcionalidades.

El sexto paso de un proyecto es la configuración de la infraestructura. Ahora que los programadores, diseñadores y maquetadores han dicho la suya, sabemos qué necesidades puede tener el sitio, por lo que hay que realizar las configuraciones de infraestructura. Por mi parte siempre planteo una estructura base: virtualización. Esto permite escalar y ser rápidos en el caso en el que se produzcan errores de máquina. Además, aprovechas los recursos mucho más, ya que puedes montar varias máquinas con configuraciones distintas, asignando los recursos de una forma más lógica y ordenada. Por ejemplo, más memoria RAM y un disco de alto rendimiento para la base de datos, un poco menos de memoria y disco de alto rendimiento para el servidor de estáticos, unas máquinas con más procesador para los frontales web… Eso sí, imprescindible, para poder escalar, que el SQL y la web estén separadas en máquinas, y que los frontales puedan escalarse en varias máquinas. Si esto no es así, probablemente el proyecto muera de éxito.

El séptimo paso de un proyecto es el de mejora del rendimiento (WPO). Cuando el proyecto está “acabado” (o en el horno) siempre hay que hacer unas pruebas para reducir la cantidad de “todo” posible. Todo va desde el tamaño del código fuente, el de las imágenes, JavaScript, CSS, DNS, compresión, estáticos y lo que se nos ocurra. Es básico reducir el consumo al máximo tanto para nosotros como para el usuario y los buscadores.

El octavo paso de un proyecto es el llenarlo de contenido. Un proyecto que no tiene contenidos no sirve para nada. Hay que tener unas reglas básicas en cuanto a los contenidos: han de ser únicos (si te proporciona la información un tercero, debes reescribir las descripciones y todo el contenido textual al máximo) y han de estar bien redactados. En el colegio nos enseñaron a todos la gramática, que es lo que permite a cualquier persona que hable mínimamente un idioma comprenderlo, claro está, junto al vocabulario correcto. Si tu perfil de usuario tiene un perfil técnico utiliza conceptos y vocabulario técnico. Si es un público infantil utiliza palabras básicas que hasta una persona que conozca poco un idioma sea capaz de comprender. Además hay que hacer un buen uso de las marcas (negritas, cursivas, refuerzos, mayúsculas, tildes, énfasis, listados, tablas, definiciones…). Es básico comprender también que los contenidos digitales se asemejan a los que aparecen en radio, diarios o televisión, pero que son ligeramente distintos. Hay que adaptarse al medio en el que estamos: Internet.

El noveno paso de un proyecto es su puesta en pre producción. Por norma general cuando se va a hacer una actualización nadie se lo mira, y ese es para mi uno de los errores más graves que puede cometerse en un proyecto. Aquí todo el mundo que participe en el proyecto ha de mirárselo. Desde el director del proyecto, los responsables de contenidos, los diseñadores, el SEO, los administradores de sistemas… además, no hemos dar nada por hecho, es decir, hemos de revisar todo como si fuera el primer día, desde el robots.txt hasta el último punto de la última frase. Cualquier metedura de pata puede ser mortal (y me he encontrado con esta situación en multitud de ocasiones). Si hay un momento en el que hay que ser equipo, es este.

El décimo paso de un proyecto es su puesta en producción. Esto no significa que se le haga promoción, sino que el proyecto esté disponible en la red de forma abierta a todo el que pase por ahí. Pero antes de darlo a conocer es muy recomendable dar unos primeros pasos. Entre esa lista encontramos el dar de alta nuestro sitio en una herramienta de Analítica Web (como Google Analytics) además de otras herramientas informativas como Bing Webmaster Tools, Google Webmaster Tools o Yandex.Webmaster. Cada una de estas herramientas nos dará información muy interesante de cara a situaciones que puedan producirse en nuestro sitio y que nosotros no seamos capaces de vislumbrar en un primer término.

El undécimo paso de un proyecto es el de esperar y ampliar. Sí, aunque pueda no parecerlo, los 3 primeros meses de un proyecto deben ser de esperar a ver qué pasa y actuar. Esto no significa que no haya que estar pendiente de él, todo lo contrario, hay que seguir ampliándolo con contenidos, hay que estar pendientes de todo lo que corresponde a infraestructura, a analítica web, a SEO (puro y duro de ver el crecimiento orgánico) e ir descubriendo y analizando con más detalle qué tipo de búsquedas hay, qué convierte mejor… Personalmente no soy muy partidario de ir con prejuicios a un proyecto en cuanto a palabras clave y similares. Como he dicho alguna vez: yo no posiciono palabras clave, yo posiciono sitios web. Los primeros 3 meses han de servir para que el equipo descanse y por otro para ver cómo se comporta ese proyecto en la red de redes. De forma paralela hay que comenzar a darle cierta promoción. Dependiendo del proyecto habrá que enfocarlo más a redes sociales, a publicidad PPC, email-marketing, radio, televisión… las posibilidades son infinitas. Queda totalmente excluida la promoción por compra de enlaces, intercambio, pay-per-post o similar… un proyecto nuevo ha de conseguir los enlaces de forma natural si no queremos que los buscadores marquen nuestro dominio y lo dejen una temporada en una caja de arena hasta comprobar que es un sitio “real”.

El duodécimo paso de un proyecto es el de actuar. Ahora que tenemos datos de muchos lugares (analítica, visitas, referentes, marketing, sistemas, contenidos, paneles de webmaster…) es momento de tomar decisiones. Las decisiones pueden ir por muchos caminos, o simplemente no hacer nada y seguir con el calendario establecido, seguir creciendo.

El décimo tercer paso de un proyecto es el de volver al principio. Normalmente, cuando han pasado entre 6 y 12 meses te das cuenta de algunos detalles que no son correctos y que habría que modificar, lo que implica entrar en el bucle infinito del “proyecto que nunca se acaba”. Revisar detalles de arquitectura, diseño, contenidos, infraestructura es el pan nuestro de cada día.

A parte de estos puntos, un detalle importante es implicar a gente buena en el proyecto, y con gente buena me refiero a competente profesionalmente y buena gente personalmente. Es importante antes de ponerse con un proyecto tener claro que cada persona de una empresa tiene unas funciones y que un programador no puede ser diseñador, o un SEO, administrador de sistemas, ni un periodista puede ser maquetador. Cada persona está creada para una función particular y, como bien decía el primer episodio de Futurama: uno ha de hacer lo que debe hacer.

Existen muchos tipos de SEO: el arquitecto, el de contenidos, el de analítica, el de sistemas, el programador… en un proyecto todo el mundo ha de tener claro qué parte del SEO le toca, porque el SEO ya no es una única persona, nadie tenemos los conocimientos completos de todo como para llevar a cabo el 100% de un proyecto. Así que, lo mejor que puedes hacer es que cada uno se preocupe de hacer lo que sabe lo mejor que sabe hacerlo, y no hará falta ningún seo, sino personas con sentido común.

Y si alguien quiere ayuda en su proyecto, siempre puede echar mano de los servicios de un ¿SEO?, de alguien con experiencia en el sector de Internet, que en España no somos muchos los que nos dediquemos al desarrollo de productos y comenzásemos antes del 2000 por la red de redes y tengamos la visión completa, desde el principio hasta el final de cómo se hace un proyecto completamente.

Alberto Lacasa

Tu nombre, sitio web o cómo quieres que te conozcan.

Me llamo Alberto Lacasa, mi blog es albertolacasa.es y llevo ya unos años dedicándome a esto que suelen llamar webtv aunque, en realidad, va más allá. Ahora mismo estoy vinculado a Ver y Cocinar y Inquiets Media, una productora de vídeo online.

¿Cómo, dónde, cuándo o por qué nos conocimos?

Yo te conocí a ti antes que tú a mi. Fue, además, en mi primer evento de emprendedores. El Networking Activo que organizó Emilio Marquez en el Citilab de Cornellà. Allí hiciste una charla de SEO y me quedé con tu nombre y con el de ese tema tan raro del que no había oído hablar. Seguro que luego hablamos en algún otro sitio entre medio, pero donde hicimos amistad de verdad fue cuando mi productora What if estableció una relación especial con un grupo con el que tú estás también muy vinculado, el Grupo Itnet, al que, por cierto, debo muchas cosas. En especial a Carlos y a Jaume.

Dile al resto del mundo lo que quieras sobre mi.

Caramba! Esto es muy difícil de contestar. Sé que mucha gente te sigue por lo que sabes de SEO, pero no han podido hablar contigo. Lo que les diría es algo obvio, se pierden una parte fundamental de Javi. Ellos ya deben intuir la capacidad que tienes para entusiasmarte por las cosas. Pero yo he tenido la oportunidad de conocerte en la distancia corta. De conocerte virtudes que no flotan en tus posts y de acompañarte en algún que otro momento complicado. Te conocí como referente y luego te he humanizado. Y eso tiene mucho valor.

Cine, teatro, guión… ¿con qué te quedas?

Está claro que el guión tiene un sentido cuando se representa. Y respecto al cine o al teatro es difícil. Tienen menos en común de lo que mucha gente se piensa. Está claro que lo que más consumo es cine: me encanta la fuerza de la fotografía. La interpretación es mucho más difícil que en el teatro porque al pobre actor están continuamente cortándole. El guión requiere dominar el explicar sin utilizar los diálogos. Pero el teatro tiene algo de abrumador en el ambiente que el cine no ofrece. Me encanta ese momento en el que las luces quedan en semipenumbra. Casi cualquier cosa puede suceder. Es mágico.

El vídeo en Internet dentro de las empresas

Es evidente que una empresa tiene que hacer todo lo posible por evitar que el consumidor tenga que hacer esfuerzos para entender su producto. La gente de marketing lo ha entendido toda la vida: por eso hacen eslóganes. Si a eso le sumamos el hecho de que internet es, esencialmente, imagen, las razones por las que el vídeo acabará siendo la herramienta más habitual en la red cae por propio peso.
Afortunadamente para ellas, los costes de producción han caído en picado. Y muchas empresas compiten en ese segmento. Eso sí, deben andar con cuidado porque hay que conocer las reglas. El vídeo online viene condicionado por el formato. Un anuncio de televisión no tiene por qué funcionar en la red. Por esa razón, alguien bueno haciendo contenidos no tiene por qué ser bueno comunicando en vídeo por la red.

Llevas muchos años en la red de redes… ¿recuerdas cómo fue tu primera vez?

Más que mi primera vez, recuerdo mis primeras veces. En mi caso había una combinación de fascinación y, lo reconozco, un cierto desdén. Empezaron a aparecer revistas especializadas que parecían las típicas revistas informáticas. Y yo las odiaba. Pensé que sería una cosa para fanáticos de la tecnología de programación y los IOs. Con el tiempo, he aprendido a querer (aunque a una cierta distancia) la programación y he asumido el tremendo error que cometí juzgando Internet. En mi descarga debo decir que era muy joven. Eso sí, sigue sin interesarme nada la biblia del Windows.

VHS, Beta, FullHD… ¿qué es lo mejor?

FullHD. Lo demás, romanticismos baratos. 😛

¿Qué es la felicidad?

Algo que hay que obsesionarse por vivir en presente. Es terrible porque muchas veces sólo vemos la felicidad una vez todo ha pasado. Me hace gracia ver cómo la gente de una cierta edad (no necesariamente mayor) dice que era feliz de más joven. En cambio, a los jóvenes les veo muy angustiados: han de decidir su profesión, su pareja, si quieren tener hijos o viajar mucho… En el momento nos dejamos llevar por las cosas malas y con el tiempo sólo recordamos las buenas. Yo apuesto por intentar ver el presente también con optimismo y el pasado con justicia.

¿Cómo será el día en que dejes Internet?

Dejaré de ser Internet el día que “ser de Internet” deje de significar algo. Cuando ya no haya barreras claras entre estar online y offline. Entonces no será una parte de la vida. Será vida. Sin más.

Ley de Vagos y Maleantes

Sé que lo que voy a explicar puede sonar muy anti popular, pero la verdad es que a estas alturas de la vida en las que no me importa nada decir las cosas tal y como las pienso, voy a soltarme: creo que debería volver la Ley de Vagos y Maleantes.

Por supuesto, me gustaría que volviera pero ligeramente actualizada, y es que lo que el PSOE y el PP han conseguido estos últimos años creo que es totalmente indecente de cara a ser participes de un mundo global como el que estamos viviendo hoy en día. Y digo estos dos partidos porque son los que han estado en el Gobierno estos últimos años… prácticamente desde que yo nací.

Desde que he vuelto de USA y he visto como ha degenerado el país a nivel laboral y empresarial cada vez estoy más contento de haber tomado la decisión de dedicarme a Internet y ser capaz de gestionar un proyecto completamente, desde la infraestructura hasta la comercialización; cada cosa a niveles distintos (ya que mi perfil es más bien técnico), pero con la posibilidad de quedarme en casa, trabajar por mi cuenta y vivir al nivel de vida que me apetece.

Estos días en los que en ITnet hay muchas vacantes disponibles, y en las que buscamos gente con cierto nivel, la cosa se complica. Siempre hemos sido partidarios de tener becarios, y los que realmente han dedicado ese tiempo a aprender y a aplicar su formación han crecido y ahora son responsables de muchas áreas. También ha habido gente que voluntariamente se ha ido para emprender o pasarse a otras empresas y han (hemos) vuelto de alguna u otra manera a trabajar y/o colaborar con alguna de las empresas del grupo.

¿Y qué tiene que ver esto con los vagos? Pues que ahora que buscamos gente de cierto perfil, cuesta encontrar gente buena sin trabajo, es decir, a los buenos no les falta trabajo, en cambio gente sin ganas de trabajar o simplemente inútiles (no útiles, -que no trae o no produce provecho, comodidad, fruto o interés-) los hay a patadas. Y lo peor es que muchos de ellos viven del cuento todo el tiempo posible que pueden del resto de nosotros a través de la subvención del subsidio por desempleo, algo que personalmente limitaría a 3 meses, excepto en aquellos que se dediquen a formarse de alguna manera. La gente se ha acomodado en su trabajo y no le ha dedicado algo de tiempo a formarse de alguna manera (incluida la auto formación).

Creo que aquellos que son conscientes de que su línea laboral (por ejemplo, aquellos que se dedicaban a la construcción, que está claro que eso no va a volver nunca a estar en los niveles en los que estaba, al menos a corto plazo) deberían trabajar de estudiar algún tipo de Ciclo Formativo (Medio o Superior) y aprender las bases de un nuevo oficio. El primer año dedicarlo lo máximo posible a estudiar (y ampliar idiomas, por ejemplo en las horas libres) y el segundo año comenzar a hacer prácticas y acabar su formación. Y digo esto porque, vuelvo a repetir, creo que gente válida hay y encuentra trabajo.

Otra cosa que hay que tener en cuenta son aquellos que acaban de salir de estudios universitarios y envían sus Curriculum Vitae a puestos para los que están sobre educados. Está claro que hay que empezar por algún sitio para tener cierta práctica, que no hemos nacido aprendidos, pero sed realistas y enviad una carta de presentación en la que expliquéis precisamente esto mismo, que sabéis que estáis por encima de lo que se solicita, pero que veis que es posible encajar (si es realmente así). Hace unas semanas me encontré en la situación de tener que incorporar una persona en el equipo y todos los CV que vi tenían másters, postgrados y similares cuando buscaba un simple redactor de contenidos. la persona que, aunque tenía estudios, se presentó con una buena explicación de que quería empezar a meterse en el mercado laboral para ver cómo funciona acabó llevándose el puesto, casi de un día para otro.

Por cierto, a todos aquellos que os entre el gusanillo de “emprender”: antes de lanzaros pensad si estáis dispuestos a trabajar 18 horas al día durante un año, incluidos los fines de semana.

Adiós TuManitas, finalmente

Hace ya un tiempo que comenzamos el proyecto TuManitas, y hace cosa de medio año comenté que el proyecto se acababa para nosotros. Estos últimos meses hemos seguido como socios de la compañía pero hace unos días hemos vendido nuestra parte de la sociedad, por lo que, ahora sí, además de dejar de ser los responsables del desarrollo de la plataforma y SEOs, también dejamos de ser socios y ya no tenemos vinculación alguna con la empresa.

Como bien dijo Jaume en su día, ha sido una negociación muy compleja, ha sido una salida bastante difícil y, aunque no voy a entrar en valoraciones, creo que esta salida ha sido una de las mejores cosas que hemos podido hacer de cara a nuestro futuro, ya que quedarnos después de todo lo ocurrido hubiera sido un error, tanto personal como profesional.

Y poco más que he de explicar; en realidad tendría mucho que explicar, pero la verdad es que ahora que hemos pasado página prefiero mirar hacia adelante con la posibilidad de volver a estar en proyectos muy interesantes que retomaré en septiembre y otros nuevos que estoy negociando. Eso sí, si alguien del sector de los clasificados está interesado en nuestros servicios que me lo diga, que estaré encantado de colaborar aportando, como en todos los proyectos, el know-how aprendido estos últimos años.

WordPress Performance Análisis

WordPress es un gran CMS, no me cansaré de decirlo, ya que lo uso desde 2006 y la verdad es que pocos problemas me ha dado; pero cada vez más las configuraciones e instalaciones se complican, los sitios web crecen de tráfico y la configuración básica ya no es suficiente.

En las últimas semanas he hablado de algunos desastres con WordPress, de la creación de estáticos para WordPress, algunos trucos con el .htaccess… y hoy quiero comentar un par de plugins que creo que son bastante interesantes de cara a tener en cuenta pequeñas mejoras de rendimiento.

El primero más que para analizar el rendimiento es para aumentarlo. Hoy en día por defecto WordPress viene configurado para que se cree un histórico de todas las entradas, actualizaciones y demás de forma infinita, por lo que se pueden generar hasta decenas de copias de una entrada antes de ser publicada. la verdad es que si activas el auto-guardado (por ejemplo cada 2 minutos -120 segundos-) creo que es más que suficiente y pocos necesitamos tener el historial. Para ello lo mejor es configurar esto en el wp-config.php:

define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL',120);

Una vez tengamos esto configurado deberíamos hacer una pequeña limpieza de la base de datos para aligerarla un poco (o mucho) con el plugin Better Delete Revision que aliviará un poco las consultas.

Pero no quería hablar de esto, sino de analizar las consultas a la base de datos. Y es que estos días atrás, como ya comenté en la entrada de los desastres de WordPress, me he encontrado con una instalación que me ha traído de cabeza algunas semanas. Durante un día completo desactivamos plugins, cambiamos la plantilla (aunque los responsables de la web la volvían a activar, de ahí el no haber encontrado el error)… total, que hace unos días me instalé un interesante plugin llamado Debug Queries que básicamente lo que hace es añadir al pie de página la lista de todas las consultas a la base de datos. En una plantilla sencilla (por ejemplo la Twenty Eleven) se hacen entre 20 y 40 consultas aproximadamente (dependiendo en muchos casos de los plugins instalados). El sitio que estaba monitorizando tenía más de 1800 consultas en todas las páginas. Al final, hice la misma prueba con el diseño por defecto y me volvió a dar las 30 habituales, manteniendo todos los plugins activos. Esto me hizo pensar que el fallo estaba en la plantilla, y que debía ser algo que estaba en todas las páginas (así que se reducía todo a que probablemente fuera la cabecera, el pie o la barra lateral).

Analizando la cabecera me di cuenta de que se hacían muchas consultas a cosas que siempre van a devolver los mismos resultados, como son las direcciones URL de las plantillas, del propio sitio web, etc… lo puse a pelo y me quedé tan ancho; lo mismo hice con el pie de página. Pero esto no era y la desesperación aumentaba. En la barra lateral había muchas zonas de código HTML comentados, y ahí estaba el error, que casi por inercia obviaba esas zonas “que no se ejecutan”… pero no me fijaba en el código PHP de ellas. Sí, allí estaba.

El sitio es colaborativo y tiene abierto el registro para cualquier usuario, a los que ofrecen sistemas de puntuaciones por participar, entre otras cosas. Pues allí estaba la función wp_list_authors listando los 900 y pico de usuarios en un menú desplegable que, en la web, no se veía. Como tenemos un sistema de reducción de código con WP Minify el sistema elimina toda la parte “comentada” del HTML, así que aunque miraba y miraba en el código fuente no se veía absolutamente nada extraño. Y es que aunque hay 900 usuarios, por cada uno de ellos se ejecutan dos consultas, una que pide la información de la tabla usuarios (ID por ID) y luego la que solicita todos los metadatos de dicho usuario… en definitiva: 900 por 2 te dan las 1.800 consultas que se estaban ejecutando y que no servían para absolutamente nada.

Lo más curioso de todo es que la propia página de código de WordPress incluye una sección llamada Testing WordPress Performance en la que da algunas explicaciones sobre cómo controlar el rendimiento del propio sistema en la que básicamente se trata el tema de Xdebug para controlar el PHP y de MySQLnd para analizar el MySQL.

Llevo años optimizando WordPress, pero siempre hay algún sitio web que no deja de sorprenderme.

Dani Rodríguez

Tu nombre, sitio web o cómo quieres que te conozcan.

En el Mundo Real soy “Dani”. A tiempo parcial, unas horillas cada día, soy “la mitad de la ‘Doble D'”, o sea, que escribo en todoseries.com.
Y luego está “xerop”, el nick que me acompaña desde hace más de diez años y que es también el dominio de mi blog personal, que cría polvo desde hace bastante, pobrecico…

¿Cómo, dónde, cuándo o por qué nos conocimos?

Nos conocimos en ItNet, eso seguro, pero no recuerdo el año ni el momento… yo era un periodista y tú un Ente del Mal, o sea, un técnico. Pese a ello, nos llevamos bien xD

Dile al resto del mundo lo que quieras sobre mi.

Que pudimos haber tenido un proyecto de radio online, pero que nos quedamos en la hoja de papel, ¿te acuerdas? Que siempre estás dispuesto a echar una mano.

Horas y horas de series…

…y las que quedan, que ahora empieza la cuarta de Breaking Bad y eso es un NOTICIÓN. ¡Ponte al día! La verdad es que veo menos de las que quiero, porque tengo Fringe y Six Feet Under en cola, pero ahora estoy muy liado leyéndome los cómics de The Walking Dead xD Que, por cierto, los recomiendo muuuucho…

¿Escribir o gestionar personas?

Escribir. Gestionar personas es mi trabajo, escribir es mi pasión.

Llevas muchos años en la red de redes… ¿recuerdas cómo fue tu primera vez?

Recuerdo el sonido del módem en mi habitación, y recuerdo acceder a Infovía no sin mil problemas de configuración antes. Muy mítico…

¿Dónde debería parar en una vuelta al mundo?

En una de las cabañas de madera del lago Lagarfljót. En Tioman. En la bahía de Fornells. El mundo puede esperar…

¿Qué es la felicidad?

Donde todos quisiéramos estar.

¿Cómo será el día en que dejes Internet?

A nivel personal, supongo que nunca lo dejaré; a nivel profesional querrá decir que me he tirado a la piscina…

Funciones interesantes para WordPress (3)

Y una nueva entrega de la serie de entradas sobre funciones interesantes para WordPress y más funciones interesantes para WordPress.

Eliminar palabras de menos de 3 letras en la URL al crearse:

function remove_short_words($slug) {
  if (!is_admin()) return $slug;
  $slug = explode('-', $slug);
  foreach ($slug as $k => $word) {
    if (strlen($word) < 3) {
      unset($slug[$k]);
    }
  }
  return implode('-', $slug);
}
add_filter('sanitize_title', 'remove_short_words');

Mostrar un bloque con la URL corta de cada entrada en su panel:

function shortlink_add_column($cols) {
  $cols['shortlink'] = 'Enlace Corto';
  return $cols;
}
function shortlink_add_value($column_name, $post_id) {
  if ('shortlink' == $column_name) {
    echo '<input type="text" value="'.wp_get_shortlink($post_id).'" onclick="this.focus(); this.select();">';
  }
}
function shortlink_sortable_column($columns) {
  $columns['shortlink'] = 'Enlace Corto';
  return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'shortlink_sortable_column');
add_filter('manage_posts_columns', 'shortlink_add_column');
add_action('manage_posts_custom_column', 'shortlink_add_value', 10, 2);

Los usuarios (no admin) sólo pueden ver su librería multimedia:

function my_files_only($wp_query) {
  if(strpos($_SERVER['REQUEST_URI'], '/wp-admin/upload.php') !== false) {
    if(!current_user_can('level_5')) {
      global $current_user;
      $wp_query->set('author', $current_user->id);
    }
  }
}
add_filter('parse_query', 'my_files_only');

Los usuarios (no admin) sólo pueden ver sus entradas:

function posts_for_current_author($query) {
  global $pagenow;
  if('edit.php' != $pagenow || !$query->is_admin)
    return $query;
  if(!current_user_can('manage_options')) {
    global $user_ID;
    $query->set('author', $user_ID);
  }
  return $query;
}
add_filter('pre_get_posts', 'posts_for_current_author');

Ver más botones en el Tinymce HTML:

function fb_change_mce_options($initArray) {
  $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
  if(isset($initArray['extended_valid_elements'])) {
    $initArray['extended_valid_elements'] .= ','.$ext;
  } else {
    $initArray['extended_valid_elements'] = $ext;
  }
  return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');

David Ordóñez

Tu nombre, sitio web o cómo quieres que te conozcan.

David Ordóñez, damarchis.com y mi alias en la red DaMarChis.

¿Cómo, dónde, cuándo o por qué nos conocimos?

Telefónicamente ¿2003? Habían hecho un defaced a googlemania.com y yo te avisé por teléfono. Tu número lo saqué de un whois al dominio. La primera vez que hablamos: te ibas de vacaciones, de modo que te di una “alegría”.
In person: Estación de Atocha, Madrid, el día antes de nuestro primer congreso OJObuscador de marzo de 2006 y puse cara a alguien con quien hablaba por teléfono más que con mi novia (en aquel entonces, hoy esposa).

Dile al resto del mundo lo que quieras sobre mi.

Mente/culo inquieto, frío por fuera, pasional por dentro. Capaz de moverse de Continente para encontrase a sí mismo si es menester. A lo mejor no es la persona que muestra abiertamente sus afectos, pero es la persona a la que le puedes dar el PIN de tu VISA para que esté seguro. Dual para muchas cosas, siempre en su mundo y siempre está ahí.

OJO

Un cabroncete al que le tengo mucho afecto. Hizo que dejara empleo estable, horario de oficina y sueldo fijo con pagas y vacaciones por el maravilloso mundo del emprendedor autónomo que se busca las habichuelas él solito. Tengo mucho que agradecerle 😉

Chispa, Menta…

Dos seres extraordinarios que me han robado un pedazo de cacho mío. Chispa ya no está, pero de algún modo está. Y Menta nos acompaña ahora y algunos días que bien pudieran ser grises los convierte en muy bonitos con sólo mover la colita. Yo de mayor quiero ser Menta.

Llevas muchos años en la red de redes… ¿recuerdas cómo fue tu primera vez?

A finales de 1998, en casa de un amigo al que le hice una web con Frontpage para Geocities, conectados por el pitirruuuu-pitirriiii… de un módem flamante, de los rápidos, de 56k.

Desconectar en algún lugar perdido por Cádiz o Sevilla

De Cádiz por Zahara de la Sierra o cualquier rincón de su costa de Chiclana hasta Tarifa. De Sevilla, el propio casco histórico de la ciudad, el río o en la provincia, por los pueblos de la Sierra Norte.

¿Qué es la felicidad?

Levantarte por la mañana y poder decidir qué es lo que quieres hacer en ese día.

¿Cómo será el día en que dejes Internet?

Internet es una cotidianidad que ya se va a quedar como la radio, la tele, los teléfonos… pero si me escapo a alguno de los lugares que te he dicho antes, es agradable la experiencia de estar por un tiempo sin Internet, sin radio, sin tele, sin teléfonos…

Funciones interesantes para WordPress (2)

Prosigo con la serie de entradas sobre funciones interesantes para WordPress.

Añadir ancho y alto en el listado de contenidos multimedia:

function tamany_column($cols) {
  $cols["dimensions"] = "Dim (Wid × Hei)";
  return $cols;
}
function tamany_value($column_name, $id) {
  $meta = wp_get_attachment_metadata($id);
  if(isset($meta['width']))
    echo $meta['width'].' × '.$meta['height'];
}
add_filter('manage_media_columns', 'tamany_column');
add_action('manage_media_custom_column', 'tamany_value', 10, 2);

Limitar la subida de ficheros a GIF, JPG y PNG:

function restrict_mime($mimes) {
  $mimes = array(
    'gif' => 'image/gif',
    'jpg|jpeg|jpe' => 'image/jpeg',
    'png' => 'image/png'
  );
  return $mimes;
}
add_filter('upload_mimes', 'restrict_mime');

Habilitar Tinymce HTML sólo para algunos usuarios:

function disable_html_editor_wps() {
  global $current_user;
  get_currentuserinfo();
  $users = array("admin", "juan", "maria");
  if(!in_array($current_user->user_login, $users)) {
    echo '';
  }
}
add_filter('wp_default_editor', create_function('', 'return "tinymce";'));
add_action('admin_head', 'disable_html_editor_wps');

Crea un meta-description con el texto del contenido:

function create_meta_description() {
  global $post;
  if(!is_single()) { return; }
  $meta = strip_tags($post->post_content);
  $meta = strip_shortcodes($post->post_content);
  $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
  $meta = substr($meta, 0, 160);
  echo '<meta name="description" content="'.$meta.'">';
}
add_action('wp_head', 'create_meta_description');

Cambia la cantidad de elementos por página en el panel de administración:

function admin_pagination() {
  global $wp_query;
  $per_page = 50;
  $wp_query->query('showposts='.$per_page);
}
add_action('admin_head', 'admin_pagination');