in

Comunidad .Net Guatemala

Comunidad de desarrolladores en .net de Guatemala

Manolo Herrera

  • Los esperamos en el eXperts RoadShow'08

    La reunión de la comunidad este día se cancela y los esperamos a todos en el eXperts RoadShow.

    Ciudad: Guatemala - Guatemala

    Fecha: 03-Dic

    Hora: 14:00

    Lugar: Universidad Galileo

    Dirección: 7a. Avenida, calle Dr. Eduardo Suger Cofiño, Zona 10, Guatemala

    Mas información en: http://www.microsoft.com/multicountryamericas/msdn/roadshow/default.aspx

     

    Saludos,

     

    Manolo Herrera

  • Executrain cambio de dirección y las reuniones de la comunidad también

    Executrain, el sponsor oficial de la Comunidad de desarrolladores .NET en Guatemala, se ha cambiado de domicilio ahora están en el nuevo edificio Sixtino de la 6ta Avenida de la zona 10, Oficina 312, así que lo que resta del año, y el próximo año los esperamos por allí.

    Aquí les dejo la información:

    http://www.prosisco.com.gt/2008/traslado/traslado2.html

    Mapa:

    http://www.prosisco.com.gt/2008/traslado/mapa.jpg

     

    Parqueo aún costado Q30.00 las 3 horas o Q14.00 la hora, en el parqueo del edificio.

     

    Saludos,

    Manolo Herrera

  • Una Introducción al desarrollo para SharePoint con Microsoft Visual Studio 2008 (WebCast)

    ¿Usted es un desarrollador de .NET? Ya es hora de que aprenda lo básico del desarrollo de SharePoint, el cual se integró por completo en ASP.NET. Este recorrido el presenta los diversos lugares en SharePoint en los cuales puede desarrollar y ampliar como desarrollador. Observaremos los nuevos conceptos de SharePoint que los desarrolladores .NET deben conocer. Analizaremos lo más destacado como las partes Web, el flujo de trabajo, las definiciones de listas, los administradores de eventos para listas y las bibliotecas de documentos, los tipos de contenido personalizado, y el conector de datos de negocios. Las demostraciones utilizarán las extensiones de Visual Studio para SharePoint para mostrar cómo empezar a desarrollar algunos de estos componentes.

    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032389978&Culture=es-AR

     

    Espero les anime para conocer mas de esta tecnología!,

     

    Manolo Herrera

  • El nuevo paradigma para desarrollo con Servicios de Datos en la Web (WebCast)

    En esta sesión analizaremos los Servicios de datos de ADO.NET y veremos cómo funcionan para el nuevo paradigma para el desarrollo de datos con los servicios de datos basados en el Web. Cubriremos Entity Framework, ADO.NET, los Servicios de datos de ADO.NET y veremos cómo podemos desarrollar rápidamente aplicaciones y consumir servicios de datos.

    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=es-AR&EventID=1032389869&CountryCode=AR

    Espero les sirva y despierte su interés!,

     

    Manolo Herrera

  • Las fuerzas irresistibles encuentran a los objetos móviles (WebCast)

    Existe un enorme grupo de fuerzas económicas desatadas en nuestra industria actual que nos obligan a cambiar la forma en que creamos aplicaciones. Desde diversos procesadores de núcleo, centros de datos de bajo extremo, hasta la altura de ‘Conectividad intermitente dominante' y la redefinición del cliente, esta sesión proporciona una perspectiva única del cambiante panorama y formula la pregunta: ¿Cómo podemos crear aplicaciones a las que se puedan aproximar los implementadores, sean adecuadas en sus implementaciones y puedan responder a estas fuerzas económicas y técnicas que nos presionan? Esta plática es acerca de una visión y no se trata de anuncios de productos. ¡Inspírese en el futuro y únase a nosotros!

    http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=es-AR&EventID=1032386332&CountryCode=AR

    Hasta la próxima!,

     

    Manolo Herrera

  • Tip SharePoint: Pasos para incluir un columna en el motor de búsqueda

    Para los que no estaban enterados MOSS 2007 es decir SharePoint Server 2007 extiende la funcionalidad del motor de búsqueda, a nivel de un buscador de la red.  Pero la pregunta es como lo ponemos a trabajar para nosotros.  Primo vamos a ver como hacer que la metada este incluida en el crawling de SharePoint y luego como esto lo podemos utilizar para desarrollar WebParts personalizados de búsqueda.

    Iniciemos con la metada; Es la información sobre la data. La información dentro de SharePoint identificadas como columnas de una lista o un documento.

    1) Debemos indicarle que dichas columnas se utilizaran como índices de la búsqueda, para ello vaya a la lista o documento , seleccione Settings y en la caso de Libreria de Documentos Document Library Settings, Index Columns, y seleccione aquellas columnas que desea sean incluídas en la busqueda como aparece abajo:

    image

    Presione Ok. , antes de pasar al segundo paso, debemos de crear un elemento de la librería de documentos o de la lista y luego ejecutar un crawling para que la columna aparezca disponible para ello haga los pasos 8 y9.

    2) Vaya al Proveedor de Servicios Compartidos (Esta opcional solo la tiene Moss 2007 y no Services y deberá estar instalada).  Para acceder a ella vaya a "Central Administration". Que es el sitio de administrador normalmente esta en http://nombreservidor:puertoasignado. Luego en el menu del proveedor de servicios compartidos como se muestra abajo:

    image

    Normalmente dice SharedServiceProvider1.

    3) Bajo el titulo de Serach, seleccione Search Settings, como muestra a continuación:

    image

    4) Luego seleccione Metadata property mappings

    image

    5) Luego seleccione New Managed Property

    image

    6) Ingrese un nombre que puede utilizar el nombre de la columna entre tanto no sea un nombre que ya se haya utilizado, seleccione de que tiempo, seleccione el botón de add mappings  para buscar la columna indexada.

    image

    Importante seleccione la opción: Allow this property to be used in scopes. Ya que esto nos permitirá utilizarla en el código en el modelo de búsqueda, como por ejemplo, si nuestra propiedad del ejemplo es Ubicacion podrías hacer lo siguiente:  "select Id, Title, Ubicacion from scopes()   where FREETEXT(Ubicacion,"Oeste") order by Title" (En otro post hablaremos detallaremos mas esto).

    7) Si no lo encuentra debe de ejecutar un crawling y para que el crawling incluya esta columna el índice por lo menos un elemento del documento o lista.

    image

    8) Para finalizar debemos de ejecutar un crawling de Búsqueda. Seleccione nuevamente Search Settings.

    9) Luego Content sources and crawl schedules, haga clic derecho sobre la fuente de contenido a la que pertenece la columna, normalmente es local Office SharePoint Server Sites y seleccione Full o Incremental, por ultimo selección Search Settings, y espere unos minutos y haga refresh a la pagina para ver si ya termino.

    image

    10) Para finalizar realice una busque con un valor de esta columna y debería mostrarle por lo menos esa información.

     

    Saludos amigos del planeta SharePoint, Hasta la próxima!,

     

    Manolo Herrera

  • Tip SharePoint: Ud. sabia que el nivel de permisos son Acumulativos

    Este artículos para los que ya tienen algún tiempo jugando con SharePoint, y se han preguntado porque son Cajitas de selección en vez de botones de radio excluyentes.

     

    Algo que aprendí recientemente, básicamente no hay denegación de servicios sino solamente activación de permiso, por ello usted encontrará que en SharePoint son Check Boxes, indicando que cada cajita seleccionada, suma o acumula el permiso, por ello no puede haber una contradicción, ni tampoco que toma el mayor o menor permiso, sino que va acumulando los servicios, permiso de lectura se suma al de escritura, al de administración, etc.

     

    image

     

    Ahora le hace mas sentido los check boxes.. eso espero.

     

    Code4Fun! amigous!,

     

    Manolo Herrera

  • Con un visión amplia desde Argentina

    Los amigos de Conexion IT desde Argentina inician su travesía para construir una Red Social de personas de habla hispana que se ocupan o gustan de la Tecnología. 

    En palabras de Alejandro:

    "Somos un equipo multidisciplinario en el que
    hay un diseñador, una socióloga, una administradora de empresas y quien escribe, ingeniero en informática. Considero que era hora que los informáticos tengamos nuestra propia red social y nos juntemos para colaborar entre nosotros."

    Mi invitación para mis amigos lectores, visiten el sitio y hagamos que este mundo cada vez mas sea mas pequeño y estemos entre nosotros mas y mejor conectados.

    Hasta la próxima!,

     

    Manolo Herrera

  • Object reference not set to an instance deploying a Web Part with VSeWSS tool

    Síntoma: Si el error le da a pesar que probo con el ejemplo de "Hello Word" que viene en la plantilla muy probablemente es un error de permisos.

    Plataformas Instaladas:

    Windows Vista

    Visual Studio 2005 y 2008

    WSS 3.0 o MOSS 2007

    Solución:

    Debe ejecutar Visual Studio como Administrador

    http://jmhogua.blogspot.com/2008/08/access-denied-en-visual-studio-2008-con.html

     

    Hasta la vista amigos!,

     

    Manolo Herrera

  • Plusvalía en la Red

    Plusvalía en un termino utilizado en bienes raíces, y es algo que ha estado tomando forma en la Red.  Hoy en día todos podemos comprar el servicio de alquiler llamado "hosting", o tener el propio. Y es relativamente barato, pero si la información es poder, y las empresas pagan cada día mas por el la cantidad de usuarios que pueden ser alcanzados por un sitio, pongale atención a esto y vea una inversión a 10 o 15 años, de cualquier tipo de sitio, dará sus reditos, como no lo podrá imaginar!.

    Pero tiene que haber empezado ya, y no desistir.  Porque esto será un termino que se acuñara de tal forma que nuestra riqueza se medirá por el valor que tenemos invertido en la Red, y podrá negociar como cuando esta vendiendo un bien, el valor de su sitio, que comercialmente hablando tendrá un alto valor.

    Piense en inversión de largo plazo, e inicie su inversión en la red.  Google ha demostrado haber llegado a todo el mundo, una buena idea en la red ha demostrado aceptación mundial, pero para que sea buena idea, necesita empezar con algo y continuar desarrollando la idea.

    No todos tenemos el mismo nivel en la Red, siempre habrán algunos que están adelantados, y otros que están atrás de nosotros, aproveche esa oportunidad, no desestime su idea, empiece con algo, publiquelo en la red, e inicie su desarrollo, que a largo plazo, veras réditos que no se imaginaba, pero será un acto de fe al principio, luego de tenacidad y por ultimo comerá de los frutos de sus ideas.

    Yo ya empecé, tengo mas ideas, y sigo generando nuevas, cuando va empezar usted amigo, "si no esta en la red no existe", así que enseñele al mundo que usted es alguien.  Hoy estamos a viernes 3 de octubre del 2008 en occidente, recuerdelo que en pocos 10  años esto será historia para usted, o un gran éxito que este disfrutando.

    Nos vemos en la red! ;)

     

    Manolo Herrera

  • A pesar que ejecutamos stsadm.exe para desintalar una "feature" en SharePoint nos indica Visual Studio que aún esta instalada.

    Valido para: Visual Studio 2005 y 2008. En especial con la herramienta VSeWSS (Visual Studio Extensions for Windows SharePoint Services).

    Luego de haber ejecutado este comando:

    stsadm.exe -o uninstallfeature -name "Solicitud de Agencia" -force

    Me dio el siguiente error:

    The feature name  [my feature name] already exists in SharePoint. You need to rename the feature before solution deployment can succeed.

    Solución:

    Abra el Explorador vaya a C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\ y elemine el directorio con el nombre de la "feature".

    Si aún le da el mismo error, cierre VS, espere un momento, e intentelo de nuevo.

    Hasta la próxima!,

     

    Manolo Herrera

  • Error al intentar abrir un proyecto desde Proyect Server

    Síntoma:

    Cuando acabas de guardar un nuevo proyecto, y te permite guardarlo, e incluso publicarlo.  Pero luego cierras el proyecto y no te permite abrir no indicando donde este el origen del error. Si puedes publicar un proyecto y luego no abrirlo son señales que hay algo que esta impidiendo que puedas comunicarte con el Proyect Server, y tengas instalado algún firewall en tu computador, muy probablemente esta es la causa.

     

    Solución:

    La solución es avisar al departamento de IT, para que te ayude, o configurarlo tu o simplemente desintala dicho FireWall a nosotros nos sucedió con el firewall de Norton que muy restrictivo por default, por la premura de tiempo y como no era el estándar de la empresa, procedimos desintalarlo, y esto soluciono el problema con la comunicación de Proyect Server.  Si es el Firewall standard que utiliza la compañía deberás indagar el puerto conque se comunica Project Server y habilitarlo en el firewall para poderte comunicar adecuadamente.

     

    Espero te ayude esta rápida solución.  Hasta la próxima.

     

    Manolo Herrera

  • Reuniones de la comunidad en Octubre 2008

    Quiero hacerles formalmente la invitación a las próximas reuniones de Octubre del 2008.

    Tendremos con nosotros a nuestro MVP Luis Alfaro con el tema F# (wikipedia: is a multi-paradigm programming language, targeting the .NET Framework, that encompasses functional programming as well as imperative object-oriented programming disciplines.) el miércoles 8 de octubre.

     

    Y continuaremos la tercera parte de la mesa redonda con nuestro amigo Cristian Prieto el cual hablará sobre disciplinas y herramientas de prueba como lo son: TDD, BDD, Mocking, etc.  El día 22 de Octubre.

     

    Así que no faltes a ninguna de ellas y sumate a los desarrolladores que estamos hambrientos de conocimientos.

    Te esperamos,

     

    Manolo Herrera

  • patterns & practices: App Arch Guide project ahora disponible!

    La nueva guía de los amigos de P&P sobre las aplicaciones construidas sobre el .NET Framework  ofrece una guía a nivel de diseño sobre la arquitectura de las aplicaciones.  Enfocada en los tipos de aplicaciones mas comunes: Aplicaciones en capas, componentes, servicios y  llevan al lector sobre las características claves del diseño de cada una de ellas.

    Para los interesados esta es la dirección: http://www.codeplex.com/AppArch

    Una imagen sobre el marco de trabajo conceptual de la guía.

    image

     

    Saludos,

     

    Manolo Herrera

  • Avanzando en el desarrollo de SharePoint a Mejores Practicas y Modelos de desarrollo

    Desde que inicie mi carrera de aprendizaje en SharePoint pude notar la ausencia de buenas prácticas de desarrollo con el Modelo de Objectos de SharePoint que para nada es amigable y abierto, sino rígido y algo limitado para aplicar TDD y una forma desconectada y desacoplada para probar nuestro lógica dentro de dicho modelo.

    Hay una necesidad imperante de mejorar este modelo actual del cual tenemos de coexistir y desarrollar por la gran demanda que hay hoy en día de esta plataforma muy productiva de Portales y  Colaboración.

    Motivado por esta imperiosa necesidad, por la iniciativa de los amigos de Patterns & Practices con su SharePoint Guidance para SharePoint, por el articulo de Francis Cheung sobre "Unit Testing para SharePoint Apps", y por ultimo por la influencia de El Diseño Basado en Dominio, me veo en la obligación de publicar este y una serie de artículos que desarrollare para contribuir a el esparcimiento de mejores prácticas de desarrollo para el modelo de  objetos de SharePoint, junto con soluciones que ayuden y den como resultado la practica de TDD  y patrones dentro de este ambiente deliberadamente hostil hasta esta versión.

    Iniciemos con describir a lo que nos enfrentamos:

    image

    En español, es difícil separarnos del ambiente conectado, y emularlo para nuestras pruebas unitarias o Unit Testing, porque las interfaces (fundamental para Implementar Mocking dentro de Unit Testing) son escasamente utilizadas dentro del modelo de objetos de SharePoint.

    Para incrementar la dificultad están selladas, es decir no podemos sobrescribir, ni sus propiedades, ni sus métodos, ni tampoco heredaras (esto se hizo apropósito me imagino y con justificada razón para asegurar el buen comportamiento, pero dejaron a las pruebas unitarias entre otras cosas).

    Ajuste de penas!, como por si fuera poco los constructores de las clases son internos por lo que no podemos crear en memoria para emular estos objetos fuera del contexto conectado las clases del modelo de SharePoint, esto si que fue adrede colocar esta complejidad (Algo desconfiados mis amigos del Equipo de SharePoint).

    Y para las colecciones no tiene métodos Add y no implementan el IEnumerable para agregar picante el problema, Es decir no puedo utilizar LinQ en la colecciones de SharePoint porque no implementan la interfase mas básica de las colecciones.  Esto si es el colmo!, pero no se asuste amigo, hay formas de usar LinQ dentro de SharePoint, aunque no sean las nativas (Vea este enlace LintQ to SharePoint).

     

    image

    Que opciones para realizar pruebas unitarias tenemos entonces!:

    Bueno primero pues nos que damos con lo establecido (Status Quo), es decir contra una instancia en vivo de SharePoint, Ugh!.  Aunque ya podemos instalar SharePoint en Windows Vista, para realizar  un prueba sencilla necesitamos hacer un deployment o por lo menos una copia de dll nuevo, No way!, para esto esto todo este discurso para encontrar otra solución.

    Una solución elegante, pero tediosa y difícil es crear clases Wrapper y Facade para separar el modelo conectado con las pruebas unitarias a esto le llamamos "Separation of Concers", hablaremos mas adelante de este tema.  Pero que si podemos generarlo con la ayuda de una aplicación, ya no suena tan mal y esta solución pueda que se las presente en siguientes post en mi blog.  Pero por le momento diremos que es una solución no tan viable si la desarrollamos a manita.

    Hay por allí unos magos que inventario una herramienta para eliminar las barreras de constructores internos y clases selladas para podemos emular estos objetos y desarrollaron esta herramienta denominada Typemock Isolator la cual cubre el 80% de código dentro del modelo de objetos de SharePoint, el cual es un porcentaje aceptable para asegurar la tranquilidad de los desarrolladores en la plataforma SharePoint, especialmente los que hoy en día no validan nada y esta corrigiendo constantemente sus errores por no tener cobertura de pruebas de su código.

    image

    Así que la motivación para el cambio es esta frase: "La separación de las áreas de preocupación, de los aspectos", para concentrarnos por separado en cada una de ellas.  Esto implica la independencia y separación de responsabilidad de cada objeto dentro de mi área de preocupación, aspecto o concern.  Y esto es lo que pretendemos hacer en el modelo de objetos de SharePoint, es separarnos de el para probar nuestra lógica de este modelo y al mismo tiempo estemos integrados para que luego encajando los concerns (mi lógica y el modelo de objetos de SharePoint) obtengamos una aplicación que funcione, y que este asegurada en un buen margen para nuestra tranquilidad y la mantenibilidad de nuestra solución.

    image

    Así que unidos todos estos argumentos desarrollamos el siguiente modelo(gracias a nuestro amigo Cheung):

    Utilizar el patrón MVP o Model View Presenter que lo que hará para el caso de los WebParts dentro de SharePoint es separar la Vista o Control de Usuario del Presentador y este a su vez del Modelo (mi lógica de negocio el dominio).  Este patrón esta muy bien documentado en la red y básicamente podemos hacer lo siguiente de una manera muy práctica y ligera:

    Definimos dos interfases, que nos servirán de base para aplicar el patrón y luego para utilizar de plantilla para la interfase particular de cada WebPart:

    public interface IViewBase
       {
           string  MensajeError { set;}
       }

    Esta propiedad será la base para recordarnos que la forma para acceder la vista o user control será a través de una interfase que herede de esta y que por lo menos maneje los mensajes de error para la interfase de usuario (disculpe si le hablo en chino pero es de madrugada y no quiero hacer un libro, sino solo un articulo de este tema).

    La  segunda interfase será para el presentador el que va a contener la lógica del control no así del dominio que es una capa mas abajo. Este es el código:

    public interface IPresenterBase
    {
         void SetView(IViewBase view);
    }

    Esta interfase me recordará que debo implementar en mi clase Presentador este método donde debo de pasarle la instancia de mi vista al presentador, de esta forma:

    public class TareaPendientePresentador : IPresenterBase
      {
          private IViewBase _view;
          public void SetView(IViewBase view)
          {
              _view = view;
          }

      }

    Y en mi control de usuario o WebPart (depende como hagamos la implementación del WebPart) implementamos la interfase IViewBase o la que hereda de esta, de la siguiente forma:

    public partial class Demo : System.Web.UI.UserControl, IViewBase
    {
        private readonly TareaPendientePresentador presentador =  new TareaPendientePresentador();


        protected void Page_Load(object sender, EventArgs e)
        {
            presentador.SetView(this);
     
      }

        public string MensajeError
        {
            set
            {
                ContenedorMensaje.InnerText = value;
            }
        }
        protected override void CreateChildControls()
        {
            presentador.MostrarTareas();

        }

      }

    image

    De esta forma ya separamos la vista del presentador, luego a través de servicios o un controlador podemos acceder a nuestro modelo (en otro post profundizare en este tema y mostrare el código), que es donde esta la lógica que deseamos probar, lejos del aspecto de la capa de presentación, de la lógica de esta para concentrarnos en nuestro modelo. cada aspecto deberá ser probado gracias a que logramos separarlos.

    image

    Regresemos a donde íbamos, El Patrón que sigue es el Repositorio, este con el fin de encapsular las listad dentro de SharePoint, he aquí la separación del modelo de objetos de SharePoint y mi lógica si lo vemos en capas el Patrón MVP esta adelante iniciando del de la capa 7 de presentación y el patrón de Repositorio esta luego de la separación de mi modelo en la capa de Acceso a Datos que en este caso es a las listas de SharePoint donde se persiste la información de este modelo de programación.  Quiero aclarar Mi modelo es mi lógica es lo que deseo enfocarme, el modelo de SharePoint son la definición de las clases que utiliza para representar la persistencia de la información almacenada en la bases de datos de SharePoint.

    image

    Y por último utilice TypeMock para emular el API de SharePoint, y este es el que le da el jaque mate a levantar una instancia de SharePoint para probar nuestro código este creará de una forma emulada la API de SharePoint para que yo pueda probar mi código sin necesidad de tener que estar haciendo el deployment por cada cambio y prueba que deseo realizar.

    Así que amigos, esta es la primera parte de una serie de post donde implementaremos esta solución, e incluiré referencias a la Guidance de P&P, para que vayamos juntos por el camino para desarrollar soluciones dentro de SharePoint de una forma mas asegurada y profesional, minimizando los errores y disfrutando de lo que nos gusta hacer Code4Fun!.

    Nos vemos luego!,

    Manolo Herrera

More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems