miércoles, 25 de enero de 2012

Permisos de Escritura en Directorio de Aplicacion Web (IIS)

En algun momento tuve la necesidad de que los usuarios que ingresaban a mi sitio generaran un archivo interno en la aplicacion de tal manera que luego lo descargaran. En ese momento tuve problemas al permitir que un usuario creara el archivo ya que no poseia los permisos suficientes sobre el directorio donde se escribian los archivos, por lo cual "cacharreando un poco" (En el argot popular) encontre que se le debe dar permisos al usuario IIS_WPG de control total sobre el directorio en donde la aplicacion web creara los archivos.



En realidad se trataba de algo muy simple, pero en su momento me saco un poco de "Canas", y decidi postearlo en el blog con el fin de que no se las saque a quien aun no se ha enfrentado con esto.

Saludos

jueves, 19 de enero de 2012

Firmar Una Libreria Con Nombre Seguro

Hoy tuve que realizar la firma de dll debido a un problema que tuve al publicar un aplicacion a traves de ClickOnce, aunque no soluciono mi problema(No quiere decir que no sea util esta informacion), aprendi como se firma una dll con un nombre seguro, a traves de la herramienta "sn.exe" de Visual Studio.

Antes que nada es necesario que entendamos para que se firma una libreria u componente en una aplicacion:

"La firma de nombre seguro o nombre seguro, proporciona a un componente de software una identidad única y global, que no puede ser suplantada por nadie. Los nombres seguros se utilizan para garantizar que las dependencias de componente e instrucciones de configuración se asignen con precisión al componente y versión de componente correctos." MSDN

  • Cuando utilizar un nombre seguro? Cuando un componente sea una libreria u otro, se va a prestar para un servicio publico a otras aplicaciones, es recomendable que tenga un firma con nombre seguro, es decir que una libreria puede ser usada por varias aplicaciones o es compartida, por lo general esto ocurre con librerias del sistema o publicas. 
  • Cuando no utilizar un nombre seguro?  Es recomendable que los ejecutables no tengan un nombre seguro, ya que por lo general los exe hacen referencia a varias librerias que por lo general puede que no esten firmadas con nombre seguro, lo cual impide que estas referencias se hagan.

Si se desea obtener mas informacion sobre los nombres seguros pueden acceder a este link donde hay una explicacion directa sobre este tema por parte del MSDN, bueno ahora si directamente a el procedimiento para firmar una libreria, existe un procedimiento un poco mas visual a traves de Visual Studio que lo pueden ver aqui pero para esta entrada lo explicare por linea de comandos como lo aprendi ("MiLibreria" se refiere a la libreria a la que deseo firmar con nombre seguro):


1. Abrir la linea de comandos de Visual Studio:

2.Ubicarse en el directorio donde se encuentra la librera a firmar, para esto dentro del editor de comandos tecleamos el comando: 
>cd "C:\DirectorioDeMiLibreria"

3.Una vez ubicados en el directorio debemos crear la firma con el nombre seguro, para esto ejecutamos el comando sn que es el permite realizar el trabajo con los nombres seguros, entonces ejecutamos : 
>sn -k MiLibreria.snk  (El archivo de llave no necesariamente tiene que ser el mismo de la libreria)

4.El resultado debe ser "Par de Claves escrito en "MiLibreria.snk", una ves tengamos el archivo de clave denemos quitar la firma que tenga el archivo actualmente, para esto utilizamos el siguiente comando:
>ildasm MiLibreria.dll /out:MiLibreria.il

5.Luego reensamblamos el archivo usando la clave de nombre seguro que creamos ejecutando:
>ilasm MiLibreria.il /res:MiLibreria.res /dll /key:MiLibreria.snk /out:MiLibreria.dll

6.Una vez termine el proceso debe aparecer un mensaje como "Operation Completed Successfully", luego de esto verificamos que la libreria  esta firmada apropiadamente nuevamente utilizando sn.exe:
>sn -vf MiLibreria.dll

Nos debe mostrar el mensaje "El ensablado MiLibreria.dll es valido", asi logramos que nuestra libreria este firmada con un nombre seguro. Gracias a Athar Anis a quien lei para recibir orientacion para esto y tambien a MSDN donde entendi mas sobre los nombres seguros.

