10/22/2007

Toda historia nos deja una enseñanza

Blogeando por ahí (en otras palabras, gastando mi tiempo de ocio) encontré una historia bien simpática, que tiempo atrás había escuchado, pero mejor vamos al relato...
En cierta ocasión una joven y pequeña almeja producto de un fuerte oleaje, se golpeo sobre una roca destruyendo por completo su protección, afortunadamente ella sobrevivió, pero de no encontrar pronto albergue moriría producto de las bajas temperaturas del mar.

Así llego muy agotada donde un gran choro zapato y le dijo... "don choro, por favor ayuda me, deje me entrar en su concha para poder salvarme!!", el choro zapato la miró y le dijo "Sal de acá insignificante, que te crees tu que me vienes a molestar!! "

La pequeña almeja se arrastro hasta una gran estrella de mar y le dijo... "Estrellita, por favor cubre me y proteje me, debajo de ti me podre salvar, la estrella ni siquiera contesto y simplemente la ignoro, apunto de morir la almejita llego hasta un picoroco y le pidió por favor que la deja entrar en él, a lo que el picoroco contesto, "como se te ocurre inmunda que voy a permitir que entres aca , sal de mi vista!!!"

Apunto de morir la almejita quedó tendida en una roca, de pronto paso su madre almeja, la pequeña le grito "mamá, mamá, he tenido un accidente deja me entrar en tu concha", la madre la miro y le dijo "no hay problema puedes entrar yo te protegeré".

Esta historia nos deja una enseñanza... "Cuando estés en apuros, y todo el mundo te de la espalda... andate a la CONCHADETUMADRE!!!"

10/17/2007

gEdit, guardar archivos por FTP

Desde hace tiempo (2 años mas menos) vengo utilizando "Ubuntu" como Sistema Operativo, con actualizaciones al día (7.10 Gutsy Gibbon), una bonita interfaz (Gnome) y una que otra chuchería en el escritorio (efectos 3D).

Utilizo Zend Studio para desarrollar sitios web, tiene un excelente soporte para crear, modificar y eliminar archivos y directorios que se encuentran en algún servidor "FTP" o local, pero algunas veces, por "tiempo", edito los archivos con el famoso Midnigth Commander mas conocido por sus siglas como "mc". No es por desmerecer al mc-editor pero de que es feo es feo, además no tiene algunas características de edición que tienen los editores "mas gráficos".

Bueno, como trabajo con Gnome, hay un editor (instalado por defecto) bien pequeño pero poderoso!!!, llamado "gEdit". Este editor tiene de todo, resalta la sintaxis, corrige los errores ortográficos, puede abrir múltiples archivos (maneja el concepto de pestañas), entre otras cosas.

Pero tenía un problema, no podía modificar los archivos que fueran abiertos por FTP, los abría, podía editar su contenido, pero al momento de guardar... paf!!! no me dejaba guardar los cambios y como premio de consuelo, me daba la opción de guardar el archivo en el disco duro local, el problema era de que el gEdit abría los archivos como "solo lectura".

Navegando por ahí (san google), encontré la solución a mis problemas, seguí las instrucciones y ahora tengo soporte para guardar los archivos por FTP.

Los pasos que seguí
  • alt+f2 (Ejecutar una aplicación)
  • ingreso "gconf-editor" y ejecuto
  • busco la siguiente clave (navegando por los directorios), /apps/gedit-2/preferences/editor/save/writable_vfs_schemes
  • y por último, modifico la clave agregando a la lista "ftp"

10/08/2007

Modelo MVC, Modelo - Vista - Controlador


Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el modelo es el Sistema de Gestión de Base de Datos y el controlador representa la Lógica de la aplicación.


Mi experiencia con este modelo empezó hace 3 años mas menos, en un proyecto donde se requería un cambio estructural coordinado y de veloz desarrollo. Este modelo en si es lento (construcción) ya que solo para desplegar el famoso "Hola Mundo" se requiere de un controlador y una vista, pero lo importante es que al utilizar este modelo uno puede desarrollar aplicaciones robustas y escalables.

Existe una infinidad de frameworks MVC para PHP, los mas ocupados por la comunidad son:
Particularmente no ocupe ninguno de estos frameworks, ya que en ese entonces buscábamos uno que ya estuviera testeado y no en fase beta. Se escogió para el desarrollo del proyecto (y con el cual tengo mas experiencia) el framework Phrame, que lamentablemente no tendrá mas mantenciones, ya que el "Team PHP" dejará de dar soporte para PHP4.

Pero en sí, independiente del framework que uno elija, el modelo MVC es el mismo, puede que cambie la forma de crear las instancias de cada capa, o la forma de incorporar plantillas (templates) pero siempre mantendrá el mismo esquema de Modelo - Vista - Controlador.

Veamos con detenimiento la funcionalidad de cada capa

La imagen muestra las 3 capas fundamentales del modelo MVC. Primero se detona un controlador el cual puede o no invocar a un modelo o a una vista o viceversa.

Un ejemplo sería; Un usuario envía datos por un formulario, esta acción detona al controlador "ingresar_datos" posteriormente el controlador deriva estos datos (enviados por el formulario) al modelo "guardar_datos", luego el controlador llama a una vista la cual se encarga de mostrar un mensaje al usuario advirtiendo que los datos enviados fueron registrados.

Esta combinación puede variar en otros casos, un controlador puede llamar a un modelo y este a su vez a una vista o un controlador llama a una vista y este al modelo, personalmente sugiero que el controlador llame aun modelo, este modelo retorne algo, y que después el mismo controlador llame a una vista mostrando lo que devolvió el modelo.
  • Controlador: Este responde a eventos, usualmente acciones del usuario (agregar, modificar, eliminar, etc.) e invoca cambios en el modelo y probablemente en la vista.
  • Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos, en otras palabras es el modelo de negocios del sistema. También es en esta capa donde:
    • La aplicación se conecta con la(s) base(s) de datos
    • Ejecuta operaciones lógicas
    • transacciones entre archivos
  • Vista: Esta capa presenta el modelo (datos) en un formato adecuado para interactuar, mas bien conocida como la capa de presentación o la interfaz del usuario.