Aplicaciones web escalables con potencialidades sin límites

Escabilidad: Sistema de aplicaciones Atómico

Cuando empecé a programar en PHP allá por el año 2005 ya pensaba que no quería mezclar código HTML con PHP, es por esto mismo que los creadores del lenguaje PHP creyeron que era mejor si se utilizaban objetos, capas, separación, jerarquías, etc. , es decir, su deseo era crear algo más parecido a C y C++, igual que yo con PHP y este framework. En definitiva, estos lenguajes comparten características, en concreto dos muy importantes: escabilidad y potencialidad. Continue reading

Complementos de software libre para optimización de webs

Page Speed for the people!

Hace tiempo escribí un artículo sobre complementos de optimización, pero en ese momento no existía Page Speed,  si queréis saber lo que es podéis (si sabéis inglés) escuchar al autor en este vídeo:

Para instarlo ir a la web de Page Speed, previamente debéis haber instalado en vuestro Firefox el componente Firebug.

Es una herramienta genial para conocer los consejos de optimización más técnicos, como por ejemplo, usar diferentes dominios y subdominios para cada parte de la web, por ejemplo, podemos crear un directorio media y hacer un subdominio para alojar allí el contenido, o mejor, uno para cada tipo de multimedia: video.dominio.es, img.dominio.com, etc. , además explica brevemente por qué vuestra página carga tan lenta, y qué podéis hacer para solucionarlo. Si queréis ver algún ejemplo podéis pasaros por la web de un programador php. 🙂

Recomendado! 5 stars jeje

Como hacer la semántica web fácil con zenphp

Semántica web

Si tenemos nuestra aplicación web montada, lo único que tenemosque hacer es configurar los activadores (rutas de .htaccess de Apache) de las acciones (funciones PHP) de los modelos (clases PHP que extienden de zen_modelo_datos) de datos o las funciones de los visualizadores (clases PHP) de forma que podemos incluso crear nuestra propia gramática: loquesea.es/hablar/con/Manolo –> nos contactaría con Manolo 😉

Ejemplo

Como siempre, veamos un ejemplo para comprender mejor la idea:

Tenemos una aplicación (zen_aplicacion) instanciada en index.php con la variable $app , ahora ,dentro de esta hay un visualizador por defecto llamado html_aplicacion en $app->html, bien, pues ahora sólo tenemos que decirle a Apache que nos redirija las entradas de direcciones con un .html al final, a las funciones de $app->html , como por ejemplo: Una típica función para ver un producto:

* En tu .htaccess (después de poner “Options +FollowSymLinks” y “RewriteEngine on” ):

RewriteRule ^productos\/(.*)\.html index.php/ver_producto/$1/

Con esta regla se llama a index.php donde se instancia $app y se llama a $app->enrutador->delegar() que analiza el resto de la dirección, es decir, productos/fichero.html…de forma que llama a la función productos ,si no existe llama al modelo con nombre productos, en nuestro caso es una función del visualizador de la aplicación (más sencillo),

Código

* Esto es lo único que tiene la función

echo $this->plantilla->devolver_contenido(“productos/”.zen_sanar($datos[1]).”.html”);

si queréis ser más profesionales, crear una plantilla HTML y meterle los datos usando las #etiquetas# ya explicadas en otros posts, asi como hacer comprobaciones de existencia del fichero .HTML y poner una plantilla tipo producto_inexistente.html si no se encuentra… (típico)

$p = new zen_plantilla();
$this->c =& $this->padre->padre->contenido; //array de contenido de la web
if ($p->cargar(“productos/”.zen_sanar($datos[1]).”.html”))
$this->c[‘contenido’] = $p->devolver_contenido(“productos/”.zen_sanar($datos[1]).”.html”);
else
$this->c[‘contenido’] = $p->devolver_contenido(“productos/no_encontrado.html”);
parent::index(); //Muestra la plantilla base_web.html y reemplaza etiquetas, etc.

Y así tendréis algo como lo siguiente:

http://www.empresayjuventud.com/productos/frescos/sandias.html

Seguramente ,se puede hacer mucho más fácil, pero ,también seguramente habrá alguien por ahi que lo escriba, saludos!
El conjunto de administración está siendo terminado, espero poder publicarlo pronto…

Sistemas educativos usando aplicaciones web

