martes, 23 de noviembre de 2010

Programadores Web vs Diseñadores Web

Divertida comparativa entre los diseñadores y programadores web.

free website builder

Web Designers vs Web Developers is brought to you by Wix.com
Use creative design to make a Free Website
You are most welcome to share this infographic with your audience.

viernes, 19 de noviembre de 2010

Eliminar los espacios en blaco extra en una cadena

Una tarea común es eliminar los espacios en blanco de una cadena, si usamos la función Trim() podemos eliminar los espacios al principio y final de la cadena. Usando Replace() eliminamos todos los existentes, pero hay ocasiones en las que solo queremos dejar un espacio entre los caracteres, para eso podemos usar esta sencilla expresión regular:
System.Text.RegularExpressions.Regex.Replace(input, @"\s+", " ");

lunes, 15 de noviembre de 2010

Crear Web Site desde la Administración Central en Windows 7

Después de seguir en tutorial para la instalción de biztalk, he pasado varios dias en el paso nº6 del manual de instalación de biztalk 2010, el problema surge en el momento de crear un nuevo sitio web. La opcion no aparece disponible en el menú, esto es debido a un problema de permisos ya que solo lo puede hacer el adminsitardor de la máquina. Para resolver esto en windows7 el administrador viene desactivado por defecto, para activarlo hay que hacer lo siguiente. -Computer Managment-->local users and groups--> users -Seleccionamos el usuario adminsitrador, boton derecho del raton-->propiedades, desmarcamos la opción de usuario desactivado. -Ponemos una contraseña al Admin. OK Ahora solo nos queda entrar el la Administración de sharepoint con logandonos como usuarios Adminsitrador. P.D. Comprobar que vuestro navegador cuando entrais en la adminsitración de sharepoint tiene configurada la seguiridad como una intranet, sino tampoco os aparecerá el enlace para crear un nuevo site.

viernes, 5 de noviembre de 2010

Manual de Instalación de Biztalk 2010

Aunque la instalacion de Biztalk ha ido mejorando con las diferentes versiones, todavia es un proceso largo y tedioso debido a los diversos pre-requisitos necesarios. Para hacer este proceso un poco mas sencillo aqui os dejo un enlace en el que muestran paso a paso como instalar y configurar Biztalk 2010 y todos los requisitos necesarios.

martes, 28 de septiembre de 2010

Función de búsqueda en Biztalk 2010 Mapper

Buenos dias, después de un tiempo si actividad en el blog regreso con energias renovadas. En esta nueva etapa que espero sea productiva quiero comenzar a escribir pequeñas pinceladas (al menos al principio) sobre Biztalk, espero sirven de ayuda para alguno de vosotros. Pues bien, dicho esto vamos a empezar resaltando una nueva funcionalidad que aparece en la versión 2010 de Biztalk. Ahora tenemos a nuestra disposición una función de búsqueda que permite encontrar cadenas de textos entre los dos esquemas que queremos mappear, ademas resalta los resultados para que sean facilmente visibles. Esta pequeña novedad puede ser muy útil cuando los nombres de los campos no son muy "amigables".

martes, 4 de mayo de 2010

Análisis de código en Visual Studio 2010

Ahora que ya tenemos la versión definitiva de VS2010 en nuestras manos es momento de hablar de alguna de las novedades que podemos encontrar en esta versión. Nuestro objetivo en esta ocasión seran las Reglas de Análisis de Código Esto en si no supone una novedad ya que esta opción esta disponible desde la versión 2005, pero lo que hace que las destaquemos aqui es la mejora que se ha producido en su manejo y en la intregración con el propio Visual Studio. Ahora al abrir la configuración de un proyecto nos encontramos una nueva pestaña llamada análisis de código como podeis ver en la siguiente imagen En esta pestaña podemos habilitar o deshabilitar dicho análisis simplemente seleccionando un checkbox. Microsoft ofrece varios conjuntos de reglas preestablecidas de los que podemos hacer uso, pudiendo seleccionar solo las reglas que nos convengan en cada momento. A continuación os muestro un listado de los conjuntos de politacas que viene con VS2010:
Tambien existe la posibilidad de crear nuestras propias reglas, esto nos permite asegurarnos que en nuestra emprasa todo el código que se genere cumpla con los standanres internos de la propia organización, cosa que es muy de agradecer cuando el código tiene que pasar por varias manos ;-) Para más información sobre la creación de reglas personalizadas os recomiento The Visual Studio Code Analysis Team Blog

viernes, 9 de abril de 2010

Novedades Entity Framework 4

