Free no es gratis

Hola,acabo de volver de un finde fuera donde he tenido que aclarar el concepto de freesource…
Cuando uno dice, esto es “free” no quiere decir necesariamente, gratis, y es que pienso que es necesario aclarar el concepto del freesource, su espíritu libre no es de provecho…

Cambiando de tema, estoy con el Scaffolding de zenphp, llamado zen_andamio, hasta ahora lee las bases de datos de una conexión, sus tablas, sus campos etc, y las devuelve así como puede detectar los modelos de una aplicación y colocar los enlaces para acceder a ellos.

Progreso: zen_andamio (scaffolding) & UML

Estoy actualizando el diseño de la jerarquía ,diagrama de clases,casos de uso, diagrama de entidad,vistas de componentes, vistas de despliegue y las vistas lógicas de zenphp porque me parece que Umbrella (y no es el tema americano ese del paragüas aguas aguas que tanto éxito tiene por España XD) lo hace estupendamente.

Dejo las capturas y el enlace para descargar el fichero XMI.

Casos de uso: Librerías: Diagrama de clases de zenphp
Diagrama de casos de uso tipo web Esquema de dependencias de librerías extra de zenphp

Todo free ,por supuesto 😉

La siguiente captura es de como está quedando el Scaffolding de zenphp, llamado zen_andamio. He adoptado la idea de Django de utilizar una lista de las últimas acciones con un iconillo al lado para mostrar lo que vamos haciendo…

La idea es: para llamar al scaffolding, añadimos la variable al modelo de datos “$andamio” y puede ser lanzado desde la ruta sin más que poner el nombre del modelo  después de index.php, por ejemplo ,para la captura se llama a index.php/noticias/andamio, las palabras que activan el scaffolding se pueden configurar en /zen.php en la constante ZF_PALABRAS_ANDAMIO, separadas por coma.

Espero que os guste 🙂

Primeras pruebas con el compactador de zenphp

Las primeras pruebas del compactador de HTML,JavaScript y CSS integrado en zenphp ,para su uso en la clase zen_plantilla está siendo todo un éxito, aunque el algoritmo es sencillo,ya que es usado para compactar/comprimir los espacios en blanco y demás caracteres sobrantes, puede reemplazarse dicha llamada por otra función como la de la librería: minify.

Un programa de ejemplo es tan sencillo como lo siguiente:

 

<?php
require_once 'zenphp/clases/clase_zen_compactador.php';
$html = file_get_contents('http://www.elpais.es/');
$tamano_antes = mb_strlen($html, '8bit');
$compactador = new zen_compactador(array(
 'mostrar_buffer' => false
));
$html = $compactador->destructor($html);
$tamano_despues = mb_strlen($html, '8bit');
echo 'Con los espacios en blanco eliminados, el tamaño del fichero HTML se reduce de '.
    round($tamano_antes/1024, 2).
    'KB a '.
    round($tamano_despues/1024, 2).
    'KB,ahorramos '.round((1-($tamano_despues/$tamano_antes))*100, 2).
    '%<br />-----------------<br /><br />'.
    $html; 
?>

La salida obtenida es:
——————
Con los espacios en blanco eliminados, el tamaño del fichero HTML se reduce de 133.52KB a 111.55KB,ahorramos 16.46%
—————–

podeis comprobarlo 🙂
Si no teneis acceso afuera desde el servidor por problemas de firewall, podeis guardar la web a mano o con PERL en un fichero y luego abrirla con

$html = file_get_contents('p1.html');

No necesitamos nada más que obtener la clase desde el repositorio para hacer la prueba XD

Decisiones importantes

Dicen que nuestras decisiones marcan nuestro destino, por eso debemos ser nosotros mismos quienes decidamos en nuestra vida…

