Inturiasgary’s Blog

marzo 4, 2010

Arquitectura MVC

Filed under: Uncategorized — inturiasgary @ 12:40 pm

Debido a que la mayoría de los frameworks conocidos adoptan por esta arquitectura o caso contrario similar. Tenemos que contemplar estos aspectos básicos.

Conceptos básicos:

  • Modelo, es el responsable de:
  • Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelos sea independiente del sistema de almacenamiento.
  • Define las reglas de negocio(la funcionalidad del sistema)
  • Lleva un registro de las vistas y controladores del sistema.
  • Si estamos ante un modelo activo, notificara a las vistas los cambios que en los datos pueda producir un agente externo.
  • Vista, es el responsable de:
  • Recibir datos del modelo y los muestra al usuario.
  • Tienen un registro de su controlador asociado.
  • Pueden dar el servicio de actualizacion, para que sea invocado por el controlador o por el modelo cuando es un modelo activo.
  • Controlador, es el responsable de:
  • Recibir los elementos de entrada.
  • Contiene reglas de gestión de eventos, estas acciones pueden suponer peticiones al modelo o a las vistas.

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

  • El usuario interactúa con la interfaz de usuario de alguna forma(como ser: pulsar un botón, enlace, etc.)
  • 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.
  • 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 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.
  • 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 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 los cambios, pero aun así el modelo en si mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio(el modelo) a la vista aunque puede dar orden a la vista para que se actualice, En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.
  • La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

febrero 10, 2010

Wireless DWA-125 en ubuntu 9.04

Filed under: Uncategorized — inturiasgary @ 6:02 pm
Tags: ,

comentarles que por motivos que mi laptop tx1030la, no funciona la Wifi, decidi comprar una adaptador usb wireless.

del modelo DWA-125 marca d-link, vaya sorpresa cuando conecto el usb y no parpadeaba el led.

los procedimientos para la instalación de los drivers en el sistema operativo ubuntu fue el siguiente:

– ya que la empresa d-link ofrece drivers para sus productos, también soportados en sistemas operativos linux. (no se porque no vienen agregados junto al cd que acompaña el producto). Lo podemos descargar de ftp://www.dlinkla.com/pub/drivers/DWA-125/ , podemos descargarlo directamente con: wget ftp://www.dlinkla.com/pub/drivers/DWA-125/DRIVER_LINUX_DWA-125_STA_v2.1.2.0.tar.gz

tambien existen para los demas modelos de adaptadores

– una ves obtenida la copia, procedemos a descomprimirlo, con: tar xvf 2009_1120_RT3070_Linux_STA_v2.1.2.0.tar.gz

– ingresamos al directorio: cd 2009_1120_RT3070_Linux_STA_v2.1.2.0

– compilamos: make

– instalamos: sudo make install

bueno con esto seria suficiente, reiniciamos la maquina y conectamos el adaptador wireless usb.

según el archivo adjunto de especificación, este driver esta probado para:

Compatibilidad (Pruebas)

Linux Distribution verified (only x86):
1. Fedora 11 : 2.6.29.4-167.fc11.i686.PAE
2. Ubuntu 9.04 : 2.6.28-11-generic
3. Mandriva 2009.1 (spring) : 2.6.29.1-desktop-mnb

noviembre 18, 2009

Arreglo al problema de Hibernar y suspender en ubuntu

Filed under: Uncategorized — inturiasgary @ 11:02 am

Este es un problema al que a la mayoria de personas que conozco le sucedio, mas que todo al instalar la version jaunty jackalope. una de las soluciones que vi en elagun foro fue:

instalar la aplicacion “uswsusp”, el cual sera el encargado desde ahora en realizarar la tarea de hibernación y suspención de nuestro sistema, entonces porcedemos desde una terminal:

sudo aptitude install uswsusp

una ves instalado tenemos que modificar el archivo “hal-system-suspend-linux” con la siguiente instruccion:

sudo gedit /usr/lib/hal/scripts/linux/hal-system-suspend-linux

en el cual solo tiene que contener las siguientes lineas:

#!/bin/sh

sudo s2ram –force

salvamos nuestra informacion y tendremos que editar otro archivo para la solucion de hibernación:

sudo /user/lib/hal/scripts/linux-system-power-hibernate-linux

de la misma manera, solo tiene que contener los siguiente:

#!/bin/sh

sudo s2disk

Con estas modificaciones le estamos diciendo a nuestro sistema que uswsusp sea el encargado de las tareas de hibercación y suspencion.

una de las herramientas muy utiles, como ser la suspencion del sistema mediante la linea de comandos, se la pude realizar de la siguiente manera:

primero debemos instalar la aplicacion “pmi(powermanagement-interface)” asi:

sudo aptitude install powermanagement-interface

una ves realizada la instalacion podemos hacer uso de:

 

pmi action suspend

 

pmi action hibernate

 

la primera instruccion es para suspender el equipo y la segunda para hibernar 🙂

Internacionalización en Aplicaciones Django

Filed under: Uncategorized — inturiasgary @ 2:44 am

Uno de los aspectos importantes hoy en dia es que nuestros sistema webs esten disponibles para la mayor diversidad de usuarios que los utilizan, por lo tanto la internacionalización de las aplicaciones es muy importante.

primero debemos asegurarnos que en el archivo de configuración settings.py este agregada la linea:

“django.core.context_processors.i18n”

dentro de:  TEMPLATE_CONTEXT_PROCESSORS

y tambien este habilitado la siguiente linea:

USE_I18N = True

luego en los templates donde queremos utilizar las traducciones, siempre tiene que estar agregado al principio:

{% load i18n %}

hay dos formas de poder decirle a django que parte de información deseamos traducir :

1.- palabras u oraciones de una sola linea de la siguiente forma:

{% trans “texto a traducir ” %}

{% trans “palabra” %}

2.- oraciones en bloques, el cual nos permitira poder realizar las traducciones de todo lo que se encuentre dentro del cuerpo

{% blocktrans %}

official guide to the core architecture and internals of Microsoft SQL Server 2000 helps readers unlock the full power of Microsoft’s premier relational database management system.

{% enblocktrans %}

Una ves hecho estas modificaciones tenemos que generar nuestros archivos .po de nuestro proyecto. ingresamos a la carpeta que contiene el proyecto y creamos un directorio con el nombre “locale”

mkdir locale

luego para la generacion:

ejemplo generar el .po para la traduccion en español seria de la siguiente forma:

./manage makemessages -l es

ya tendremos generado el archivo django.po dentro de:

locale/es/LC_MESSAGES/

y realizamos la compilacion el cual nos generara en el mismo directorio el archivo .mo con la siguiente instrucción:

ejecutamos la intruccion en el directorio del proyecto

./manage compilemessages

es todo.

 

noviembre 17, 2009

Creación de datos iniciales en Django

Filed under: Uncategorized — inturiasgary @ 7:55 pm
Tags:

para la creación de datos iniciales usando YAML Ain’t Markup Language, primero debemos instalar PyYaml con la siguiente linea de instrucción:

sudo easy_install PyYaml

luego una ves concluida la instalación podemos ver los datos serializados de nuestro proyecto realizado en Django, situándonos en el directorio y ejecutando la siguiente instrucción:

./manage.py dumpdata –format yaml –indent 4

el cual nos lo genera en el formato yaml y con una identacion de 4 espacios.

para poder almacenar la información en un archivo tendríamos que ejecutar así:

./manage.py dumpdata –format yaml –indent  4 >> initial_data.yaml

junio 23, 2009

Metodología de desarrollo de software “SCRUM”

Filed under: Uncategorized — inturiasgary @ 5:22 pm

Esta metodología tan popular dentro del desarrollo de software tiene como roles los siguientes:

1 .- Propietario del producto

2.- Equipo de desarrollo

