Noticias: nuevos sitios web y blogs

news_icon

Hacía tiempo que no escribía por aquí, a parte de mi web portfolio de programador php freelance, ahora también hago videojuegos, bueno ,en realidad desde hace unos 3 años de forma profesional, monté XIXGAMES y además doy servicios de programación de videojuegos en programadorvideojuegos.com (otro caso práctico del framework zenphp).

El último proyecto que hice con zenphp fué una base de datos para pacientes ,una aplicación web 2.0. Antes de esa, construí el portal de videojuegos flash Arkatia.com

Como véis , zenphp sigue funcionando, sigo usándolo, es algo que me llevó unos años y he podido comprobar que con el paso del tiempo, es fácilmente adaptable por estar escrito de forma general, se puede adaptar a PHP6 de forma sencilla, quizás escriba un artículo acerca de ello 🙂

Seguiré usándolo por ahora, es de las mejores herramientas que he creado hasta ahora. Quizás debería mejorarlo con más código automático, ya veremos…

 

Gracias ati por Novática

¿Sabéis?

Ayer llegué a casa,… abrí el correo (el físico xD) …y me encuentro un sobre grueso…como remitente: ati, entro en casa, abro el sobre…

Es un año entero de ati – Novática (2009) ¡¡gracias!! 🙂

Creo que me lo regalaron por mi mención en el proyecto del año pasado, lo iba a comentar en mi blog de programación de webs, pero aquí tiene más sentido jeje como dice mi amigo Antonio,

antonio:
se ve que te tratan bien

jajajaja 🙂

XCSS : reinventar la rueda del CSS dinámico

En Febrero del 2008 diseñé una clase llamada XCS que utilizaba PHP para generar CSS dinámicamente, con la posibilidad de utilizar variables dentro del mismo fichero de reglas de estilo para hacer webs con contenido modificable fácilmente.

Hace poco he encontrado el “primer framework CSS orientado a objetos” como lo nombra a sí mismo Anton Pawlik su autor, http://xcss.antpaw.org/ y que hace precisamente eso,…sin embargo ha tenido mucho éxito 🙂

A pesar de su sencillez, (la clase principal no es muy complicada) no se diferencia demasiado de la que escribí basándome en otra al mismo tiempo…aunque no la he llegado a usar como programador php

Comparativa ATK Framework – zenphp framework

atk_vs_zenphp

Acabo de leer un artículo de Ivo Jansch, un profesional de Oracle diciendo que empresas de todos los tamaños tienen la necesidad de portar las aplicaciones de escritorio que usan bases de datos Oracle a aplicaciones web ,según nos dice, por la gran facilidad, usan un framework: ATK Framework.

El tesoro de este framework es la gran facilidad para crear administradores con sólo varias líneas de código, y es algo que me ha gustado bastante, podéis comprobarlo en su web.

Es justo la parte débil de zenphp.

Sin embargo, echando un vistazo al código vemos que realmente sí que son más líneas, porque se van definiendo los menús y sus accesos, se usan nodos de tipo atkNode, y como suele pasar con los frameworks gigantescos, tenemos que empezar a conocer la extensa terminología única de ATK:

—-
/**
* This node is new. It is used to edit profiles. A profile is a set of user
* privileges. In this scenario, each user has one profile (many-to-one
* relation).
*/
useattrib(“atkdummyattribute”);

/**
* The profileattribute can be used to edit the privileges.
*/
useattrib(“atkprofileattribute”);
—-

etc.

Son todas estas distracciones las que he intentado eliminar, por eso zenphp no tiene instalación, al copiarse ya se puede utilizar.

Y hacedme caso, no necesitáis escribir un framework completo para escribir una buena herramienta de administración, sobre todo tan reducida como la de ATK. Si queréis ver algunos ejemplos, mirad en http://programadorphp.org

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

Prioridad lineal de los procesos de una aplicación web

Cuando estamos manteniendo una aplicación web suele ocurrir que el usuario final nos pide cambios que rompen el esquema inicial de la misma, es decir, se quieren saltar todas las reglas del diseño en el que nos habíamos “partido los cuernos” de forma que fuera todo fácilmente mantenible y estable asi como escalable.

