jueves, 28 de agosto de 2008

Business Contact Management deja de funcionar sin des-habilitamos el cache del Outlook 2007

Esto me sucedió al des-habilitar el Cache del Outlook en (Tools, Account Settings, , Change, Used Cached Exchange Mode). Y esto lo hice porque si SharePoint me envia un correo de una tarea, no la puedo visualizar si el Cache esta habilitado. Así que a escoger entre una y la otra.

Para volverlo habilitar haga lo siguiente:

  1. Seleccione File
  2. Data File Management
  3. Add
  4. Seleccione Business Contact Management Database
  5. Presione Ok
  6. Seleccione la base de datos y listo.

También hay una excelente herramienta de Microsoft para BCM para crear, compartir y hacer una copia de respaldo como para restaurarla en esta dirección:

http://www.microsoft.com/downloads/thankyou.aspx?familyId=b8e7aa0f-f593-4fb4-b822-dd662af1a6cb&displayLang=en

image

Si al contrario no desean utilizar esta herramienta, puede eliminar el acceso a la base de datos en Outlook en File, Data File Management, Seleccione BCM database y seleccione el botón Remove.

Hasta una próxima nos vemos,

Manolo Herrera

martes, 26 de agosto de 2008

Excelentes Vídeos de Erick Evans acerca de Domain Driven Design Parte 2

En esta segunda parte resumiré a mi forma particular de ver las cosas, el vídeo de Erick Evans sobre el diseño estratégico, espero que sea de mucha utilidad y vean el vídeo en esta dirección:

http://www.infoq.com/presentations/strategic-design-evans

Hace una analogía entre un competencia de remo de un bote de 8 personas, y como esto no sucede en los equipos grandes sino en equipos pequeños que están bien coordinados , y conectados entre ellos. Este tipo de conexión es la que se necesita para que el proceso de modelado funcione. Esto simplemente no sucede en los equipos grandes. Por lo que plantea la siguiente pregunta:

Como hacer para que los equipos grandes produzcan el modelado que esperamos en proyectos largos y trabajen en armonía?

Esto nos lleva a la siguiente realista premisa:

No a lo largo de todo el sistema será bien diseñado.

Solamente una parte del sistema será bien diseñado, si comprendemos esto realmente avanzaremos, Erick ha visto como el deseo por tener todo el sistema bien diseñado, nos lleva al desorden de todo el sistema y quitándonos la oportunidad del verdadero valor de tener partes seleccionadas bien diseñadas.

Debemos de comprender que:

Los diseños de precisión son frágiles.

Los buenos diseños en grandes sistemas no duran mucho, no sobreviven en ese ambiente, hay tanto caso que cada quién toma algo del código y empieza ha cambiarlo.

Lo que necesitamos hacer es definir:

Boundaries

Es necesario establecer Limites entre nuestro buen diseño y el resto del sistema.

Para ello podemos tomar dos estrategias:

Context Mapping o Mapeo de Contexto

y Distilling the Core Domain o Destilando la parte medular del dominio.

En el caso de ejemplo de un dominio de Embarque hay dos modelos distintos hechos para resolver distintos problemas uno el registro de las rutas de los barcos y el otro el la Red de transporte para ver la eficiencia de cada viaje. No se desea tener dos diferentes modelos para el mismo dominio, pero esto es justificado porque son tan complejos los problemas que resuelven que se requiere de dos modelos pare resolver diferentes problemas. Hace mucho sentido esto y nos da una nueva perspectiva que resolver los problemas del domino.

Lo primero al tomar un proyecto lo que hace Erick es hacer un Mapa del contexto; que significa que modelos están involucrados en este proyecto. Cuales son los limites que utilizan y las relaciones que tienen entre ellos, y el lenguaje que ellos utilizan.

Un análisis upstream/downstream, nos permite ver los efectos que tienen los modelos que rodean del proyecto que vamos a realizar tanto los de arriba como los de abajo y analizar el efecto, influencia que tendrán los cambios que realicemos. Este análisis nos permite profundizar mas en las relaciones entre los modelos.