3.- Administrador SCRUM

4.- Interesados

Los componentes realizados durante esta metodología son:

1.- ProductBacklog : Lista de funcionalidades del sistema.

2.- SprintBacklog: Tareas que se van a implementar durante el sprint.

estas tareas son asignadas al equipo de desarrollo el cual se comprometen con la realizacion del mismo, ellos valoran estimaciones.

3.- Incremento: Parte del producto desarrollado durante el sprint, esta en condiciones de ser usada y es una funcionalidad.

nota.- estos componentes estan disponibles a todos los roles, como tambien todos pueden aportar al incremento de cada uno de ellos.

dentro de esta metodología es de suma importancia las reuniones:

1.- Planificación del Sprint: se determina el tiempo que demorará el sprint y en esta etapa ¿que se desarrollará?, el tiempo a ser realizado está en un intervalo de 15-30 dias.

2.- Reuniones diarias: es un seguimiento diario de avances en el cual se realizan las siguientes preguntas como ser:

¿Que trabajo realizaste desde la ultima reunion ?, ¿ Que tienes previsto para hoy ?, ¿ Que necesitas para cumplir con lo previsto ?

bajo las siguientes condiciones:

– Todos los dias en el mismo lugar y a la misma hora, con una duracion maxima de 15 mins.
– De preferencia que sea la primera actividad del dia
– Acuden todos los miembros del equipo.
– Durante la reunion, todos tienen que estar parados.
– El moderador es el administrador SCRUM o el Lider del equipo.

3.- Revision del Sprint: revision del incremento realizado en el sprint.

– Aqui es importante mencionar que se muestra el producto realizado y no  informes, criticas o diapositivas.

– No es un acontecimiento especial, asi que debe ser lo mas optimizado posible.

– retro-información para la evolución del Product Backlog

– Se lo realiza durante 4 horas

Clasificación de Roles

Dentro de los roles, estan clasificados segun la importancia, Comprometidos e implicados.

Propietario del producto, Equipo de desarrollo(Comprometidos)

Propietario del Producto.- Este tiene la visión clara del producto que quiere, representa a todos los interesados del producto final.

Entre las tareas a realizar son:

– Financiación del proyecto
– Funcionalidad del sistema
– Retorno de la financiación del proyecto
– Lanzamiento del proyecto

Equipo de desarrollo.- Equipo de personas que aportan al desarrollo del software de forma incremental durante las iteraciones.

Caracteristicas del equipo de desarrollo:

– auto-organizado
– auto-gestionado
– multifuncional.

Administrador SRCUM, Marketing Comercial, Cliente. etc.(Implicados)

Administrador SCRUM.- Encargado de que el modelo funcione correctamente, cumple tambien con la responsabilidad de ser el lider del equipo, ejef del proyecto.

Entre sus tareas a cumpli son:

– Introducción de SCRUM en la cultura de la empresa.
– Garantizar el cumplimiento de los roles y formas del modelo.
– Formador y entrenamiento del proceso.
– Asesoría del Product Backlog al propietaria del producto
– Moderación de reuniones, asesoría, estimación, etc.
– Gestión de personas para el trabajo colaboratívo.
– Resolución de impedimentos.
– Seguimientos de las agendas de cada Sprint.

Los demas personajes, dan aporte al modelo como ser:

– retro-información
– asesoria, sugerencias
– colaboración
En el siguiente grafico podemos ver como funciona SCRUM
diagrama-proceso-scrum

mayo 14, 2009

Ejemplo de trabajo en GIT

Filed under: Uncategorized — inturiasgary @ 8:16 pm

las siguientes explicaciones son validas tanto para sistemas Windows, Linux o Mac

Creación de repositorio

– creamos nuestro directorio a ser versionado:

mkdir Repositorio

– e ingresamos

cd Repositorio

– Decimos a GIT que controle este Directorio

git init

Determinación de archivos a ignorar

