jueves, 28 de agosto de 2008

Documentando con Sandcastle

¿Sirve de algo esos comentarios que ponemos en el código o sirve para entretenernos con el Intellisense?

En ocasiones nos puede ser útil documentar nuestro código y distribuirlo al equipo para que todos sean conscientes de los elementos disponibles sin tener que abrir veinte proyectos.



Sandcastle nos permite crear una ayuda tipo msdn con los elementos definidos en nuestros componentes.



Para generalo nos proporcionan varias herramientas por línea de comandos, pero lo mejor es utilizar un ejemplo "SandcastleGui.exe", que nos automatiza la creación.





Seleccionamos nuestro assembly y el fichero de comentarios, el tipo de documentación y el formato.



Para generar el fichero de comentarios de nuestro componente, simplemente entramos en las propiedades del proyecto, en "Build", marcamos "Xml documentation file". Esto hará que visual studio genere un fichero xml con todos los comentarios que hayamos puesto.




Como resultado tendremos una documentación con el siguiente formato:





Si queremos crear la ayuda en ficheros tipo chm necesitaremos tener instalado “htmlhelp workshop”, que es el módulo de Microsoft para crear ficheros “chm”.

jueves, 3 de julio de 2008

Errores al instalar Employee Portal de Dynamics NAV

Recientemente he ayudado a montar el Employee Portal sobre un wss2 contra un Microsoft Dynamics Nav 4 y me he encontrado algunos “problemillas” que parecen ser bastante comunes en este mundo.

Por lo que he podido comprobar la documentación de Microsoft sobre este producto es muy escasa, y los manuales de instalación son demasiado ligeros.

 

El primer error que me encontré al entrar al portal fue el siguiente: “No se pueden obtener los permisos necesarios”. Por supuesto este no era un error de wss2, sino del portal.

Motivo: Al parecer este error se produce cuando hemos instalado el módulo de Employee portal antes que el wss2.

Solución: Desinstalar el paquete del employee portal, después desinstalar el wss2, y después volver a instalar el wss2 y por último el paquete del employee portal.

 

Una vez conseguí que funcionara el wss2 sin problemas e instalar el NAS conseguí construir un sitio con la plantilla NEP y me encontré con el siguiente problema: “Communication error (10114): No reply received from Back End System (Time Out)”

Motivo: Este error puede producirse por varias causas. El problema es se produce un Timeout en la página porque los WebParts de NEP no conseguían comunicar con el NAS.

Solución: Como puede producirse por muchos motivos, os aconsejo los siguientes pasos:

· Comprobar el log de aplicaciones del servidor y buscar errores o advertencias producidas por el Employee Portal

· Revisar los usuarios utilizados en la ejecución del wss y del NAS.

· Revisar que el NAS esté iniciado correctamente. Cuando el NAS arranca correctamente deja una marca en el log de aplicaciones de Windows.

· Revisar la configuración de seguridad de las colas MSMQ y los nombres de las colas en la configuración del NEP en Navision.

· Revisar la configuración del NEP en el Web.Config del sitio. Revisar los nombres de las colas MSMQ y la configuración del timeout.

· Revisar que hayais generado el par de claves de intercambio necesarias, y que esté arrancado el servicio de intercambio.

· En mi caso el problema estaba en era que no encontraba la dll xp_ndo.dll.

Algunos enlaces sobre el error:

http://www.mibuso.com/forum/viewtopic.php?p=39228

http://www.msdynamics.de/viewtopic.php?t=4690

 

Error "The extended stored procedure xp_ndo_enumusergroups in the library file xp_ndo.dll, is not available on the <Servername> server”.

Motivo: Navision no encuentra la dll xp_ndo.dll que necesita el cuando conecta en modo integración de Windws contra una bbdd SqlServer.

Solución: Copiar la dll al directorio bin del SqlServer. La dll la podeis encontrar en el cd de instlación en el directorio $\Sql_esp\xp_ndo.exe

Algunos enlaces sobre el error:

http://blog.configmaker.net/?p=27

 

Pero al instalarla me daba otro error más: “Error al carga xp_ndo.dll no se ha podido encontrar alguna de sus dependencias”

Motivo; los procedimientos almacenados estaban registrados referenciando a la dll en un path erróneo.

Solución: Borrar los procedimientos y volver a crearlos con el path adecuado.

Algunos enlaces sobre el error y el anterior:

http://dynamicsuser.net/forums/p/11027/33937.aspx

http://www.binaryrefinery.com/main/CommentView,guid,8fbfd400-c032-4107-8ad6-4335f1714b06.aspx

http://www.binaryrefinery.com/main/CommentView,guid,8fbfd400-c032-4107-8ad6-4335f1714b06.aspx

 

En unos días os contaré mis experiencias con este producto. En breve también montaremos el Employee portal sobre un wss3 contra un Dynamics Nav 4 y después sobre un wss3 contra un Dynamics Nav 5. Ya os contaré que tal.

miércoles, 2 de julio de 2008

Errores al instalar Employee Portal de Dynamics NAV

Recientemente he ayudado a montar el Employee Portal sobre un wss2 contra un Microsoft Dynamics Nav 4 y me he encontrado algunos “problemillas” que parecen ser bastante comunes en este mundo.

Por lo que he podido comprobar la documentación de Microsoft sobre este producto es muy escasa, y los manuales de instalación son demasiado ligeros.

El primer error que me encontré al entrar al portal fue el siguiente: “No se pueden obtener los permisos necesarios”. Por supuesto este no era un error de wss2, sino del portal.

Motivo: Al parecer este error se produce cuando hemos instalado el wss2 antes que el módulo de Employee portal.

Solución: Desinstalar el paquete del employee portal, después desinstalar el wss2, y después volver a instalar el paquete del employee portal y por último el wss2.

Una vez conseguí que funcionara el wss2 sin problemas e instalar el NAS conseguí construir un sitio con la plantilla NEP y me encontré con el siguiente problema: “Communication error (10114): No reply received from Back End System (Time Out)”

Motivo: Este error puede producirse por varias causas. El problema es se produce un Timeout en la página porque los WebParts de NEP no conseguían comunicar con el NAS.

Solución: Como puede producirse por muchos motivos, os aconsejo los siguientes pasos:

· Comprobar el log de aplicaciones del servidor y buscar errores o advertencias producidas por el Employee Portal

· Revisar los usuarios utilizados en la ejecución del wss y del NAS.

· Revisar que el NAS esté iniciado correctamente. Cuando el NAS arranca correctamente deja una marca en el log de aplicaciones de Windows.

· Revisar la configuración de seguridad de las colas MSMQ y los nombres de las colas en la configuración del NEP en Navision.

· Revisar la configuración del NEP en el Web.Config del sitio. Revisar los nombres de las colas MSMQ y la configuración del timeout.

· Revisar que hayais generado el par de claves de intercambio necesarias, y que esté arrancado el servicio de intercambio.

· En mi caso el problema estaba en era que no encontraba la dll xp_ndo.dll.

Algunos enlaces sobre el error:

http://www.mibuso.com/forum/viewtopic.php?p=39228

http://www.msdynamics.de/viewtopic.php?t=4690

Error "The extended stored procedure xp_ndo_enumusergroups in the library file xp_ndo.dll, is not available on the <Servername> server”.

Motivo: Navision no encuentra la dll xp_ndo.dll que necesita el cuando conecta en modo integración de Windws contra una bbdd SqlServer.

Solución: Copiar la dll al directorio bin del SqlServer. La dll la podeis encontrar en el cd de instlación en el directorio $\Sql_esp\xp_ndo.exe

Algunos enlaces sobre el error:

http://blog.configmaker.net/?p=27

Pero al instalarla me daba otro error más: “Error al carga xp_ndo.dll no se ha podido encontrar alguna de sus dependencias”

Motivo; los procedimientos almacenados estaban registrados referenciando a la dll en un path erróneo.

Solución: Borrar los procedimientos y volver a crearlos con el path adecuado.

Algunos enlaces sobre el error y el anterior:

http://dynamicsuser.net/forums/p/11027/33937.aspx

http://www.binaryrefinery.com/main/CommentView,guid,8fbfd400-c032-4107-8ad6-4335f1714b06.aspx

http://www.binaryrefinery.com/main/CommentView,guid,8fbfd400-c032-4107-8ad6-4335f1714b06.aspx

En unos días os contaré mis experiencias con este producto. En breve también montaremos el Employee portal sobre un wss3 contra un Dynamics Nav 4 y después sobre un wss3 contra un Dynamics Nav 5. Ya os contaré que tal.

martes, 17 de junio de 2008

Mejora de la productividad con Máquinas virtuales