En estos días inmersos como estamos en pleno lanzamiento de Visual Studio 2010 y del Framework 4, me gustaría pararme a revisar algunas novedades (solo una pequeña muestra) que nos ofrece la nueva versión del Entity Framework. Soporte para POCO (Plain Old Clr Object) La nueva versión del EF soporta nativamente POCO, esto es una importante mejora (muy solicitada por parte de la comunidad) para los desarrollos orientados a pruebas TDD, esto es posible debido a que eliminamos cualquier dependencia de nuestras entidades con el EF, ya no tendran que tener propiedades como el EntityKey o implementar interfaces especificas del EF. Más información: Mejoras en el Diseño del Entity Model Ademas de la opción de crear el modelo a partir de la base de datos (Database-First) EF4 incluye Model-First que permite comenzar diseñando las entidades en el Entity Designer y posteriormente generar la base de datos y loas clases a partir del ahí. Asociación de Foreign Key EF4 incluye un nuevo tipo de asociación llamado Foreign Key Asociation que permite incluir Fk en el modelo y usarlas para relacionar las entidades. Las Asociaciones independientes de EF 3.5 todavía son soportadas pero sin duda las asociciaciones FK simplifican mucha más el modelo y su usabilidad. Para leer mas acerca de esta característica aquí. Soporte carga tardía (lazy loading) EF4 soport la carga tardía de objetos. Por defecto cuando se crea un nuevo modelo en VS2010 esta propiedad esta activada. Esto provoca que cuando realizamos una consulta y nos devuelve una colección de objetos, estos no son cargados automaticamente sino que hasta que a medida que cada uno de ellos es utilizado se van cargando. En el siguiente ejemplo, los objetos no son cargados hasta que no se utiliza para escribir una de sus propiedades.

List customers = context.Customers.ToList(); context.ContextOptions.DeferredLoadingEnabled = true;
 foreach (Customer cust in context.Customers)
   Console.WriteLine("Customer {0}, Account {1}", 
               cust.Person.LastName.Trim() + ", " + cust.Person.FirstName, cust.AccountNumber);

Patrones y Tesetabilidad

EF4 incluye una interface adicional que facilita la escritura de código orientado a pruebas usando el framework. Además para facilitar las pruebas ahora es posible el uso de patrones como el Repository y el UnitOfWork. Más información en Entity Framework 4.0 Testeability Improvements.

jueves, 25 de marzo de 2010

Guia de arquitectura