Entonces nos lleva a saber con que contamos y con que tenemos que vivir, por lo que decido construir una pared para que no se corrompa mi modelo, que Erick le llama Anti-Corruption Layer o Capa de Anti-Corrupción. Ya que no se desea mucho de la influencia que provenga del otro lado. Por lo que se pueden hacer puertas y definir la forma de como las cosas deben funcionar.

Debemos de cuidar de las fugas en el proceso de traducción entre modelos y por ello es preciso definir una frontera y explícitamente definir allí todas las traducciones para mantener el modelo bien definido.

Luego nos lleva a la siguiente pregunta:

Que es un Mapa

Y lo que quiso decir es dibuja el mapa tal cual es.

Luego Fix true Flaws, o corrija los defectos verdaderos.

Cambie la realidad, solo entonces haga un remapeo para que refleje la realidad.

Si somos realistas en el plan del proyecto podemos plasmar eso y mitigar los riesgos, y no estressar el proyecto, desde el inicio.

Los beneficios del Mapeo de Contexto es:

Validar la comunicación

Alinear la expectación entre equipos.

crear un ambiente con el cuales los modelos pueden ser efectivos.

La segunda estrategia es sobre:

Destilando el medula del dominio

Esto es algo que debemos reconocer, todo el sistema tiene la misma importancia.

Esto nos lleva a desconponer en tres categorías:

Generic subdomains, como la facturación es un subdominio que puede se encontrado en muchos dominios y es casi lo mismo para todos. No es particularmente tiene que ver con el dominio.

Supporting Subdomains, apoya alguna parte de lo que realmente necesitamos hacer. Como podría ser en el modelo de Embarque la búsqueda de la calendarización de embarques provistas por terceros en formato data-feed.

Core Domain, este a propósito lo escribió en letra pequeña y fue para indicar que la razón por la cual estamos haciendo el proyecto, la parte mas importante, una vez que es destilado y separado de los demás componentes podría ser pequeño, específico. En el ejemplo del Domino Embarque, si el modelo que desea diseñarse es para encontrar la ruta mas eficiente, la parte del ruteo de los barcos será la parte medular del domino, pero muchas veces esto no es tan obvió.

Dio un ejemplo sobre como dos de sus mejores programadores realizaron un excelente trabajo para manejar las zonas de tiempo, pero no pusieron atención a cual era la parte medular del dominio, y el proyecto fracaso. Para eso nos sirve este tipo de análisis para destilar el dominio en partes y encontrar la parte medular y enfocarnos en ella.

Que es lo que su sistema vale la pena escribir?

Por que no comprarlo?

No lo puedo comprar porque esto me hace diferencia a los demás.

Por que no contratarlo para que lo hagan?

No, porque quiero tenerlo cerca de mi gente de negocios.

Por que no construir al que lo genera?

No, porque es complicado y muy especifico.

Por lo que que vamos a esforzarnos y enfocarnos en desarrollar la parte medular del dominio y no necesariamente las demás partes.

Otra pregunta que se le hace a los expertos del dominio es?

Que nos hace a nosotros especiales?

Esto no lleva a descubrir la parte medular del dominio, con la información de los expertos del dominio nos puedan dar.

Así que los desafíos en los grandes y multi-equipos proyectos son:

Mantener la integridad del modelo

Enfocar el esfuerzo (en lo que si va a dar resultado)

Ver el bosque para los árboles (Necesario conectar lo todo)

Unir la estrategia con la implementación

Debemos separar el diseño en diferentes formas a través de la destilación de la parte medular y no medular del dominio.

Salvese de la dicotomía arriba-abajo/abajo-arriba. Hay que ver el problema del dominio en todos los ángulos.

Espero les sirva, y abra un nuevo nivel de entendimiento del modelado de los dominios.

Design4Fun!,

Manolo Herrera

lunes, 25 de agosto de 2008

Excelentes Vídeos de Erick Evans acerca de Domain Driven Design Parte 1

Quiero recomendar a toda la comunidad de desarrolladores de habla hispana que vean estos excelentes vídeos de Erick Evans que habla sobre DDD.  Aunque están en inglés se los recomiendo, y para los que no entienden mucho el inglés les ofrezco el resumen que detallaré abajo.

Detalle a continuación la información desarrollada en la primera parte del vídeo, titulado "poniendo el modelo a trabajar".

http://www.infoq.com/presentations/model-to-work-evans

 

Inicia con una pregunta:

Porque nos debe de importar el modelo?

Y responde de la siguiente manera:

La complejidad crítica de la mayoría de proyectos de software esta en comprender el dominio del negocio en si mismo.

Aunque no es cierto para todos los dominios, si es cierto para la mayoría de aplicaciones para negocios. En vez de enfocarnos en la tecnología, nos enfocamos en resolver la complejidad del negocio.  Es importante mencionar que no es aplicable para todos los dominios porque de esa forma podemos saber que la aplicación de un modelo orientada a dominios no va a funcionar en esos particulares dominios, no así para los dominios que si se aplica este estilo de ver las cosas, donde se puede aplicar un modelo.

Y esto nos lleva a definir sobre el dominio, y lo define así:

 

El dominio es una esfera de conocimiento, influencia o actividad.

El área del asunto en el cual el usuario aplica un programa es el dominio del software.

Dio ejemplos sobre un dominio, puede ser Banca, La gente vuelva en aviones y como las ponemos en el avión, las llevamos y las entregamos en otro lugar, Embarque.

En la mayoría de casos nos topamos que ya existen aplicaciones, y por tanto tenemos que trabajar con ellas. Y en la mayoría de casos podemos encontrar defectos en el diseño.  Y antes de decidir cambiar algo debemos de profundizar en el modelo, preguntándole a los expertos del dominio, a la gente de negocios, para comprender mejor el modelo, la cual es nuestra orientación.

 

Debemos de preguntarnos que conceptos del modelo estamos olvidando o no conocemos, ya que estamos centrados en el modelo, para ello debemos de generar una tormenta de ideas con los expertos del dominio, y empezar a dibujar o modelar el dominio, con un lenguaje que manejan los expertos del domino, nada técnico, nada que tenga que ver con tecnología.  Esto no solo es "barato" sino que efectivo.

Luego hizo la siguiente pregunta:

Que es un modelo?

Y para ello dio, un par de ejemplos, uno fue un  mapa de china, según los chinos, y otro un mapa del mundo. Pero este ultimo el mapa fue diseñado para un propósito especifico y fue para la navegación.  Y para ello fue hecho, no le importa, la población, ni que país es mas grande sino para lo que fue diseñado.

Entonces el modelo lo define así:

Un sistema de abstracciones (Mostrando todo acerca de algo, abstracción es excluye todo, excepto algunas particularidades en las cuales esta interesado) que describe aspectos seleccionados de un dominio, y puede ser utilizado para resolver problemas relacionados a ese dominio.

Concluye entonces que:

Un modelo sirve para un particular uso.

No es como sea realistico como sea posible, no es por el particular uso que el dominio dicta.

Cualquier modelo que permita al software entrar al dominio es un modelo que podemos utilizar.

Si podemos reflejar el modelo en el código encontraremos un nuevo nivel de utilización.

Cuando modelamos debemos escoger un escenario lo mas concreto posible.

Explica que no se puede reducir la complejidad del dominio, pero si la complejidad técnica, algunas veces.  Y puede que se comprometa el dominio para bajar la complejidad, y eso no es problema porque no solo hay un modelo, sino "n" modelos para resolver el problema del dominio.

Define lo que denomina Lenguaje Ubicuo:

Un lenguaje estructurado al rededor de un modelo de dominio y utilizado para todos los miembros del equipo para conectar todas las actividades de un equipo con el software.

Tenemos en este lenguaje en el modelo porque nombramos a los objetos no nombres que representan el modelo.

 

