04.30.08

Patrón de Diseño: Memento

Posted in Java, Patrones, Programación at 9:40 am by Miguel

Me hace mucha gracia el nombre de este Patrón de Diseño, “Memento”, inavitablemente me recuerda siempre a la película.

Memento nos ayuda por ejemplo a resolver la típica problemática de máquina de estados, donde necesitamos almacenar cuáles han sido los diferentes estados que ha tenido un objeto a lo largo de un tiempo determinado.

Un ejemplo muy cercano a todos nosotros es el uso del “Undo / Deshacer” (CTRL+Z) del que disponen la mayoría de procesadores de texto, entornos de desarrollo… y que nos permite en un momento dado poder deshacer todos los últimos pasos que hemos llevado a cabo. Para hacer esto alguien se habrá tenido que acordar de lo que habíamos hecho antes, y ese alguien es el Patrón Memento.

Os dejo link a la wikipedia

http://es.wikipedia.org/wiki/Memento_(patr%C3%B3n_de_dise%C3%B1o)

Y un link a un PDF donde tenéis una descripción más ampliada, además de un ejemplo de codificación en Java.

http://www.freewebz.com/amanecer/personal/papers/paper.memento.pdf

Un saludo.

Miguel.

Rating 2.00 out of 5
[?]

04.27.08

Repositorios de Código Fuente

Posted in Gestión de la Configuración at 12:45 am by Miguel

Para los que estéis acostumbrados a trabajar en proyectos donde los recursos estén distribuidos geográficamente, en empresas de consultoría o en grupos de trabajo de más de dos o tres personas, seguramente tendréis el concepto de Repositorio de Código más que presente. Es más, seguramente no concebiréis el empezar un proyecto sin su existencia. Productos como CVS, Sourcesafe, Subversion… forman parte de vuestro día a día.

En cambio, para profesionales que acaban de salir de la carrera, o para profesionales con años de experiencia pero que trabajan en empresas que desarrollan y gestionan sus propias aplicaciones, en departamentos con pocas personas y con proyectos de no muy grandes dimensiones, el uso de un Repositorio de Código Fuente no es muy común, es más, incluso puede llegar a ser desconocida cuál es su aplicación.

Uno de los principales fines de un Repositorio de Código fuente es el de centralizar en un punto la última versión del código fuente de una aplicación. Soluciones rudimentarias al problema de la centralización utilizan una unidad compartida en la red. Se comparte una carpeta, y todos los miembros del equipo de desarrollo trabajan contra la carpeta que contiene la última versión del código fuente. Esto en principio podría ser válido en equipos pequeños, pero deja de lado otros problemas: ¿qué ocurre si dos personas modifican un mismo archivo al mismo tiempo? ¿qué ocurre con la versión anterior del fichero? ¿y si a mitad de un desarrollo necesito realizar una actualización de la aplicación para solucionar un error, tendré que esperar a cerrar el desarrollo que tengo en curso? Me vienen a la cabeza otras soluciones rudimentarias como… cuando cierro una versión me copio la aplicación a otra carpeta y le pongo que eso es la versión 3.

Son demasiados riesgos teniendo en cuenta que el código fuente son los ladrillos de nuestra aplicación, y sin ladrillos, no hay casa.

Utilizando un repositorio de código fuente podré obtener de forma directa de las siguientes ventajas:

1) Solución al problema de la concurrencia. Que varias personas quieran trabajar con el mismo fichero ya no es problema, el repositorio de codigo me ayudará a evitar errores y a tener un control total.

2) Trazabilidad completa. Voy a poder controlar todas las versiones que se han producido de forma automática para cada una de las modificaciones de un fichero. Podré compararlas entre ellas, conocer la fecha de modificación y su autor. Tengo control sobre el código y los cambios que se producen sobre el mismo.

3) Voy a poder retornar a una versión anterior de la aplicación sin problema, y a partir de dicha versión abrir una nueva rama que difiera de la que se tomó en su momento. Soy capaz de lanzar una actualización de una versión ya cerrada aunque esté a mitad de un desarrollo, y además, hacer que para la nueva versión que estoy preparando dicho error también esté solventado. El repositorio de código me ayudará.

4) Seguridad. Control de acceso al código, sólo usuarios autenticados podrán realizar modificaciones, borrar, crear nuevos ficheros.

