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…

Compártelo

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”…

Compártelo

Sobre compatibilidades entre versiones de PHP y zenphp

Hace un tiempo que cambié la versión de mi host dedicado de PHP4.2 a 5.2.6 y zenphp no ha tenido ningún problema para funcionar. Sólo un pequeño detalle a tener en cuenta con el fichero .htaccess…

Cuando escribimos redirecciones como por ejemplo:

AddDefaultCharset UTF-8
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^noticias index.php/noticias
RewriteRule ^noticia\/(.*) index.php/noticias/leer/$1

en la que queremos que las www.midominio.com/noticias se redirija a www.midominio.com/index.php/noticias/ para encontrar el controlador por defecto, en PHP5 ahora se usa en lugar de <$_SERVER[‘REQUEST_URI’]> el parámetro <$_SERVER[‘PHP_SELF’]> dentro de

zenphp/clases/clase_zen_enrutador.php

de forma que estas redirecciones más complejas sean bien encauzadas sin tener que reescribir el módulo del enrutador que proporciona el framework…recordar que se puede escribir un enrutador y asociarlo a cualquiera de la s aplicaciones que estemos usando en el sistema y lanzarlo por medio de una función tipo “delegar()”.

Seguimos informando!

Compártelo

Detalles del Modelo Visualizador VS MVC

Acabo de estar mirando el nuevo modelo de datos de Joomla 1.5 junto con su controladores y vistas…es interesante sin embargo complicado y necesitas tener el manual cerca (a “mano” :D) porque no sabes nada de nada al estar dentro de una vista…si estás en una vista tipo “blog” de una categoría, cómo puedes conseguir la sección a la que pertenece? En algunos foros se discute el tema, acabando por hacer un nuevo y completo módulo o extensión también llamado para cubrir las necesidades…sólo por necesitar un identificador? …como veis parece absurdo tener una división que no te da libertad y crea más confusión…

En zenphp está el modelo de datos donde están todos los datos que está comunicado con punteros con el resto de modelos de la aplicación y por otro lado está, asociado al modelo ,el visualizador, nunca perdemos nada de vista y todo es parametrizable y accesible fácilmente, casi no tenemos ni que usar el manual o la documentación…veis la pauta? notais la diferencia? ahi radica la potencia de hacer algo simple y que funciona…

Saludos!

Compártelo

Curiosidades del motor de rendering Gecko en Firefox 2 para GNU/Linux

Mostrando el infinito a través de iframes gracias a Gecko:

Mostrando el infinito a través de iframes

Firefox nunca deja de sorprenderme, a veces ocurren cosas extrañas como esta, en zenphp escribo una línea para depurar una consulta SQL y al mostrar el HTML, Firefox inventa una página nueva :D,dentro de un iframe y otra vez y así sucesivamente hasta el infinito, es un bug visual pero no consume recursos…impresionante…

Ahora que ha salido la versión 3 de este navegador imprescindible para algun@s 🙂 espero que los chicos de firebug tengan listo su módulo cuanto antes para mudarme alli…

Compártelo

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!

Compártelo

Aprende a programar aplicaciones web

Como dije en mi presentación de la Final del Concurso, nunca intentaré llevarme a mi terreno a nadie para ganar la batalla de quien usa más qué framework & lenguaje…
Me gusta bastante lo que ha escrito y ha dejado muy claro Daniel López en su artículo “Ruby on Rails vs PHP: una falsa comparación”.

Para empezar con un framework, realmente debemos sentirnos cómodos con el lenguaje, después con la forma de trabajar (filosofía?) y por último darnos cuenta de la sencillez de las tareas de mantenimiento de una aplicación.

A mi no me acaba de convencer Rails, por eso sigo mejorando zenphp.

Compártelo

Automatizando procesos de imágenes

Normalmente, cuando subimos una imagen lo primero que necesitamos es redimensionarla, para ello he añadido una librería, tengo el soporte de BMP hecho pero no lo considero relevante, al menos no tanto como el de JPEG,PNG y GIF, fundamentales en la web que si vienen con la clase…:)

Un ejemplo se puede ver en la misma clase.

Más sencillo no se puede oiga! 😉

Compártelo

¿Qué tipo de proyecto haces?

El otro día leí que existen dos tipos de hombres, los constructores y los jardineros…los primeros se sumergen en el mundo de la construcción de su proyecto y cuando lo ven finalizado se alegran mucho de haberlo terminado, aunque esta meta no los hace libres ni mucho menos sino que se dan cuenta de que están enjaulados entre las paredes de la propia construcción, sin saber qué más hacer o donde ir y ya que la alegría no suele durar mucho, se cuestionan sobre el sentido de la vida…

Por otro lado están los jardineros, que son los que plantan semillas a lo largo del profundo universo, pasan por tempestades, son engañados por los elementos, pierden cosechas y son atacados por toda clase de males, pero, con el tiempo ,la perseverancia y la paciencia que han ido aplicando en todo momento han hecho que la cosecha de muchos frutos, muchos proyectos tienen lugar y pueden compartir todo lo que han aprendido con toda clase de personas.

¿Cuál es la decisión que formará tu futuro?

Compártelo