Algunos de vosotros ya conocereís o habreis oido hablar del centro de arquitectura que tiene Microsoft, en el podemos encontrar interesantes articulos explicando algunos patrones de diseño y sus implementaciones en .net asi como diferentes guias y herramientas (http://msdn.microsoft.com/es-es/architecture/default.aspx). Pero lo que quiero compartir con todos vosotros es una guia que han publicado recientemente sobre la "Arquitectura N Capas DDD .Net 4.0". El documente (todavia esta en fase de borrador) según sus propios creadores nace como respuesta a una necesidad que han detectado. "Microsoft Ibérica ha detectado en diversos clientes la necesidad de disponer de una “Guía de Arquitectura base .NET” en español, que sirva para marcar unas líneas maestras de diseño e implementación a la hora de desarrollar aplicaciones .NET complejas."

En definitiva se trata de un buen documento que deberia ser leido por cualquiera que este interesado en desarrollar software de calidad con una arquitectura bien definida y que aproveche todos los elementos que el nuevo framework 4.0 nos ofrece.

martes, 16 de marzo de 2010

Enumerados con valores de tipo cadena C#

Fuera de toda duda estan las ventajas de utilizar enumerados en nuestro código, pero en ocasiones es necesario asociar el valor del enumerado con una cadena, en .Net no se permiten enumerados con valores númericos pero... hace tiempo encontre una solución que ahroa voy a presentar.
/// 
    /// Se crea una clase que hereada de Attribute
    /// esta clase almacenara el string con el valor
    /// del enumerado
    /// 
    public class StringValueAttribute : Attribute {

        #region Properties

        /// 
        /// Holds the stringvalue for a value in an enum.
        /// 
        public string StringValue { get; protected set; }

        #endregion

        #region Constructor

        /// 
        /// Constructor used to init a StringValue Attribute
        /// 
        /// 
        public StringValueAttribute(string value) {
            this.StringValue = value;
        }

        #endregion

    }
Ahora es necesario crear un Método de extension para poder obtener el string asociado al valor del enumerado.
/// 
        /// Se obtiene la cadena asociada
        /// a un valor concreto del enumerado,esto solo funciona 
        /// si se ha asignado previamente un valor al atributo StringValue
        /// 
        /// 
        /// 
        public static string GetStringValue(this Enum value) {
            // Get the type
            Type type = value.GetType();

            // Get fieldinfo for this type
            FieldInfo fieldInfo = type.GetField(value.ToString());

            // Get the stringvalue attributes
            StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes(
                typeof(StringValueAttribute), false) as StringValueAttribute[];

            // Return the first if there was a match.
            return attribs.Length > 0 ? attribs[0].StringValue : null;
        }
Ahora vemos como crear un enumerado
 public enum MyEnum: int {
        [StringValue("Lun")]
        Lunes= 1,
        [StringValue("Mar")]
        Martes = 2       
 } 
Como parte final vemos como usar nuestro enumerado.
MyEnum myE = MyEnum.Lunes;
string val = myE.GetStringValue();

lunes, 22 de febrero de 2010

Mantener la posicion de un Div después de un postback asíncrono

Cuando queremos mantener la posición del scroll de un elemento como puede ser un Div ó un Panel despues de una postback asíncrono, tenemos que recurrir de nuevo al potente javascript. Parece claro que lo que tenemos que lograr es almacenar la posición del scroll antes del postback y después restaurlarla. Eso es exactamente lo que hace el siguiente script. Es importante que este situado siempre después del ScriptManager.

Lo que hacemos es añadir dos manejadores BeginRequestHandler y EndRequestHandler, el primero se ejecuta justo antes de realizar el postback, en él obtenemos la posición del scroll y la almacenamos, en el segundo restauramos esa posición.

sábado, 30 de enero de 2010

Novedades Asp.Net 4.0 parte II

En este post vamos a continuar tratando algunas de las novedades de Asp.Net 4, es este caso quiero comentaros la nueva forma de gestionar y controlar la cache.

Output cache

Con la aparición de la primera versión de asp.net se introdujo el concepto de output cache, esto permite a los desarrolladores almacenar páginas, controles y las respuestas Http en la memoria de forma que las siguientes peticiones Web, asp.net puede servirlas de forma mucho más rápida y eficiente ya que solo tiene que acudir a la memoria y coger el código genera anteriormente para la página, editándose así una nueva generación del código de salida de la página.

Asp.Net 4 añade un punto más a esta funcionalidad permitiendo al desarrollador añadir uno o varios proveedores personalizados de output-cache. Estos proveedores (providers) permiten usar cualquier mecanismo de almacenamiento para persistir el código HTML. Esta nueva funcionalidad permite al desarrollador crear diversos providers en función del tipo de almacenamiento que precise en cada situación (discos remotos o locales, almacenamiento en la nube, motores de cache distribuida), combinandolos a su gusto.

Para crear un Cache provider personalizado debemos crear una clase y heredar de System.Web.Caching.OutputCacheProvider. Una vez creado el nuevo proveedor de cache tendremos que dar un paso mas para poder utilizarlo, este paso ya os lo podréis imaginar... si, tenemos que configurarlo en el Web.config, para ello, dentro de la sección de providers se ha creado una nueva subsección llamada outputcache. El siguiente fragmento de código nos muestra la sección de un web.config en el que se configura la cache para que se almacene en memoria. Este es el tipo de almacenamiento que se usa por defecto Asp.net 4.








Ademas de esto, podemos añadir un mayor nivel de detalle especificando a nivel de control o de petición. La manera mas sencilla de configurar un nuevo proveedor para un Control se usuario es utlizando la sintaxis declaratia. Para ello se ha creado un nuevo atributo llamado providerName, a continuación vemos como como utilizarlo

<%@ OutputCache Duration="60" VaryByParam="None" providerName="DiskCache" %>

Si por el contrario lo que queremos es configurar un proveedor difirente dependiendo de la página que se vaya a solicitar tendremos un poco más de trabajo. Es necesario sobreescribir el método GetOuputCacheProviderName en el Global.asax para especificar manualmente que proveedor corresponde con cada petición de página.


public override string GetOutputCacheProviderName(HttpContext context) 
{ 
  if (context.Request.Path.EndsWith("Advanced.aspx"))
    return "DiskCache"; 
  else
    return base.GetOutputCacheProviderName(context);
}

Después de ver de forma muy resumida esta nueva caracteristica que nos ofrece asp.net a cada desarrollador se le pueden ocurrir algunas situaciones en las que podremos sacar provecho de esto, por ejemplo podemos combinar los distintos tipos de proveedores para conseguir accesos mas rápidos almacenando las páginas mas visitadas en memoria y aquellas que lo son menos en disco.

lunes, 11 de enero de 2010

Visual Studio 2010, Retrasado.

Parece ser que vamos a tener que esperar un poco más para tener en nuestras manos la versión definitiva del Visual Studio 2010 y del Framework 4. Según la propia compañia este retraso se debe a que "El feedback recibido denotan que el rendimiento y el uso de la memoria virtual en VS2010 no es el adecuado para la nueva versión". Microsoft ha decidido ofrecer una versión Release Candidate (RC), la cual estara disponible en Febrero. La RC vendra con una licencia "go live" que soportora despliegue de aplicaciones en producción, "El objetivo de esta RC es obtener todo el feedback sobre el producto. Para asegurarnos que somos capaces de recibir todo el feedback y reaccionar a el, hemos decidido retrasar unas semanas el lanzamiento de VS2010 y el Framework 4".