Veamos, las decisiones importantes del proyecto actualmente…

  • Usar gettext para los idiomas en la parte del núcleo de zenphp y el editor Poedit para crear los ficheros de idiomas (.po). ¡Es más eficiente que el uso de cadenas y constantes!…
  • Usar PHP/GTK para el generador de aplicaciones en lugar de generar por línea de comandos (cambio de chip)
  • Basar el generador de aplicaciones en modelos XML, así se puede actualizar el generador muy fácilmente, pudiéndose construir incluso un generador de generadores.
  • Diseñar “cartuchos” de aplicaciones como “Portal.XML” que generan con las opciones pasadas una aplicación completa de un portal web

La última decisión la he tomado porque ayer encontré que existen ya mecanismos que pasan de un modelo XMI construido en un editor UML a un conjunto de ficheros de clases de PHP, por lo tanto sería absurdo volver a repetir lo que otros han construido,asi que por lo tanto ,me centro en construir una aplicación PHP/GTK que utilice mi compilador y generador de aplicaciones basado en el paradigma de la programación orientada a aspectos, que lo tengo un poco olvidado 🙂

Con ello se cumple el objetivo del proyecto de ser un framework de aplicaciones web y ahora estoy con la parte de generador de aplicaciones en PHP/GTK.
Ahí va una captura del editor Poedit en primer plano y Kate al fondo (gracias al uso de un manualillo) 🙂

Buena práctica!

Zen es sólo la etiqueta de algo que está presente…

Si caes 7 veces, levántate 8 En el zen las cosas son simples,
se trata de llevar los hábitos
de concentración, paz interior,
de silencio,
al dia a dia…
Si caes 7 veces, levántate 8 De Blogging

 


Usar el nombre zen para el bien de un proyecto significa esto…
Todo lo que crees con amor y conciencia, eso es lo que cuenta.
Zen es nada más que la etiqueta para la verdadera cuestión que subyace de nuestras actitudes.

Buena lectura, buena práctica.

Gana una camiseta que detecta el wifi votando

Atención: No es que la camiseta necesite votar para detectar WiFi,es que tú necesitas votar para ganarla!

¡Vota aquí! para entrar en el sorteo en el que puedes ganar una camiseta que detecta el Wi Fi.

Vídeos:

Imágenes a elegir: Continue reading

Primer video-tutorial de zenphp :: Hola mundo!

En este primer tutorial se empieza buscando zenphp en google y descargando desde la consola el directorio de zenphp desde el servidor SVN de la forja, sólo el directorio trunk.
Después se muestra una aplicación super sencilla tipo “Hola mundo” y se va complicando, usando un tema por defecto, la función index() de la clase zen_html que contiene una aplicación toma la plantilla inicial de media/plantillas/es/base_web.html donde “es” es el idioma por defecto, valga la redundancia.
Si la plantilla no existe,entonces se toma del contenido de zenphp por defecto, se muestra cómo cambiar los parámetros de zen.php fácilmente.
Tiene mucho más, pero para ser el primero me ha parecido bastante.
En youtube no he podido meterlo porque no se ve apenas las letras y la Forja se queda en blanco cuando intento colgar el fichero ,creo que porque pesa 12MB…

Ahí va el enlace del vídeo en formato ogg[7MB]

Dirección de vídeos en la Forja: https://forja.rediris.es/docman/?group_id=252

Actualización: como no se puede reproducir con VLC el vídeo en (R)Windows, lo he codificado con ffmpeg2theora, ya que está grabado con recordMyDesktop y el formato por defecto es ogv, ahora es .ogg 😉

Documentos sobre eficiencia

Las optimizaciones me apasionan, es por eso que he creado un nuevo documento de eficiencia con zenphp:
https://forja.rediris.es/docman/view.php/252/470/optimizacion_web.pdf
Explica las técnicas que usa el framework tanto automática como manualmente y cómo podemos mejorar la eficiencia para obtener un sobresaliente. XD

P.D.: Bueno y no se si os habréis dado cuenta que en la misma columna del blog del selector de temas he puesto un RSS de poemas zen 🙂

Saludos