En estos momentos tenemos dos opciones: cabrearnos mucho y quejarnos con el usuario para que lo haga a “nuestra manera o carretera”, o bien, mucho mejor, que la prioridad forme parte de todo este asunto.

Es ahora cuando decidimos que la segunda opción favorece nuestro trabajo de forma que podemos ir todavía más un paso adelante, es decir, si después de realizar todas las tareas necesarias para generar una página de una aplicación el contenido generado requiere un cambio de última hora, podemos utilizar una prioridad para construir/destruir dicho contenido. Un ejemplo es utilizar CSS, la prioridad se establece con la opción “!important” ,entonces, si en el HTML de nuestro primer diseño de la web tenemos un listado de hoteles y necesitamos que en uno de los hoteles del listado se muestre una división de forma distinta, simplemente vamos a permitir que en el editor HTML WYSYWYG se puedan introducir etiquetas de estilo: <style> [ extended_valid_elements: “style” en tinymce ]y ahora vamos a reescribir la regla donde se necesita que se muestre de otra forma el contenido, en lugar de cambiar toda la lógica de la programación, entonces ,usando “!important” al lado de las reglas, por ejemplo para el ancho :

<style> #midivision { width: 350px !important;} </style>

de esa forma le damos prioridad a esta regla, lo mismo se puede hacer con javascript y el argumento “defer” de la etiqueta <script>, y lo mismo se puede utilizar en PHP si especificamos el orden de carga de las clases, etc etc.

Nuevo proyecto basado en zenphp para el CUSL3

Este año vuelvo a participar en el Concurso Universitario de Software Libre en su tercera Edición con un proyecto para facilitar una plataforma con la que ayudar a la gente que se quiere preparar sus exámenes, disponer fácilmente así de apuntes, bibliografía, foros de asignaturas, pdf’s con enunciados de exámenes, redes que comunican palabras que comparten conocimiento entre las personas y etc… qué os voy a contar, mejor lo investigamos y luego desarrollamos, ¿no os parece? 🙂

El blog: http://pie.zenphp.es

Más por venir 🙂 sigan atentos…

Encontrar el equilibrio en las cosas pequeñas

Siendo detallista y equilibrado encontraremos que nuestro trabajo se ha convertido en algo sumamente sencillo de mantener.

El caso más fundamental de lo que estoy hablando es cuando un cliente nos pide un nuevo cambio que requiere modificar, en este caso añadir un campo nuevo de imagen de miniatura a una tabla de noticias y,bien, ahora tenemos que añadirlo en la interfaz de administración además de en la BD y en el cliente que habíamos escrito…

Sabemos que podemos implementar la lógica de administración fácilmente haciendo copio y pego de la parte del formulario de edición de la noticia cambiando el nombre por el del campo de la imagen ,guardado de ficheros, procesamiento de imágenes “thumbs” , etc.

Lo que debemos recordar es que podemos encontrar el equilibrio en el funcionamiento por medio de las sentencias IF de SQL, de modo que si ya teníamos un campo imagen y ahora lo que necesitamos es mostrar una miniatura pero no queremos cambiar el resto, simplemente modificamos la línea en la que se nombran los campos para realizar las operaciones de la siguiente forma:

si antes se hacia un “Select imagen from noticias” ,ahora sólo tenemos que cambiar “imagen” por

IF(miniatura=”,imagen,miniatura) as imagen

de forma que el resto de la lógica del programa se mantiene intacta, sólo hemos hecho un cambio más las operaciones básicas para administrar los datos con el campo 😉

Ahora sólo queda relajarse sabiendo que todo funciona sin quebrarnos demasiado la cabeza jeje

Diseño de aplicaciones web en Agencia Q4

Diseño web en Granada de la mano de Agencia Q4

Después de tanto tiempo con este proyecto tengo que mencionar a quien me ha ayudado tanto ,dándome espacio y ancho de banda para publicar mis proyectos, también es el lugar donde tengo la oportunidad de desarrollar todas esas maravillosas y glamourosas aplicaciones web:

Agencia Q4

, una agencia de Diseño Web,marketing, publicidad,etc. que se dedica a esto desde hace ya casi 5 años, empezando desde 0 , para ello genera y usa software libre…

Gracias a la libertad en el proceso de creación se pueden crear verdaderas obras de arte. 🙂

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…