Entre píxeles y bytes

Buscando comparativas de rendimiento entre los plugins WP Super Cache y W3 Total Cache, te encuentras un poco de todo, ya sabemos que las pruebas de rendimiento son muy relativas. Algunas son detalladas y ejecutadas en base a configuraciones muy concretas y otras un poco en modo allegro, pero en general en todas ellas el que sale más beneficiado es W3 Total Cache.

Pero de repente te encuentras con un comentario de Frederick Townes, el desarrollador de W3 Total cache donde precisa que no se puede comparar lo que no es comparable, ya que ambos plugins tienen enfoques muy diferentes, a la par de dejar claro que W3 total cache es más moderno.

Hundreds of people have tried to do a direct comparison of W3TC and WPSC and it’s not a productive endeavor, they are completely different technologies. The only performance advantages you find with WPSC will be circumstantial, for example (the only real similarity), both plugins work the same way to move the upper performance bound of delivering pages to be tied to apache instead of PHP which is much slower.

Furthermore, WPSC is a fork of an old approach to caching. Most of the recent changes are a direct result of user requests based on what W3TC has offered since it arrived.

Guia rapida tecnicas basicas responsive HTML/CSS
http://www.adamkaplan.me/grid/

Esta es una tendencia al alza, a pesar de que el desarrollo de aplicaciones web se imagina básicamente con cualquiera de los habituales frameworks MVC, WordPress esta haciéndose un hueco.

Las razones son obvias, si una app web implica:

  • Gestión de usuarios y sus roles
  • Gestión de contenidos de algún tipo
  • Gestionar imágenes y media en general (video, sonido)
  • Motor de plantillas
  • Una arquitectura de plugins que permita escalarla o personalizarla con elementos de terceros

Todo esto lo ofrece de base WordPress, y es que ya no debemos ver a WordPress como una mera herramienta de blogs, avanzada y camino a un CMS, sino que ha madurado lo suficiente para convertirse en un entorno sobre el que es posible, rápido y funcional desarrollar determinados tipos de aplicaciones web.

¿En su contra? Básicamente que no tiene una arquitectura MVC que de entrada ofrece mayor estructura y facilidad de mantenimiento. WordPress es event-driven con lo que la separación Modelo-Controlador-Vista se pierde. Esto en ocasiones no es visto con buenos ojos por desarrolladores MVC. Pero aun así es posible desarrollar en WordPress con suficiente modularidad para crear aplicaciones mantenibles, de calidad y aprovechando la potencia y recursos que WordPress ofrece de facto.

Es algo sobre lo que ya podemos, desde hace algún tiempo, empezar a encontrar suficiente material de referencia:

Eso tampoco implica que WordPress sea la panacea para todos los casos, y por supuesto hay opiniones contrarias a pensar en WordPress como un framework de desarrollo, pero está claro que está evolucionando rapido en esta línea y que es un actor más a tener en cuenta en el momento de abordar un desarrollo web.

 

Adminer, util para las situaciones en que no tenemos acceso a un PHPMyAdmin o via SSH, basta con subirlo al mismo sitio donde tenemos la web a la que necesitamos acceder a su BD. Simple y practico.

PHP  básico para extraer los URL RSS del HTML de una web generada con WordPress, o que tenga los metas type RSS concretos.

Si deseamos conocer la estructura de una base de datos SQLite tan solo tenemos que hacer un SELECT a la tabla sqlite_master.

Esta tabla es una tabla especial de SQLite que conserva la estructura de todo el fichero de la base de datos, por lo tanto nos informa de todas las tablas que contiene y sus respectivos campos.

Por ejemplo, para volcar la información:

SELECT * FROM sqlite_master

Y para ver la definición (en formato SQL) de la tablas, realizamos una consulta sobre el campo sql del tipo table con:

SELECT sql FROM sqlite_master WHERE type='table'

Más información en: http://www.sqlite.org/faq.html#q7

Por las caracteristicas propias de AIR y el modelo sandbox que incorpora, las rutas para escribir en el dispositivo del usuario (desktop/móvil) son muy concretas:

  • Directorio de la aplicación
  • Directorio de datos de la aplicación
  • Directorio del usuario
  • Directorio de documentos
  • Directorio del escritorio

No todas estan disponibles en todos los dispositivos que soportan AIR, pero son la opción multi-plataforma más alla de las que podemos indicar explicitamente con nativePath, que depende estrictamente del OS donde corre la aplicación.

Ejemplo:

laRuta = air.File.documentsDirectory;

Más información en File

Utilizando un enfoque sincronico:

Creamos un nuevo objeto de fichero

var streamFitxer = new air.FileStream();

Abrimos el fichero

streamFitxer.open(RutaFitxer, Mode);

Donde Mode es uno de los siguientes:

  • air.FileMode.READ: Abre solo para lectura
  • air.FileMode.WRITE: Abre para escribir, sino existe lo crea
  • air.FileMode.APPEND: Abre para añadir, sino existe lo crea.
  • air.FileMode.UPDATE: Abre para leer o escribir. Si no existe lo crea. Permite leer desde cualquier posición del fichero y escribe bytes tan solo encima de los bytes actuales, el resto del fichero lo mantiene sin canvios.

Escribir en el fichero

streamFitxer.writeUTFBytes( string );

Escribe los datos en UTF-8 pero sin añadir el prefijo BOM de 16 bytes en el inicio del fichero. Si necesitamos este prefijo entonces tendremos que utilizar writeUTF().

Tambien podemos usar writeMultiByte( dades, joc de caràcters )

Cerramos el fichero

streamFitxer.close();

Mas información en: http://help.adobe.com/en_US/air/html/dev/index.html

Via perlbuzz esta interesante selección de 10 trucos a tener en cuenta para escribir acciones/scripts Perl de una sola linea.

Ejemplo de uso de SQLite con Perl.