Para finalizar, terminar con la reflexión de que mucha gente cree que un repositorio de código no tiene sentido para trabajar con grupos pequeños o desarrollos de una única persona, pero, visto lo visto en el artículo, creo que queda bastante claro que la mayor potencia que obtenemos es la trazabilidad, y eso es totalmente independiente al número de personas que trabajen en el proyecto.

Un saludo.

Miguel.

Rating 3.00 out of 5
[?]

04.24.08

AIR

Posted in AIR, Framework, Programación, Web at 2:16 pm by Miguel

¿Habíais soñado alguna vez con la posibilidad de convertir vuestras aplicaciones web directamente como ejecutables en vuestro escritorio? Pues parece que alguien ha escuchado vuestras plegarias.

AIR (Adobe Integrated Runtime) es la nueva baza de Adobe para poder desarrollar fácilmente aplicaciones de escritorio a partir de aplicaciones web. ¿Parece el mundo alrevés verdad? Esta nueva forma de producir software intenta resolver los siguientes problemas:

1) Conseguir que el coste de formación de un desarrollador púramente web sea mínimo cuando se deba poner a trabajar con aplicaciones de escritorio.

2) Totalmente multiplataforma, únicamente debemos tener el runtime de AIR instalado en la máquina a ejecutar (linux, windows, iphone…)

3) Crear aplicaciones todo-terreno que sean capaces de ejecutarse tanto como si existe conexión a internet como si no.

4) Dotar a aplicaciones puramente web y desarrolladas con HTML, Ajax, Flex (también de Adobe) o Flash de habilidades púramente de escritorio, como acceso a recursos locales, portapapeles, base de datos local, etc).

A mi en principio me ha dejado algo fuera de sitio la noticia, sobre todo porque sigo creyendo que aquí en España lo normal es que exista mucha más experiencia en desarrollo de aplicaciones de escritorio que aplicaciones web. Es más, lo normal es tener dificultades en encontrar profesionales con experiencia web suficiente… entonces, claro está, la mejora que hemos catalogado como número 1 deja de tener valor.

Sobre la multiplataforma, chapó, está claro que es una ventaja indiscutible.

En cuanto a las aplicaciones todo-terreno, chapó también, ahora veremos qué tipo de aplicaciones son las que realmente le sacan partido a esta particularidad. Tengo verdadera curiosidad en averiguar como gestionan las actualizaciones de las propias aplicaciones instaladas ya en la máquina (que es de los mayores inconvenientes de las aplicaciones instaladas en local).

Aplicaciones web que acceden a recursos locales, suena cuanto menos peligroso, veremos cómo gestionan los permisos.

Me llama sobre todo la atención la posibilidad de combinar Flash y AIR, ya que se permite crear aplicaciones visualmente muy atractivas que permitan además aplicar conceptos avanzados de programación con capacidad además de interactuar contra los recursos de la máquina cliente y contra máquinas remotas.

Dejo links:

http://www.adobe.com/products/air/

Saludos.

Miguel.

Rating 3.00 out of 5
[?]

04.22.08

La Frase del Día respecto a la Especialización

Posted in Frase del Día at 1:52 pm by Miguel

“Si hay algo verdaderamente cierto,  es que lo ignoro todo o casi todo. Y me da rabia, porque hubo un tiempo en el que una mente despierta podría haber adquirido todo el saber de la época. Pero ahora ya no es posible. Ya no hay más que pequeños sabios que lo saben todo sobre casi nada. Y yo soy uno de ellos.”

Jean Dausset

Rating 4.00 out of 5
[?]

04.20.08

Desplegando Aplicaciones Web ASP.NET con MSI

Posted in .NET, Despliegues at 11:36 pm by Miguel

Desde hace tiempo quería preparar un artículo donde se describiera cómo desplegar aplicaciones web ASP.NET mediante archivos MSI. La utilizacion de los MSI resulta en una solución que aumenta la calidad de los despliegues y minimiza la tasa de errores en el proceso.

Es curioso pero ya muchos desarrolladores toman como común y obvio la existencia de aplicaciones que preparan ejecutables para aplicaciones de escritorio, pero no parece que ocurra lo mismo con los despliegues de aplicaciones web, donde no se tiene constancia de que también es posible hacer lo mismo.

