domingo, 30 de noviembre de 2008

Acerca de la arquitectura MVC


El Modelo Vista Controlador (MVC) 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 la Lógica de negocio; y el controlador es el responsable de recibir los eventos de entrada desde la vista.

pero veamoslo mas a detalle:

  • 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; por ejemplo, no permitiendo comprar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o importes en un carrito de la compra.
  • Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
  • Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.

Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos. En MVC corresponde al modelo.

Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace)

2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.

3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión.

4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.

5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

Saludos...

Instalar Adobe Reader 8.1.3 en Ubuntu 8.10


En linux existen excelentes visores de documentos PDF, pero si eres de los que quieres disfrutar de la lectura de ficheros PDF, utilizando este clasico programa, ahora es muy sencillo, ya que existe en extencion .DEB:

descargar Adobe con extension .DEB


Encontraras el programa en el menu:

Aplicaciones > Oficina.

Si no usas Ubuntu o Debian, puedes probar a descargar una version para tu distribucion en :

Ver lista de descargas Adobe reader para otras distribuciones
Saludos.

Instalando Oracle 10g Enterprise en Ubuntu 8.10



La versión Express de Oracle 10g si que viene con soporte directo para Ubuntu, pero si por alguna mágica razón necesitas instalar la Enterprise, que solo viene con soporte oficial para Red Hat, SUSE y Oracle Linux.

Vamos a instalar la versión 10.2.0.1.0, así que la puedes ir bajando y desempacando que pesa casi 700MB.

El instalador espera que los binarios de basename y awk esten en /bin y no en /usr/bin, asi que crearemos unos soft links.

sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/awk /bin/awk

SUSE y Red Hat utilizan el grupo nobody para el usuario nobody, pero los sistemas basados en Debian utilizan el grupo nogroup. Así que creamos el nuevo grupo.

sudo addgroup nobody

Ahora podemos correr el instalador gráfico, pero con un parámetro indicándole que ignore los pre-requisitos, sino detectara que estas utilizando una distribución no soportada oficialmente y cancelara la instalación. Si evitas instalar la base de datos desde este punto y solo instalar las herramientas la instalación durara mucho menos, pero si el tiempo no es problema para ti, créala de una vez y así te ahorras crear el listener y la base de datos manualmente.

./runInstaller -ignoresysprereqs

Al finalizar la instalación, el instalador te pedirá instalar un archivo de bash como root, ejecútalo con sudo tal cual te lo muestra y no tendrás problemas.

Probablemente tengas problemas con librerías faltantes, entonces es muy recomendable incluir las librerías que trae oracle y así te evitas estar compilandolas. Ademas de ejecutarla una vez puedes meterla a tu archivo .bashrc y que se cargue automáticamente cuando inicies sesión.

export LD_LIBRARY_PATH=/path/de/tu/instalacion/lib/

En mi caso también me dio problemas por una librería faltante llamada libaio, pero sin problemas se instala porque se encuentra también en los repositorios de ubuntu.

sudo aptitude install libaio-dev

Listo! Ya tienes una instalación funcional de Oracle 10g Enterprise.

Ojo, que Oracle no te instalara los menús de accesos directos a la diferentes aplicaciones, pero aún asi tienes todo dentro del directorio /bin. Por mencionar algunos comandos útiles:

Para administrar (crear, borrar, editar) listeners y otras herramientas de red, como conectarte a una base de datos externa:

netca

Para administrar tus bases de datos (crear, borrar, etc):

dbca

Para iniciar o parar el database control:

emctl start dbconsole
emctl stop dbconsole

Para iniciar o parar el servicio web de iSQL*Plus:

isqlplusctl start
isqlplusctl stop

Para iniciar o parar listeners:

lsnrctl start
lsnrctl stop

Para entrar a la consola de SQL*Plus

sqlplus

Espero les sea de utilidad, Saludos.

Informaci
ón basada en La guia de Taw's