Cuando estás creando aplicaciones web sueles pensar…¿hay algo más glamuroso que eso?…
es como cuando estás concentrado en la meditación, ¿hay algo más real que estar profundamente centrado en tu propio ser? 🙂
¿Cuándo fue la última vez que escuchaste a alguien que te hablara de haber visto o estar viendo un producto que no fuera a través de la web? (sin contar el iPod ni la TV) , esto es porque todos los proyectos más innovadores suelen ser vistos online..nada que ver con los productos desarrollados para ser ejecutados en un PC de escritorio que están bastante más lejos de tener la simplicidad de la web…de ahi su rápida proliferación…
Entre ambas opciones se encuentran los productos que combinan todo lo que forma la informática: gadgets como un equipo de música formado por unos altavoces y un hardware que se conecta a internet para descargar la lista de bandas sonoras, haciendo disponibles miles de ellas de forma que podemos acceder a la radio de casi cualquier parte del mundo como antes manejábamos la manibela de nuestra radio FM (tipo last.fm) de casa o del coche.
Las aplicaciones web han mejorado tanto que se ve reflejado en la simplicidad, hasta el ladrido del perro en un barrio puede ser convertido en algo sorprendente si se trata bien. XD
Es por esto que el e-learning 2.0 o como la tecnología Web está dando forma a la educación.
Este proyecto tiene una gran parte de educativo ya que se enseña un lenguaje y como solucionar problemas que todo programador web tiene.
Hemos de tener en cuenta el gran impacto de la web sobre la educación, la promesa del e-learning ha de ser la de emplear entornos virtuales mezclados con reales, de forma que ambas partes se interconecten incitando al alumnado a “blogear” para recibir así críticas que habrá de responder y que forma parte de su aprendizaje.
zenphp proporciona la magia necesaria para crear enormes entornos cooperativos a modo de redes sociales interconectadas que permiten comunicar a gente que tiene una gran pasión por la física con profesores de perros, por ejemplo.
El éxito o el fracaso de estos proyectos depende de la evolución del e-learning y del grado de inmersión de cada “profesor”…

Sistemas de etiquetas cíclicos para la web: buena idea, difícil implementación

La idea es crear una navegación única para cada usuario con la que vamos “barriendo” la web, usando los tags como cepillo: arrastra el polvo del contenido y nos quedamos con lo que interesa,gracias a un sistema cíclico de etiquetas clasificadoras.

Un sistema de etiquetas cíclico se basa en un sistema de etiquetas simple donde se dispone de una lista de n reglas de etiquetas (tags, cada una de una forma especial) que se aplican en un sistema de orden secuencial y después empiezan de nuevo por la primera regla.
En un sistema de este tipo, cada conjunto de reglas de etiquetas tiene una estructura especial donde es asociado un patrón a un usuario sólo si el primer elemento no es requerido, i.e., es independente del conjunto, entonces es borrado.

El lado oscuro del sistema

Sin embargo no todo es un camino de rosas, como suele pasar en los sistemas, se producen muchos problemas por el mal diseño del software y una pésima implementación puede hacer que un servidor web incluso se colapse…

Por ejemplo technorati usa un sistema de tags con 467 mil tags diferentes,cuando un típico diccionario puede tener alrededor de 75 mil entradas…la diferencia es impresionante, teniendo en cuenta que no todos los usuarios están utilizando realmente tags para clasificar sus artículos.

La parte oscura del sistema viene dado por los “memes”: si uso una cita o etiequeta específica en un artículo de mi blog o web, entonces, se conectará con otros artículos incluso de otros sitios, se crean vínculos…

Pero…sorpresa sorpresa!!, esto no funciona tan bien como se espera porque acabas creando subcomunidades que se estandarizan, pero que están navegando en contra de la dirección de otras subcomunidades.

Soluciones: usuarios y desarrolladores

En esta situación, ¿cuál de los dos grupos van a cambiar sus etiquetas retroactivamente?, o ¿es la persona que está navegando a través del sistema de etiquetas a partir de una serie de artículos la que debería saber acerca de esto y salirse del anillo a voluntad?

Con casi medio millón de etiquetas en una comunidad a la que le encanta progresar, quizás deberíamos replantearnos estas ideas y rediseñar nuestras aplicaciones…

Y ,pronto…¡la implementación!

Optimización

En un framework como CakePHP es importante conocer bien los mecanismos de automatización de lenguajes, ésto es más fácil,si,como dicen éste blog, tenemos una buena documentación, sino,el proceso acaba por convertirse en un infierno, al igual que los proyectos muy grandes…

Para comprobar que no está pasando lo que no queremos, y que todo va como se espera ya comenté en pasads posts el uso de profilers, pero claro,además necesitamos saber que las cosas están funcionando en el exterior, y para ello disponemos de varias herramientas:

Sólo quiero añadir un documento que escribí la semana pasada y se encuentra alojado aquí.
Leer más en » Técnicas de optimización de webs
Buen código digo buenas tardes (domingo de resaca? XD)

Temas por defecto

Aprovechando que he terminado una práctica de esas gordas para la Universidad he montado un sistema de aplicaciones cliente / administrador utilizando las plantillas XHTML+CSS de licencia para copiar 🙂 con ésto siento que he progresado! y mucho, 😀 y realmente estoy bastante contento con el diseño, la plantilla sirve para hacer las llamadas a las vistas y controladores por defecto de todo el sistema de clases de zenphp.

Aquí, una captura de la plantilla en funcionamiento:

Captura de la aplicación por defecto de zenphp

 

Estoy terminando con la plantilla de administración, la factoría de generación de código depende de la clase zen_andamio (el scaffolding de zenphp) y la administración depende de zen_AJAX. Tras escribir esta mañana la clase zen_JSON está bastante avanzado…

Con esto tengo una buena parte hecha de lo que veía imposible ,sin embargo ha sido más fácil de lo que en un principio parecía y ya incluso veo el final del túnel.