En concreto, desde la versión 2005 de Visual Studio se incorpora dicha posibilidad, que brinda toda la potencia que os quería presentar aquí mismo, pero visto lo visto, tras encontrar el link que abajo os expongo, me parece a mi que no hay mucho más que decir, por lo que me limito a dejároslo para que lo estudieis a fondo. La verdad es que es un artículo magnífico.

Artículo

Saludos.

Miguel.

Rating 3.00 out of 5
[?]

04.19.08

La Frase del Día respecto a los Objetivos

Posted in Frase del Día at 10:18 am by Miguel

Dicen que durante una reunión del consejo de administración de Black & Decker, su presidente interrumpió la exposición del departamento de marketing, diciendo con gravedad:

“Señores, han confundido el objetivo: Nuestros clientes no quieren taladros….
Nuestros clientes quieren agujeros”.

Extraido del artículo “Nuestros Clientes no Quieren Programas”.

http://www.navegapolis.net/content/view/269/59/

Un saludo.

Miguel.

Rating 3.00 out of 5
[?]

04.18.08

Arquitectura en Pizarra

Posted in Arquitectura at 11:59 pm by Miguel

Para los que les llame la atención los temas relacionados con la arquitectura de software, hoy cambiamos un poco el tema de las arquitecturas en varias capas, de la que hemos hablado bastante en este blog, para presentar otra arquitectura diferente, la Arquitectura en Pizarra.

Me limito a dejar el link a la descripción de Wikipedia (ha sido una semana complicada), da una pincelada suficiente, sin profundizar, al menos para que nos hagamos un poco a la idea de su funcionamiento.

http://es.wikipedia.org/wiki/Arquitectura_en_pizarra_%28inform%C3%A1tica%29

Saludos.

Miguel.

Rating 3.00 out of 5
[?]

04.16.08

Taller: Descompresión y Puesta en Marcha

Posted in Cursos at 9:17 am by Miguel

La semana pasada estuve impartiendo un curso/taller de dos días de duración el cual estaba basado en muchos de los artículos y conocimientos que se exponen en este mismo blog.

Para los que no pudieron asistir y estén interesados, paso a detallar el propósito y el contenido.

Comenzar primero por una descripción de las fases del curso.

1) Fase de Descompresión: Partiendo del conocimiento adquirido en cursos de formación, en una leve o superficial experiencia profesional y en la carrera universitaria y/o formación profesional de los asistentes al curso, se da una visión global de ciertos aspectos relacionados con el desarrollo de software que aumentará su visión al respecto, permitiéndoles entrar en la nueva atmósfera mucho más en situación.

2) Fase de Puesta en Marcha: Una vez situados en el contexto, se da una visión global de las arquitecturas más utilizadas, y que con gran probabilidad seguirán en los proyectos en los problablemente se vaya a participar. Además se hablará de temas específicos de arquitectura de ASP.NET y que suelen ser el principal dolor de cabeza en los inicios.

A continuación, los puntos tratados en el curso, con las referencias a los artículos relacionados en el blog.

Descompresión

Fases de un Proyecto y Metodologías de Desarrollo

http://www.miguelmatas.es/blog/2007/11/03/flexibilidad-con-scrum/

http://www.miguelmatas.es/blog/2007/02/20/mirando-alrededor-el-dia-a-dia-de-los-proyectos-de-software/  

Trabajo en Equipo

Gestión de la Configuración y Repositorios de Código Fuente

http://www.miguelmatas.es/blog/2008/04/06/gestion-de-la-configuracion/

Procedimientos Almacenados

http://www.miguelmatas.es/blog/2007/10/22/protegiendo-la-base-de-datos-mediante-procedimientos-almacenados/

Legibilidad y Mantenibilidad del Código

http://www.miguelmatas.es/blog/2007/10/17/buenas-practicas-legibilidad-y-mantenibilidad-del-codigo/

http://www.miguelmatas.es/blog/2008/02/13/reutilizacion-y-mantenibilidad-en-html/

http://www.miguelmatas.es/blog/2008/02/08/reparabilidad/

http://www.miguelmatas.es/blog/2007/04/27/resolucion-de-errores-de-software-parte-i/

Trabajando con Estándares

Comentarios

http://www.miguelmatas.es/blog/2008/04/07/buenas-practicas-la-importancia-de-los-comentarios/