Tenemos que interactuar con otros modelos y cada modelo es valido por lo que fue hecho pero como los conectamos, como hacemos que se comuniquen.   Mapeo de Contexto es una estrategia para ello.  Y se trata de tener un mapeo que traduzca de un contexto del modelo a otro contexto.

 

Nos vemos en la segunda parte del tema

donde Erick Evans habla sobre el diseño estratégico.

 

Code4Fun!,

 

Manolo Herrera

viernes, 22 de agosto de 2008

Access Denied en Visual Studio 2008 con Vista

Cuando estamos haciendo un deploy en el IIS la primera vez, es un error común tanto para una aplicación Web como un sitio en SharePoint (si lo tenemos instalado en Vista)que dicho sea de paso para el IIS que hospeda los sitios que creamos en SharePoint es excatamente lo mismo.

La solución es muy sencilla solo necesitan ejecutar Visual Studio 2008 como Administrador, también es valido para Visual Studio 2005.

La forma sencilla es:

  1. Haga clic derecho sobre el acceso directo de Visual Studio 2008
  2. y seleccionar la opción Run as Administrator.

Sin embargo necesitaremos hacerlo cada vez que ejecutemos Visual Studio y vayamos hacer algún "deployment". Una solución permanente es:

  1. Haga clic derecho sobre el acceso directo, seleccionar properties.
  2. En la pestaña Shortcut seleccionar el botón Advanced.
  3. Haga clic sobre el cuadrito Run As Administrator, presione el botón ok
  4. y nuevamente ok, puede que le indique un mensaje de advertencia solo presione el botón continue.

Listo, con ello podrá hacer el deploy sin tener problemas de autenticación.

Code4Fun!,

Manolo Herrera

Extensiones de Visual Studio 2008 para SharePoint o VSeWSS v 1.2

En junio el equipo de Microsoft SharePoint anunció sobre la liberación de las tan esperadas extensiones para SharePoint dentro del producto Visual Studio 2008 abreviado VSeWSS 1.2. Estas herramientas nos permiten hacer un deploy automático (un gran alivio para los desarrolladores en SharePoint) de los Web Parts (soluciones y muchos mas) a un sitio local de nuestro portal. Además nos provee de una serie de Plantillas dentro de Visual Studio para crear proyectos y nuevos items bajo la categoría SharePoint. Si quiere ver saber mas a detalle sobre las plantillas que ofrece estas extensiones aquí el enlace: http://blogs.msdn.com/sharepoint/archive/2008/06/04/announcing-the-vsewss-version-1-2.aspx

Esta versión es la V1.2 exclusiva para VS 2008, la versión anterior la 1.1 es la versión para Visual Studio 2005. Abajo el enlace para bajar la herramienta que tiene su útil instalador:

http://www.microsoft.com/downloads/details.aspx?familyid=7BF65B28-06E2-4E87-9BAD-086E32185E68&displaylang=en

Recursos para las extensiones para VS 2005, pero que son válidas para la VS 2008:

Hand's on lab para conocer las facilidades que ofrece la herramienta, están disponibles para C# y los VBdores.

http://www.microsoft.com/downloads/details.aspx?FamilyID=b885dce8-c93f-48aa-b798-4422febcc200&DisplayLang=en

y la guía del usuario de las extensiones:

http://www.microsoft.com/downloads/details.aspx?FamilyId=A8A4E775-074D-4451-BE39-459921F79787&displaylang=en

Es importante mencionar que cuando ser refiere a WSS 3.0 también es válido para MOSS 2007 ya que MOSS corre sobre la plataforma de WSS 3.0.

Para cerrar con broche de oro si quisiera una introducción en el desarrollo sobre SharePoint este instalador podrá a su disposición 10 presentaciones y comentarios sobre este tema en el siguiente enlace:

http://www.microsoft.com/downloads/details.aspx?FamilyID=25f9cc59-4ea3-4381-8b37-9430f664eac6&DisplayLang=en