Primero que nada vamos a decirle a GIT que ignore algunos archivos o directorios para que no se encarge de ellos , en el caso de archivos pueden ser los compilados, o archivos de menor importancia,etc.

creamos el archivo llamado .gitignore (dentro del directorio “Repositorio”)

el contenido del archivo puede ser el sgt.e ejemplo:

.pyc
fotosUsuarios/*
Comentarios/*
saludo.txt

Podemos darnos cuenta que GIT ignorará todos los archivos con extensión pyc, todo el contenido del directorio fotosUsuario como tambien de Comentarios y el archivo saludo.txt

mayo 11, 2009

Instalación de GIT

Filed under: Uncategorized — inturiasgary @ 11:54 pm

para realizar la instalacion de git en nuestro sistema hay que segir los siguientes pasos:

en Windows:

Para una instalacion rapida y sin problemas es mejor realizar:

1.- la instalación mediante MsysGit lo encontramos en la siguiente direccion http://code.google.com/p/msysgit/ , nos damos cuenta que el ejecutable(.exe) , se encuentra en la parte derecha bajo la publicación “Featured downloads:” , lo descargamos y lo instalamos y podremos hacer uso de Git.

2.- Luego instalamos el ejecutable. Para evitar conflictos de configuracion seleccionamos la opcion “Use Git Bash Only” (solo usar el bash de Git).

3 .- Luego creamos nuestro propia llave SSH .

¿pero que es llave SSH? es una llave que nos sirve para verificar la identidad de un usuario remoto.

y lo creamos de la siguiente forma:

– Ingresamos al Git Bash (aplicacion recien instalada)

– escribimos :

ssh-keygen -C “tu@email.com” -t rsa

– nos generara un archivo con extension .ssh

– (en sistemas win xp),copiar el archivo en la direccion C:\Documents and Settings\TuNombre\.ssh\

- (en sistemas win vista),copiar el archivo en la direccion C:\Users\TuNombre\.ssh\

Nota: el directorio .ssh lo tienes que crear de forma manual

4.- una ves realizadas las anteriores acciones ya disponemos de GIT en forma funcional, el ultimo paso es

configurar las variables de identificacion.

de la siguiente forma:

- ingresamos nuevamente a Git Bash

y escribimos las siguiente 2 instrucciones:

git config --global user.name "Tu nombre"
git config --global user.email tu@email.com

en Linux(Ubuntu):

para realizar la instalación en este entorno, abrimos una terminal ya sea konsole o gnome-terminal. luego ejecutamos:

sudo apt-get install git git-core gitk

introducimos la contraseña de usuario y listo, se instalara automaticamente.

nota: gitk es opcional, nos permite ver de forma grafica las acciones realizadas en los repositorios.

febrero 22, 2009

Relacion muchos a muchos en Django

Filed under: Uncategorized — inturiasgary @ 5:02 pm

Utilizaremos un pequeño ejemplo:

class Producto(models.Model):
    nombre = models.CharField(max_length=100)
    precio = models.PositiveIntegerField()

class Fabrica(models.Model):
    nombre = models.CharField(max_length=100)
    descripcion = models.CharField(max_length=200)
    productos = models.ManyToManyField(Producto)

como podemos observar es una representacion del modelo, el cual describe que un producto puede pertenecer a muchas fabricas y una fabrica puede realizar muchos productos.

Programación Funcional en Python

Filed under: Uncategorized — inturiasgary @ 3:32 pm

Una de las ventajas de Python es la facilidad en trabajar con programacion funcional, un breve ejemplo:


def Saludar(leng):

    def Saludar_es():

        print "Hola"

    def Saludar_fr():

        print "Salut"

    def Saludar_en():

        print "Hi"

    leng_func = {'es':Saludar_es,'en':Saludar_en, 'fr':Saludar_fr}
    return leng_func[leng]
#probando el codigo
f=Saludar('es')
f()

Saludar('en')()
« Página anteriorPágina siguiente »

Crea un blog o un sitio web gratuitos con WordPress.com.