Uso de Regiones

http://www.miguelmatas.es/blog/2008/04/06/buenas-practicas-uso-de-regiones/

Debug

http://www.miguelmatas.es/blog/2008/02/14/buenas-practicas-el-arte-del-debug/

Espacios de Nombres / Paquetes

http://www.miguelmatas.es/blog/2007/11/07/buenas-practicas-agrupando-clases-por-paquetesnamespacesgrupos-de-clases/

Encapsulando

http://www.miguelmatas.es/blog/2007/11/30/buenas-practicas-encapsular-encapsular-y-encapsular/

http://www.miguelmatas.es/blog/2007/10/03/buenas-practicas-encapsular-construcciones-complejas/

http://www.miguelmatas.es/blog/2007/12/05/dos-reflexiones-sobre-la-programacion-en-objetos/

Tipificación de Errores

http://www.miguelmatas.es/blog/2007/09/26/buenas-practicas-definicion-de-excepciones-propias/

Puesta en Marcha

Repaso a la Arquitectura ASP.NET

Convivencia entre Javascript y Controles ASP.NET

Convivencia entre CSS y Themes

http://www.miguelmatas.es/blog/2007/04/24/el-jardin-de-zen/

Introducción a las Aplicaciones N-Capas

http://www.miguelmatas.es/blog/2007/12/16/el-negocio-es-el-negocio/

http://www.miguelmatas.es/blog/2008/01/03/mvc-y-aplicaciones-n-capas-con-aspnet/

http://www.miguelmatas.es/blog/2008/04/08/uso-de-capas-nuevo-ejemplo/

Introducción a la Orientación a Servicios (SOA)

http://www.miguelmatas.es/blog/2007/03/29/arquitectura-orientada-a-servicios/

http://www.miguelmatas.es/blog/2007/12/20/buenas-practicas-los-servicios-web-no-deberian-devolver-tipos-especificos-de-la-tecnologia/

http://www.miguelmatas.es/blog/2007/12/13/esb-bus-de-servicios-empresariales-soa-arquitectura-orientada-a-servicios/

http://www.miguelmatas.es/blog/2007/11/01/buscando-una-arquitectura-preparada-para-hacerse-mayor/

http://www.miguelmatas.es/blog/2007/11/06/net-remoting-y-servicios-web/

Importancia de los Patrones de Diseño

http://www.miguelmatas.es/blog/2007/10/23/patron-de-diseno-data-access-object-dao-data-transfer-object-dto/

http://www.miguelmatas.es/blog/2007/11/13/mejorando-nuestro-dao-y-dto/

http://www.miguelmatas.es/blog/2007/12/03/haciendo-nuestros-data-access-object-dao-transparentemente-transaccionales/

http://www.miguelmatas.es/blog/2007/12/24/92/

http://www.miguelmatas.es/blog/2008/01/03/mvc-y-aplicaciones-n-capas-con-aspnet/

http://www.miguelmatas.es/blog/2008/03/10/filterdto-minizando-los-metodos-de-nuestros-dao/

Fase de Despliegue

http://www.miguelmatas.es/blog/2008/02/25/despliegues/

http://www.miguelmatas.es/blog/2008/02/27/desplegando-con-integration-services/

http://www.miguelmatas.es/blog/2008/02/12/la-frase-del-dia-respecto-a-los-pasos-a-produccion/

Para finalizar, adjunto la práctica propuesta a realizar para poner en práctica los conocimientos adquiridos en el curso.

Práctica del Taller Descompresión y Puesta en Marcha

Un saludo.

Miguel.

Rating 3.00 out of 5
[?]

04.14.08

ScrumManager.net

Posted in Noticias Actualidad at 7:27 pm by Miguel

Otro link más que recomendado. Atentos al apartado de formación.

http://www.scrummanager.net/

Saludos.

Miguel.

Rating 3.00 out of 5
[?]

04.13.08

NavarraDotNet.com

Posted in Noticias Actualidad at 8:26 pm by Miguel

La verdad es que dan gusto iniciativas de este tipo.

http://www.navarradotnet.com/

¿Para cuando www.aragondotnet? o www.balearesdotnet.com?

Saludos.

Miguel.

Rating 3.00 out of 5
[?]

« Previous entries Next Page » Next Page »