Hasta la próxima amigos, Code4Fun!,

Manolo Herrera

miércoles, 20 de agosto de 2008

Los esperamos hoy 20 de Agosto del 2008 Reunión de la Comunidad

Nuestro amigo del buró de expositores de la Comunidad, Carlos Lone (MBA & Software Architect), estará con nosotros compartiendo el importantísimo tema ASP.Net MVC Framework, no te lo pierdas. Conocerás un nuevo modelo para los desarrolladores de ASP.NET. Atreverte a cambiar de paradigma de como desarrollar aplicaciones Web dentro de la plataforma .NET.

Los esperamos, hoy premiaremos a la persona mas constante dentro de la comunidad.

Recuerden de revisar el mapa para el acceso al lugar: Haz clic aquí

Saludos, Code4Fun!

Manolo Herrera

miércoles, 13 de agosto de 2008

Correr MOSS 2007 en Vista es un alivio para los desarrolladores

Sinceramente es un gran alivio no levantar una máquina virtual que por mas memoria que se le ponga a la máquina el espacio en disco que ocupa y el mismo procesador que utiliza no es el desempeño que uno espera además con la estabilidad de Vista con su SP1, ya es agradable mantenerse allí comparado con ejecutar una máquina virtual que si bien es un excelente avance tecnológico que nos sirve para emular ambientes de servidor, siempre hay un alto costo que pagar.

Les cuento mi experiencia:

Luego de bajar el producto del Equipo Bamboo (que dicho sea de paso hicieron un excelente trabajo). Este producto es un setup launcher (ubicado en C:\Program Files\WssOnVista\Setup) que al ejecutar solicita que le indiques done esta ubicado el archivo SharePoint.exe, que de hecho para instalar MOSS 2007 debes de renombrar el archivo OfficeServerXXX.exe a SharePoint.exe. y luego el proceso de instalación estándar de SharePoint. Pre-requisito es haber instalado el IIS 6.0 y no el 7.0 como algunos piensan.

Es importante mencionar que debes de instalar las versiones que incluyen el Service Pack 1 de SharePoint.

Al principio intente instalar WSS 3.0 con SP1 pero se quedaba congelado cuando hacia la conexión con SQL Express. Entonces decidí instalar MOSS 2007 con SP1, y funciona de maravilla, e hice una instalación de una granja levantado todos sus servicios incluyendo el proveedor de servicios compartidos de SharePoint y funciona muy bien. Además rápido comparado con la máquina virtual. Es bueno mencionar que tengo Vista Business instalado en una HP portátil con 4GB de RAM. Aunque con 2 Gb, es suficiente. Por el uso habitual de las máquinas virtuales decidí crecerla a los 4Gb.

Aquí el link para los que no lo han buscado:

http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2008/05/21/how-to-install-windows-sharepoint-services-3-0-sp1-on-vista-x64-x86.aspx?CommentPosted=true

En resumen, ahora desarrollar en SharePoint es mucho mas agradable en especial que tenemos la herramienta de Visual Studio a la par en nuestro sistema operativo Vista.

Code4Fun!,

Manolo Herrera

martes, 12 de agosto de 2008

Invalid number of parameters en Post-Builb Event en Visual Studio 2005 sobre Vista

Aparentemente vista requiere que los parámetros se pasen entre comías, a diferencia de XP que no lo requiere entonces si desea ejecutar un comando como el xcopy deberá hacerlo de la siguiente manera:

xcopy "$(TargetPath)" "C:\inetpub\wwwroot\wss\VirtualDirectories\80\bin" /y

No se preocupe con las comías del macro $(TargetPath), VS reemplaza de todos modos este valor por el path donde se encuentra el dll del proyecto.

Hasta la próxima,

Manolo Herrera

Unknown Error dentro de SharePoint

