Csharping Rotating Header Image

Action vs Func

Action encapsula un método que tiene un parámetro como entrada y no devuelve ningún valor.
Func encapsula un método que tiene un parámetro de entrada y devuelve un objeto del tipo especificado en TResult.

Ambos pueden ser sustituidos por un delegado pero tienen la ventaja que al usarlos no tenemos que definir delegados como veremos en el siguiente par de ejemplos. En el primero usaremos action para mostrar un mensaje por pantalla y en el segundo usaremos func para contar el numero de letras de una cadena.
(más…)

Volatile variable declaration

Cuando usamos volatile para un campo estamos indicando que ese campo sera usado por varios thread que se ejecutan concurrentemente. Basicamente es lo mismo que usar la sentencia “lock” antes de acceder a esa variable, un ejemplo de codigo declaración de un campo volatile es muy simple.

    class VolatileExample
    {
        public volatile int i;

        public void Set(int _i)
        {
            i = _i;
        }
    }

Un campo declarado como volatile no se le realiza ninguna optimizacion al compilar, de esta forma se asegura que el valor que contiene el campo es el valor mas reciente.
Para mas información podeis consultar lo que dice la msdn sobre volatile

MVC 3 Ejemplo de Test

Para desarrollar este ejemplo vamos a usar el proyecto de Ajax Tabs MVC ejemplo, no os preocupeis que en el zip adjunto los dos proyectos. Crear un test es facil y si nos acostumbramos a crear test para todos nuestros proyectos desarrollaremos productos de mejor calidad. Vamos a crear los test en 3 pasos.
(más…)

MVC Ajax Grid with jqGrid

Hoy tengo preparado un codigo para desarrollar un Grid usando jqGrid y MVC, los pasos que vamos a seguir van a ser los siguientes:
- Primero vamos a hacer un grid que muestre los datos existentes en una tabla de una base de datos sql. El grid recibira los datos como una cadena Json.
- Segundo vamos a hacer posible editar las filas.
- Tercero vamos a crear un boton para añadir nuevas filas.
- Ultimo un boton de borrar.
(más…)

Ejemplo Javascript compactor con MVC

La idea principal de este tutorial es mejorar el tiempo de respuesta de nuestra aplicacion, hay veces que tenemos muchos archivos javascript con poco peso, y como lleva mas tiempo realizar el get de 20 archivos de poco peso que el de un solo archivo con todo el contenido,
vamos a implementar una solucion para juntar todos los archivos dentro de la carpeta applicationScripts en uno solo. De esta forma tambien nos olvidamos un poco de tener que declarar los nuevos archivos en la cabecera de la pagina.

(más…)

Menu de navegacion con JQuery

He visto un interesante ejemplo de menu con JQuery y creo que merece la pena que le echeis un vistazo. Cada vez que posiciones el raton sobre un elemento cambia la imagen del background, aqui podeis ver el tutorial completo del menu de jquery y si pinchad en el siguiente enlace si quereis ver una demo.

MVC Tabs con Ajax

Con este proyecto he querido poner en practica las llamadas AJAX, y que mejor manera de hacerlo que creando unos Tabs que no requieran de postback. Primero hemos creado el proyecto basico MVC con login. Este viene por defecto con dos tabs “About” y “Home”, si pruebas clickear ahora son link normales y realizan un postback, los vamos a tunear cambiandolos por AJAX links. Para que veais que no hago trampas añadiré un campo llamado “current time field”.

Vamos por partes, abrimos _Layout.cshtml (que es como las master pages en ASP.Net) para realizar multples cambios.

(más…)

Sortable with Jquery and ASP.NET

Me gusto bastante el ejemplo de Sortable de Jquery y el otro dia en un rato libre lo puse a funcionar usando asp.net, lo interesante del ejemplo era hacerlo de manera que se guardara el estado entre postback, por lo que yo ordeno la lista a mi manera le doy al boton de save y por mucho que refresque recuerda el estado. Pido disculpas porque no tengo tiempo para escribir un tutorial como dios manda, pero si teneis preguntas os las respondo en los comentarios. Prometo hacer otro dia un pequeño post resumen del ejemplo.

Ventajas de usar Scrum

Las metodologías Ágiles se caracterizan por una rápida respuesta frente a los cambios. En proyectos en los que el cliente cambia los requisitos, o estos no están bien definidos, y necesitamos ser flexibles es cuando debemos poner en marcha SCRUM.

Pero SCRUM tiene muchas otras ventajas, gracias a que SCRUM muestra resultados cada poco tiempo, podemos gestionar las expectativas del cliente de una forma mas efectiva. Con SCRUM priorizamos los requisitos por valor y coste, generamos gran parte del producto en poco tiempo y el cliente ya puede empezar a utilizar esa funcionalidad.

Y por ultimo al ser un proceso iterativo incremental vamos mejorando el proceso en cada iteración.

Para mas información podeis consultar la pagina de Scrum de la wikipedia o esta web sobre metodologias ágiles.

Conceptos básicos de herencia y polimorfismo

Inheritance, ¿Que salida da el siguiente código? ¿What is the result of executing the following code?

using System;
namespace BasicTest
{
    public class A
    {
        public virtual void DoSomething()
        {
            Console.WriteLine("A doSomething");
        }
    }

    public class B:A
    {
        public void DoSomething()
        {
            Console.WriteLine("B doSomething");
        }
    }

    public class C : A
    {
        public override void DoSomething()
        {
            Console.WriteLine("C doSomething");
        }
    }

    public class D : C
    {
        public new void DoSomething()
        {
            Console.WriteLine("D doSomething");
        }
    }
    public class EntryPoint
    {
        static void Main()
        {
            A testB = new B();
            A testC = new C();
            A testD = new D();
            testB.DoSomething();
            testC.DoSomething();
            testD.DoSomething();
            Console.ReadLine();
        }
    }
}

Mostrar solución »

A doSomething
C doSomething
C doSomething

Si el método es virtual ejecutaremos el método mas profundo que lleguemos en la cadena de herencia, con una excepción, si encontramos la cadena “new” nos paramos antes. Mas información sobre herencia en el siguiente enlace Herencia c#.