Páginas y aplicaciones webs a medida

La satisfacción de dar vida a su sitio web a medida haciendo su negocio online rentable, práctico, rápido y fácil de gestionar.

Encrucijada con RapidoPress

Cuando alguna persona desea tener una página web propia, consulta a un profesional para ello. Éste, en la mayoría de los casos, le recomendará la herramienta WordPress y a la misma vez, sea cierto o no, le llenará los oídos de lo fabulosa que es esta herramienta y la multitud de características buenas que dispone.

El desarrollo de WordPress está en manos de la empresa Automattic, que lo distribuye gratis. Automattic no vive del aire, vive principalmente del soporte y servicio de WordPress.com.

Conocido esto, vemos una contradicción. Lo que le llena los bolsillos de dinero a Automattic es WordPress.com hecho con la herramienta WordPress pero que a la vez es su máximo competidor ya que lo distribuye gratuitamente. Lógicamente Automattic siempre tirará para el lado de su negocio( la plataforma wordpress.com ) pero con mucho ojo ya que la herramienta WordPress le proporciona mucha promoción que no le conviene perder. Sabiendo esto sabemos como es internamente WordPress y como se desarrolla:

  • En WordPress no se prefiere ir sacando muchas novedades sino un producto robusto. Ya que nadie pagaría por una plataforma en internet con fallos. También se busca la compatibilidad hacia versiones anteriores hasta límites absurdo. Eso permite que los temas en su plataforma siempre funcionen correctamente y que cada día se sumen nuevos.
  • Automattic no quiere que WordPress sea una herramienta destinada a desarrolladores, todo lo contrario, necesita que desde WordPress.com cualquiera pueda crear, adaptar o gestionar un sitio web sin necesidad de tocar código alguno sino nadie contrataría sus planes. Es por eso que vemos como cada día se la da más importancia al personalizador de temas ( o customizer ) dentro de WordPress.
  • En la herramienta WordPress se añadirán características que no interesan al 95% de los sitios webs pero que si son necesarias para la plataforma WordPress.com. Por ejemplo, la característica de multisitios.
  • Las empresas grandes tienen sus sitios desarrollados a medidas, las empresas medianas suelen tenerlos con la herramienta WordPress en sus propios servidores. El target de Automattic son aquellas empresas o particulares con sitios pequeños o blogs, ya que son esos los que contratan sus servicios VIP en WordPress.com ( tanto en el enlace anterior como en el de los planes vemos que sólo se habla de blogs e incluso en su versión businesss ). Por tanto, aunque desarrollemos sitios corporativos con WordPress, sólo son apaños y con nada que crezcan irán muy lentos

Pese a todo ello, los desarrolladores estamos en cierta medida atados a WordPress, ya que, bloggers de renombre, cuyo mayores ingresos son las plataformas de afiliados o venta de infoproductos basados normalmente en WordPress, han hecho creer que todo sitio debería de usar WordPress. A ellos, se han sumado profesionales de otras áreas que han visto en WordPress una oportunidad para vender sitios webs sin tener los conocimienos suficientes de desarrollo. Por tanto, cada día son más los clientes que llegan pidiendo un WordPress en vez de un sitio web. Pareciera que son lo mismo pero nada más lejos de la realidad.

RapidoPress 0.35 WCEU 2015

Con motivo de la WCEU 2015 me he decidido adelantar una nueva versión de RapidoPress. Esta versión, la 0.35, es una menor por no incluir el sistema de CSS por less. Sin más, el changelog de esta nueva versión es:

Para usuarios

  • Eliminado Widget de nube de etiquetas
  • Añadido Widget Banner ( a partir del plugin Image Widget )
  • Añadido Widget Cuadro de Me Gusta de Facebook ( a partir del widget Facebook Like Box Widget de Jetpack )
  • Añadido Widget Twitter timeline ( a partir del widget Twitter Timeline Widget de Jetpack )
  • Añadido Widget visibility de Jetpack. Esta funcionalidad añade la opción de crear condiciones para las cuales se mostrará u ocultará los widgets.
  • Ahora los widgets core de WordPress se cargan bajo demanda
  • Eliminado personalizador de temas( customizer ).
  • Eliminación de soporte a RSS. En el futuro crearé un muplugin para aquellos que necesiten de esta funcionalidad