Este error es muy frecuente dentro de SharePoint cuando hay algún problema con un Web Part o la dirección URL de un enlace. El detalle es que SharePoint por seguridad elimina cualquier detalle del error que no es manejado por SharePoint o por el administrador de la herramienta que no ha personalizado los Errores dentro de SharePoint. Pero para resolverlo este mensaje no nos ayuda para nada, así que para detallar mejor el error necesitamos modificar el Web.Config de tal forma que nos muestra mas información. Para ello debemos modificar las siguiente secciones con los valores que aparecen en cada línea:

<customErrors mode="Off" />

<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

<compilation batch="false" debug="true">

Es recomendable luego de conocer el error y corregirlo regresar a sus valores original o mejor aún manejar el error a nivel de bitácora, pero eso querido amigo son otros 10 centavos extras que tendrá que averiguar como hacerlo.

Para su referencia le incluyo los valores por omisión de estas secciones dentro del Web.config.

<customErrors mode="On" />

<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

<compilation batch="false" debug="false">

Recuerda amigo, Code4Fun!,

Manolo Herrera

lunes, 11 de agosto de 2008

Ya es oficial el SP1 de Visual Studio 2008 ha sido lanzado

Puedo decir que a diferencia de otros Service Pack de la herramienta Visual Studio este ha sido el mas estable de todos.  En su versión rtm, realicé las pruebas de instalación en mi portátil, primero en una máquina virtual y luego en mi instalación de Windows Vista Business y puedo decir que no me dio ningún problema que haya detectado luego de la instalación.  El archivo leame contiene una lista considerable de errores reportados por usuarios que probaron el SP1 en versiones beta y demás, en diferentes equipos y versiones de Windows, para que si usted esta en alguno de estos casos vea como manejar estos errores y solucionarlos.

Otra mejora fue la velocidad de instalación, comparado con el SP1 de Visual Studio 2005, no se tarda tanto aproximadamente 20 minutos, comparado con los 40 minutos de VS 2005 SP1.

Adicionalmente a las correcciones de errores reportadas por lo usuarios, en especial a la del Diseñador Web cuando se pasa a modo de diseño o split.  Esto aunque no es mas rápido, por lo menos ya no falla cuando son paginas son muy cargadas y cuando utilizamos la herramienta de split para partir la ventana en código html y el diseño gráfico propiamente de nuestra página, esto ya funciona, lo podemos utilizar luego de instalado el SP1. 

Pero les decía adicionalmente a las correcciones, en este SP1 han incluido nuevas características muy interesantes como se las detallo abajo:

• The ADO.NET Entity Designer is added to ease data access.

• You can now add “Local Database Cache” to device projects.

• ASP.NET Dynamic Data templates and toolbox controls are added.

• IIS 7.0 Managed Module and Handler templates are added.

 

Y otras mejoras al Visual Web Developer:

•SQL Server 2008 support for Web projects is added.
• JavaScript formatting support is added.

• the WCF Service renaming process is improved.

Así que si no es tan confiado instale su máquina virtual y pruebelo.

Aquí le va el link: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en

Recuerda amigo, Code4Fun!,

Manolo Herrera

Lugar de las reuniones de la Comunidad

Queridos amigos, hemos tenido algunos problemas con ubicar la entrada a las instalaciones de Executrain, nuestro amable patrocinador donde nos están prestando las instalaciones para realizar nuestras reuniones. Por lo que les adjunto la imagen de la forma de ingresar a las instalaciones. Básicamente el acceso después de las 5:00 p.m. es por el parqueo del Centro Comercial Los Proceres en la zona 10 , del nivel 4to de Comerciales. Saliendo al parqueo del lado izquierdo al fondo.

Mapa_Accesos

Los esperamos este miércoles a las 18:30 hrs. Estará con nosotros Luis Alfaro MVP de C# comentándonos los nuevas características de ASP.NET 3.5 & Visual Studio 2008 – DetailsView in-depth. El parqueo tiene un costo de Q 5.00 nada mas por las dos horas que dura la reunión.

Saludos,

Manolo Herrera

Coodinador de la Comunidad de desarrolladores .NET en Guatemala

http://guatecommunity.net