Saludos

miércoles, 18 de enero de 2012

Error de Permisos del Compilador "BC2000" en IIS

Bueno este es un error con el cual me tope hace pocos dias, mientras intentaba desplegar una aplicacion web el IIS de Microsoft (Windows 7), la instalacion de la aplicacion se realizaba de manera correcta y no mostraba ningun mensaje de error, todos los requerimientos de la aplicacion se cumplian (Framework 3.5, Librerias de Crystal Reports, Conexion a la base de datos, etc..) pero al intentar abrir la pagina inicial de la aplicacion me mostraba un error como el siguiente


Microsoft (R) Visual Basic Compiler version 9.0.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

vbc : Fatal error BC2000 : compiler initialization failed unexpectedly: Access is denied.

Despues de buscar mucho me encontre con que el problema se trataba simplemente de permisos, entonces como se soluciona esto?, simplemente hay que darle permisos de control total al usuario IIS_IUSRS en el directorio temp de windows, ubicacion:

"<%UnidadDelSistema%>\Windows\temp"  (ej. C:\Windows\Temp)

Bueno espero que les pueda ayudar a quienes tengan el mismo problema que yo, Saludos hasta la proxima.

sábado, 14 de enero de 2012

JIRA Infaltable en el Desarrollo de Software

Bueno despues de mucho no publicar, me he propuesto la tarea de ir registrando mas seguidamente, todas las experiencias que puedan resultar de ayuda para otros.

En estos momentos me encuentro implementando una herramienta ALM (Application Lifecycle Management) que como su nombre lo dice es utilizada para la gestión del ciclo de vida de las aplicaciones, su nombre es JIRA desarrollado por la empresa ATLASSIAN.
Inicialmente empeze a tomar esta herramienta como un mecanismo que me permitiria realizar una gestion de los Bugs del desarrollo de las aplicaciones que lidero, pero ahora se ha convertido en mucho mas que esto.

JIRA es una herramienta que te permitira:
  • Realizar seguimiento a las nuevas funcionalidades, bugs, mejoras, tareas etc...(Issues) que deseen incorporarse o corregirse en una aplicación.
  • Asignacion de tareas a los miembros del equipo de desarrollo y autogestion de los avances en las tareas.
  • Permitir a los miembros del equipo y al administrador del proyecto utilizar herramientas que permitan la el uso de metodologias de desarrollo agil como SCRUM, dentro de estas herramientas se encuentran el Kanbanboard y los Burndown Chart.
  • Permitir el control de versiones de los proyectos y las publicaciones de los releases.
  • Permitir configurar el flujo de trabajo (Workflow en JIRA) del equipo de tal manera que permita establecer estados y acciones sobre las tareas de los proyectos.
  • Lograr que los usuarios tambien tengan la posibilidad de crear historias de usuario (requerimientos) y que estos mismos puedan hacer seguimiento de los mismos.
  • Permitir la configuracion de notificaciones via e-mail a los miembros del equipo y usuarios de las aplicaciones, sobre el estado de avance y requerimientos y bugs.
  • Configuracion de niveles de seguridad para la gestión de las incidencias.
  • Dashboards configurables que permiten el analisis del estado de los proyectos, gestion de las tareas que tengo asignadas, graficos etc (Existen muchos plugins que se pueden integrar a estos dashboards.
  • Un manejo facil e intuitivo, una completa aplicacion de principios de Usabilidad.
Adicional a todas estas caracteristicas, Atlassian presenta otra suite de herramientas que se conectan con JIRA, como por ejemplo FishEye que permite integrar nuestros repositorios de control de versiones como (Subversion en mi caso), Confluence que es una especie de wiki o herramienta tecnologica que permite la Gestion del Conocimiento  entre todos los usuarios, y otras muchas herramientas que poco a poco tratare de contar mi experiencia al implementarlas. Tambien posee muchos plugins gratuitos o de pago que pueden ser incluidos dentro de la herramienta.

Bueno por el momento solo queria describir algunas de las muchas caracteristicas de esta herramienta con las cuales me he encontrado y me parecen de gran utilidad, luego publicare algunas experiencias con esta herramienta, desde tips hasta soluciones a problemas con los cuales me he encontrado.

Saludos y hasta la proxima.