Para desarrolladores

  • El código del driver obsoleto de mysql para PHP se ha eliminado de wpdb, ahora siempre irá por el driver mysqli
  • Eliminado código relacionado con publicación vía email, todo era código deprecated
  • Eliminación de la clase obsoleta: class-snoopy.php
  • Eliminación de los archivos obsoletos: registration.php, registration-functions, admin-functions.php y upgrade-functions
  • Comienzo de reorganización de todos los archivos de WordPress bajo /includes/
  • Comienzo de uso de namespaces para los filtros y las acciones.
  • Comienzo de añadir namespace a las clases core. Autoload de clase para core, tema y plugins. Esto dará mucha flexibilidad porque ahora se puede reemplazar una clase del core, de un tema o un plugin por otra fácilmente.
  • Eliminación de javascripts obsoletos.

Rápido prueba RapidoPress 0.3

Ni una semana desde el último lanzamiento, ya está lista la versión 0.3 de RapidoPress. Las prisas venían porque luego estaré más de un mes sin poderle meter mano ya que quiero tener listo mi CMS corporativo( Trasweb Lite ) y por otros asuntos que no vienen al caso.

Bueno, esta versión viene con las siguientes novedades:

Mejoras para usuarios

  • Eliminado plugin dashboard de bienvenida.
  • Eliminado wp-admin/maint/repair.php que servía para reparar y optimizar la base de datos. El motivo es porque es posible hacer lo mismo, y mejor, mediante plugins ( por ejemplo: https://wordpress.org/plugins/wp-dbmanager/ )
  • Eliminación de editores de tema y de plugins.
  • Eliminación de widget ultimos comentarios y widget de páginas.
  • Eliminadas las tools ( exportación e importacion )
  • Eliminados los feeds de comentarios
  • Eliminados los atributos inservibles en las etiquetas html de CSS y las urls locales de los CSS ahora no llevan dominio
  • Eliminados los atributos inservibles en las etiquetas html de JS y las urls locales de los JS ahora no llevan dominio
  • Ahora el menú de "Comentarios", de la zona de administración, está dentro del menú de "Entradas" ( si quieres acceder de manera directa a él dale al icono de contador de comentarios en la admin-bar )
  • Ahora el menú de "Plugins", de la zona de administración, está dentro del menú de "Ajustes"
  • Ahora el menú de "Biblioteca" de medios, de la zona de administración, está dentro del menú de "Apariencia"
  • No más problemas por espacio en blanco enviado antes de envío de cookies.
  • Minimización html por defecto en la zona no administrativa. No se reduce a la mayor minimización posible pero si a la mejor en relación tiempo de minización/minización.
  • Algunas otras optimizaciones aquí y allá.

Mejoras para desarrolladores

  • Hasta ahora, se cargaba el archivo functions.php de un tema. Sin embargo, ahora también el funtions-admin.php si el usuario activo está en la zona de administración o functions-theme.php si el usuario activo está en la zona no administrativa. Así, si distribuyes bien tus hooks, sólo se cargará lo necesario.
  • Nueva función root_url que devuelve la ruta base de la url del sitio. Es decir, la url del sitio sin el dominio principal usando "Protocol Relative URLs" si es necesario.
  • Nueva constante RAPIDO_PRESS siempre a true, para que a nivel de programación de tema o plugin se pueda distinguir cuando estamos en WordPress y cuando en RapidoPress.
  • Sistemas de hooks refactorizado y optimizado.
  • Ya no hace falta especificar número de argumentos( $accepted_args ) ni para add_action ni en add_filter. Si se pasara, será ignorado.
  • Mejoras en el argumento "atts". Veremos abajo un pequeño resumen, un día de estos escribiré un post extenso sobre ello.
  • En actions, ahora es posible especificar un archivo( php o html ) este se cargará cuando ocurra la acción. Ejemplos: add_action('wp_head', __DIR__.'/metas.html'); o para distribuir nuestro código: add_action('admin_init', __DIR__.'/zonas/admin.php');,
Para la próxima versión, que cómo he dicho tardará más que estas tres primeras, espero poder añadir un nuevo sistema de hook, seguir borrando cosas innecesarias y meter lessCss.

RapidoPress versión 0.2 ya está aquí

Dado que ha tenido mucha aceptación el proyecto de RapidoPress me he aligerado para sacar una nueva versión aún más rápida. Los nuevos cambios son:

  • Eliminado readme.html
  • Eliminados archivos *rtl.css
  • Ya no se añade más la revisión en los enlaces a los archivos css y js
  • Eliminado metatag 'wp_generator' y 'wlwmanifest_link'
  • Eliminadas clases innecesarias en menús
  • Eliminados postfijos de versión y de dirección a los archivos javascript y css
  • Eliminados archivos de compatibilidad con antiguos temas( theme-compat )
  • Eliminado Press-This
  • Eliminado about, freedom y credits que se mostraban una vez actualizado WordPress
  • Eliminado xmlrpc y parcialmente pingback y trackback
  • Restituido el enlace para ir al tema o al panel del admin-bar
  • Limpiado archivos .po
  • Pequeñas optimizaciones aquí y allá

Respondo alguna de las preguntas que me han ido haciendo:

  • Rapido es un subtituto de WordPress. Lo que estoy haciendo es quitar todo el código que casi nadie usaba y añadiéndole optimizaciones.
  • Es compatible con el 99% de las webs con WordPress.
  • Es posible bajar/instalar temas y bajar/instalar plugins de WordPress en Rapido. Bien de manera manual o mediante el asistente de WordPress que todavía existe, y seguirá existiendo, en RapidoPress. Eso sí, no es posible actualizar el CMS de manera automática aún.
  • Yo diría que es estable. Sin embargo, no lo he probado intensivamente. Si tú te animas a probarlo, avísame si encuentras fallos o cuéntame tu experiencia.
  • Estoy abierto a ideas de mejora.

Te presento a RapidoPress

Como vimos en su día, WordPress es un CMS lento y yo, lo reconozco, estoy obsesionado por hacer las páginas webs cada día más rápidas. Tenía que hacer algo con WordPress. Así que ni corto ni perezoso, me he puesto a quitar de WordPress cosas que no necesitaba o utilizaba de este, como son:

  • Todo código relacionado con los multisite
  • El links manager
  • Sceen tab helps
  • Soporte de emojis y smilies
  • Código deprecated de WordPess

No sólo eso, me he puesto a eliminar widgets internos de WordPress o librerías javascript

Te regalo tres de mis mu-plugins WordPress

No, no me he equivocado al escribir. Lo he puesto bien: mu-plugins. No hace mucho, en mi ciudad( Sevilla / España ), hubo una charla de un programador de WPML encargado de soporte. Aproveché la ocasión para preguntarle si su plugin tenía soporte de mu-plugins porque me interesaba para un cliente y su respuesta fue un poco esquiva. Así que si uno de los desarrolladores de uno de los plugins más famoso de WordPress no sabe sobre mu-plugins, es muy probable que tú tampoco. Así que no te sientas mal si es así. Lo veremos ahora. Si me he equivocado y ya los conocías, puedes dejar en los comentarios tu experiencia sobre ellos.

Los mu-plugins ( o los plugins más usados ) son como los plugins que conoces pero estos se colocan en una carpeta diferente de WordPress( /wp-content/mu-plugins en vez de /wp-content/plugins ) y no se muestra en la zona de plugins del area de administración de WordPress. Tan sólo eso.

A lo mejor estás diciendo que vaya chorrada, pero no es así. Si te dedicas al desarrollo de páginas WordPress o a la creación de temas a medida, los muplugins se vuelven algo fundamental y necesario. Porque seguro que te ha pasado: haces un tema desde cero para tu cliente y este tema lleva soporte para cuatro o cinco idiomas mediante un plugin ( yo uso normalmente qtranslate, pero podría ser con otro cualquiera ). En un descuido, tu cliente, que es de dedo fácil, le da a desactivar(o incluso borrar) el plugin sin darse cuenta. ¡ Página caída !. O quizás, te ha pasado una variante. Ha salido una nueva versión del plugin y sin dudarlo( y sin probarlo antes en local, como debe de ser ), le da a actualizar el plugin. ¡ Tema roto !.

Con los mu-plugins te libras de estos problemas porque...

Solución a los problemas de qTranslate

Uno de los grandes problemas de los CMS prefabricados como WordPress es que pones todo tu negocio totalmente en manos de extraños y puede pasar que, de la noche a la mañana y en una de las actualizaciones automática de tu CMS preferido, tus páginas webs dejen de estar disponibles con la repercusión que eso tiene para tu negocio.

Uno de los tantos motivos para que deje de funcionar tu sitio web es que el programador de un plugin decida que no seguirá manteniéndolo, tal es el caso de lo que pasó con el famoso plugin qTranslate. Entonces, puedes llamar como loco a los programadores webs que te hicieron la página. Temo que la respuesta de ellos será algo parecida a: 'El programdor del plugin de idiomas ha dejado de mantenerlo, eso significa que ya no se puede utilizar. Sin embargo, nosotros no podemos hacer nada, es algo de los inconvenientes de usar WordPress'. Entonces, sólo te queda armarte de paciencia o seguir las indicaciones de esta entrada

Google no juega a los dados con la World Wide Web

Google no juega a los dados con la World Wide Web, sólo nos aprieta un poco más cada vez. Sin embargo, es gracioso ver a los expertos SEO( y eso que tengo cariño a más de uno que conozco ), detrás de Google siempre con la lengua afuera. Sólo hay que escucharlos:"es que ahora Google dará importancia a esto", "es que ahora Google ha cambiado el algoritmo y esto es importante". Si te atreves a preguntar si piensan que pueda haber algo de inmutable en todo ello, te dicen: "Es que como está hecho Google nadie lo sabe".

Yo no pienso así, y no creo que sea muy difícil darse cuenta de ello. Google quiere sitios webs de calidad, eso es todo. No hay más. Al principio daba manga larga porque había pocas webs y la calidad de estas, en la mayoría de los casos, dejaba mucho que desear. En nuestros días, que cada vez hay más y más sitios web Google va apretándonos para que nuestros sitios webs sean de más calidad. Tienes dos opciones en este caso:

  1. Vas dando bandazos, según te vaya diciendo un experto SEO que Google toma en cuenta.
  2. Haces bien tus páginas webs desde el principio y te olvidas de Google.

Si te decides por el primer punto, será un vaivén constante. Además, sin ningún control de tu negocio, ya que todo dependerá de algo externo y según lo que este haga: "ahora google dice que es importante la web para móviles", "ahora Google da importancia a los alt de las imágenes", "ahora...". Sin embargo, hay una opción mejor.

El patrón Strategy y funciones anónimas

¿ Por qué empezar una serie de patrones de diseño cuando hay ciento, o quizás miles, sitios en internet que ya lo hacen ?. Bien, yo tengo una forma peculiar de programar o de diseñar software. Me gusta conocer las buenas costumbres pero luego no las aplico rígidamente, más bien, desarrollo o diseño usando estructuras que siguen el mismo propósito pero no el mismo diseño o implementación que lo recomendado. Lo más puristas lo consideran sacrilegio. En mi opinión, puedo aportar un enfoque diferente que sirva de ayuda en determinadas situaciones.

Para esta entrada consideraré que ya sabes que es un patrón de diseño y sabes sobre el patrón estrategia o Strategy.

Primero, vamos a definir el problema a resolver: Un cliente nos pide hacer una clase que se encargue de visualizar distintas etiquetas HTML, porque no le gusta ningún sistema de plantillas. También quiere que sea compatible con bootstrap o cualquier otro toolkit en el futuro. El cliente también dice que si lo hacemos bien, nos traerá más proyectos( y por supuesto esto último quiere que lo tengamos en cuenta para el presupuesto ). Sí, es un pequeño marrón, pero al menos trataremos de hacer bien las cosas. Vamos a ver distintas soluciones y nos quedaremos con la mejor( spoiler: tiene que ver con el patrón Strategy ).

La evolución natural de la presencia en internet

Seguramente hayas empezado en internet con una web que se hace en tres pasos o tengas un blog con Blogger, WordPress.com o Medium. Sin embargo, tus necesidades pueden que cambien y quizás con medios ingeniosos los puedas solucionar ( por ejemplo, buscando servicios externos que las cubra ) o quizás no puedas y te veas obligado a contratar una página con un CMS ( WordPress, Joomla, Drupal, ... ).

Sin embargo, tus necesidades pueden cambiar otra vez y podrás intentar arreglarlas de manera ingeniosa( mediante plugins, cambio de tema o contratar a alguien para que te haga cambios ), sin embargo, más pronto que tarde te verás contratando un tema a medida o buscando una web totalmente a medida. Todo esto es una evolución natural. Si tus necesidades cambian, necesitas que tu vehículo cambie con ellas. Primero las intentas cubrir de manera ingeniosa o modificando tu vehículo y cuando ves que no es viable, saltas al siguiente escalón y te buscas un nuevo vehículo más acorde.

El mal uso de "framework"

Aquí en España tenemos obsesión con el término "página web". Se usa indistintamente para una aplicación web, portal web, foro, o lo que se tercie. Podríamos usar "sitio web" para los casos anteriores que sería más correcto, pero no, se nos ha metido entre ceja y ceja usar "página web". ¿ Esto sólo pasa con el término 'página web' ?. No, también con el de 'framework'.

Si te dedicas al desarrollo verás que vivimos en la época de los frameworks. Tenemos frameworks CSS, frameworks JS y por supuesto framework PHP. Tenemos ya frameworks casi hasta en la sopa. Lamentablemente esto no es que sea así. Simplemente, como se intuye, estamos haciendo mal uso de la palabra 'framework'.

Renderizado de una página web II

Un navegador web procesa normalmente las etiquetas de una página web en orden y por hilos. Sin embargo, hay veces que el navegador web adopta distintos niveles de supervisión que provoca que el renderizado de una página no se haga en orden de aparición de las etiquetas. Si el desarrollador del sitio web desconoce esto puede provocar errores o lentitud en la carga de la página.

Escoger adecuadamente un tipo de web a medida

¿ Desarrollo a medida o desarrollo prefabricado ?, ¿ qué es lo mejor para mi ?, ¿ cuánto debería de invertir en mi página ?, ¿ qué aspectos tengo que tener en cuenta en la creación de una página web ?. Si estas son tus dudas, entonces este post sobre escoger adecuadamente un tipo de web a medida es para ti. Descubre que hay que tener en cuenta a la hora de hacer una página web a medida o prefabricada. Después, seguro que no te supondrá mucho esfuerzo saber cómo elegir la mejor opción para ti.

Renderizado de una página web I

En el post sobre el efecto FOUC surgieron algunas dudas en cuanto a cómo un motor de renderizado realiza su función. Es por ello que aquí hablaré de como se renderiza una página web.

Tienes que tener en cuenta que de todos los agentes de usuario, me enfocaré sólo en los navegadores. También, por si alguien no lo había escuchado antes o no sabe como encajarlo bajo este contexto, usaré renderizar una web con el sentido de la cadena de acciones que realiza un navegador para presentar una página web, estas son, analizar, procesar y visualizar una web.

La información expuesta aquí está basada en mi propia experiencia( muchos F5 durante años ), pruebas y por supuesto, aunque poco debido a la falta de información sobre el tema, a referencias externas.

La importancia de buenos cimientos

Llega el nuevo año y con él propósitos nuevos. Bajar de peso, aprobar inglés o ir a más Meetups pueden ser algunos de ellos. Sin embargo, ¿ qué pasa con los propósitos profesionales ?. No me refiero a ganar más dinero o conseguir más clientes o tener más conocimiento específico de tal o cual cosa. Me estoy refiriendo a las bases, esto es, a los principios, a las habilidades y a los valores.

Ley de cookies: No necesitas aviso de cookies en tu página web

Curiosa las numerosas protestas por los avisos de cookie de las páginas webs en las redes sociales y que, sin embargo, la gente enmudezca ante sitios lentos, popups de subscripciones a redes sociales y otras aberraciones. Incluso cuando es algo que nos favorece, ya que, la Ley de Cookies está hecha para preservar nuestro derecho a la intimidad y sin embargo, las otras están sólo para fastidiarnos sin remedio.

Esto demuestra de hasta que nivel fastidia estos mensajes en una web a nuestros visitantes. Aquí te mostraré cómo usando el estándar de tracking DNT podrás cumplir la ley en tu sitio web y, además, sin molestar a tus visitantes.

Añadir un pestillo de seguridad a WordPress

Uno de los problemas de seguridad más comunes con WordPress es el acceso al panel de control. Dado que el acceso siempre está ubicado en el mismo lugar ( wp-admin ) es muy fácil crear un script que trate de averiguar las contraseñas por fuera bruta. De hecho, cada cierto tiempo hay auténticas oleadas de ataques a WordPress, que normalmente acaban en dos posibles situaciones: o consiguiendo tu clave o bloqueando el acceso al gestor de tu sitio web.

Una posible solución es un pestillo de seguridad.