Los mayores costes de los proyectos son los destinados a recursos. Conseguir que una persona empiece a producir en el menor tiempo posible en un proyecto implica que estamos consiguiendo que es persona  sea más productiva.

Las máquinas virtuales nos dan mucho juego en este sentido, ya no tenemos que tirarnos horas instalando y desinstalando para cada proyecto o tener todo instalado porque no sabes que plataforma o tecnologías te vas a encontrar.

Recientemente he tenido que apoyar a unos compañeros en un proyecto. Nada más llegar me proporcionaron la documentación del proyecto y una máquina virtual con todas las herramientas del proyecto instaladas y configuradas. Esa misma tarde estaba "tirando líneas".

Si no hubieran utilizado máquinas virtuales para trabajar me habría tenido que instalar varias herramientas, más su correspondientes configuraciones y problemas. Posiblemente habría estado un par de días configurando todo o me habría tocado pringar el fin de semana.

Solo hay un inconveniente. Y es que por cada cliente/proyecto tienes que guardar una máquina, con lo que el disco duro que utilizábamos para copiar pelis y fotos, ahora le damos mejor uso, incluso se me queda pequeño.

Se me ha ocurrido una pequeña fórmula de como podríamos calcular cuanto tiempo invierte una persona en preparar su equipo para empezar a producir en un proyecto:

numComponentes (Instalación)H + numComponentes(configuración )H + numComponentes (Errores)H + numComponentes (Apoyo compañeros)H

Ejemplo:

Llegamos a un proyecto en ASP.NET con Ajax, contra un Oracle y un VSS. Suponiendo que tenemos instalado el VStudio y el VSS:

Horas instalación= (0,5 Ajax) + (1 Oracle)

Horas configuración= (0,5 Ajax) + (1 Oracle) + (1 del proyecto VStudio) + (0,1 de VSS)

Horas errores= (0,1 Ajax) + (1 Oracle) + (0,5 VStudio)

Horas de apoyo= (0,1 Ajax) + (1 Oracle) + (0,5 VStudio)

((0,5) + (1)) + ((0,5) + (1) + (1) + (0,1)) + ((0,1) + (1)+(0,5) )+ ((0,1) + (1) + (0,5)) = 6,3 horas para preparar el equipo.

Es decir, que habríamos perdido una jornada solo en preparar la máquina. Además tendríamos que sumar el tiempo en enterarnos del proyecto.

Estaría bien encontrar una tabla con experiencias de tiempos de instalación y configuración.

Buscando un poco he encontrado algunos enlaces curiosos sobre como mejorar la productividad con máquinas virtuales:

http://jdieguez.wordpress.com/2008/03/08/desarrollar-para-sharepoint-siempre-en-virtual/

http://download.microsoft.com/download/9/e/3/9e38b91b-8d40-4b19-aa39-fe3673b83748/Conexiones%201.2%20.pdf

http://www.vmware.com/lasp/pdf/vi_brochure_lasp.pdf

http://www.avansis.es/vmware/productos-workstation.htm

miércoles, 11 de junio de 2008

ActiveDirectoryMembershipProvider contra un ADAM en WSS3

La mayoría de los ejemplos de un provider de seguridad contra un ADAM en sharepoint son en MOSS, por lo que cuando tenemos que implementarlo con WSS3 tenemos el problema que no podemos utilizar los providers de los ejemplos porque son solo para MOSS.

En este post he publicado un ejemplo de como configurar un provider de seguridad contra un ADAM en un WSS3.

martes, 3 de junio de 2008

Asignación CAS de Sharepoint por contexto de usuario

En este blog de geeks podéis encontrar un artículo sobre como configurar los roles de usuario de un elemento de una lista personalizada, y como elevar los privilegios para realizarlo.

lunes, 2 de junio de 2008

Trace flag 4616 is not set on Dynamics Nav 4

Cuando intentamos crear una nueva base de datos desde el cliente Dynamics Nav 4 sobre SqlServer 2005 nos da el error: Tace flag 4616 is not set on DatabaseServer.

Para solucionarlo tenemos que arrancar el servicio de SqlServer con un parámetro que habilite esta propiedad.

Para ello iremos a las propiedades del servicio de SqlServer en la consola de servicios. Paramos el servicio, y en la caja de "Parámetros de inicio" indicaremos el valor "-T4616", y a continuación iniciaremos el servicio.