martes, 30 de junio de 2009

Qué temas y con qué profundidad te gustaría ver en una capacitación?

Estoy delineando algunas ideas para una capacitación con máquina y todo en 2, 3 o 4 encuentros. La idea es ver algunos de los temas que fui presentando en el MUG pero aplicados a problemas reales y vinculados, como "en la vida real"

Qué temas tratar?

La idea es ver:

  • Delegados y esas cosas
  • Linq
  • Exmpresiones Lambda
  • Linq2Sql o Entity Framework
  • ASP.NET MVC
  • jQuery
  • IoC
  • Un poco de patrones
  • Mocking
  • TDD
  • Algunas herramientas como Fiddler, Visual Studio, nUnit, etc.

La idea es recopilar adeptos para armar el curso e ir definiendo el temario para definir el tiempo y sobre todo el costo (si, van a tener que pagar para escucharme :P )

Condiciones

El lugar será el MUG y el horario de 18:30 a 21:30 ya que me parece que pocos pueden (incluído yo) pedirse 3 o 4 días para algo así

Bueno, tiro la piedra, espero sumar adeptos e idea y las iremos sumando para que sea una buena experiencia y que todos podamos aprender

UPDATE

Más o menos voy dando forma al temario, a ver qué les parece

Desarrollo de una aplicacion Web con herramientas y prácticas actuales, en .NET, obvio.

-Conceptos básicos, para entender lo otro:

  • Delegados
  • Eventos
  • Reflector, la herramienta indispensable
  • Extension methods
  • Expresiones lambda
  • Linq
  • Refactor, mejorando el código
  • Http, verbos, qué pasa en el cable?
  • Html, css

-Comenzando con la aplicación web, de a poco:

  • Fiddler, firebug, IEDeveloper toolbar herramientas para tener a mano
  • Asp.net MVC, por qué, qué ventajas tiene?
  • jQuery para acelerar el desarrollo de javascript
  • Ajax para hacer más interactiva las aplicaciones

-Mejorando el diseño:

  • Más de lo anterior
  • Desacoplando las cosas
  • Patrones para todos los días Repository, Factory, etc.
  • IoC
  • Inyección de dependencias
  • ORM
  • Linq2sql

-Testing:

  • Aumentando la calidad de nuestra aplicación
  • Unit test
  • Code coverage, qué tanto se ha probado?
  • Mocking
  • TDD

Es una idea pero para ir definiendo cosas, sobretodo el objetivo, cómo vincular los conceptos de uso diario y actuales

miércoles, 24 de junio de 2009

Cómo pasar elementos desde una lista a otra con javascript: con la ayuda de jQuery

Intercambio de items entre listas con jQuery

Como digo siempre el verdadero poder de jQuery se encuentra en los selectores, si bien uno se entusiasma inicialmente con los efectos, animaciones, etc. con el tiempo uno se da cuenta que en el día a día jQuery y sus selectores son sus verdadres aliados, para demostrar esto vamos a ver un ejemplo sencillo de una tarea no tan simple

Seguramente les ha tocado tener que hacer la típica pantalla con dos listas, en la cual se pasan elementos de una a la otra. Se habrán encontrado con algunos problemas para localizar los elementos, verificar que cuando querramos pasar de una lista a la otra haya algo seleccionado, etc. He visto ejemplos de código bien pulidos con unas cuantas líneas de javascript y no tan claro pero que funcionan, bueno, vamos a ver cómo se puede hacer esto con jQuery con 3 o 4 líneas gracias a los selectores

<script language="javascript" type="text/javascript">
$(function()
{
    $("#add").click(function()
    {
        mover("origen", "destino");
    }); 
    
    $("#remove").click(function()
    {
        mover("destino","origen");
    });           
});

function mover(origen, destino)
{
    $("#" + origen + " option:selected").remove().appendTo("#" + destino);
}
</script>

Y el HTML sería

<table>
    <tr>
        <td>
            <select id="origen" multiple="multiple" size="5">
                <option value="1">uno</option>
                <option value="2">dos</option>
                <option value="3">tres</option>
                <option value="4">cuatro</option>
            </select>
        </td>
        <td>
            <input type="button" id="add" value=">" /><br />
            <input type="button" id="remove" value="<" />
        </td>
        <td>
            <select id="destino" size="5">
                <option value="5">cinco</option>
            </select>
        </td>
    </tr>
</table>

Mágico, no sólo es sencillo, sino que podemos usar la función mover para mover elementos desde cualquier lista a otra con varios elementos seleccionados, incluso si fuera un combo y todo gracias a los selectores. Hasta la próxima

miércoles, 10 de junio de 2009

Vinculando AJAX + ASP.NET MVC + jQuery

La forma fácil de bindear datos entre jQuery y ASP.NET MVC. DataBinders

Una de las ventajas de ASP.NET MVC es la capacidad de los DataBinders, que no son más que piezas de código que permiten relacionar la información que llega a una acción de un controlador con los parámetros del controlador, esto es, si desde una página llega un campo por POST con cierto nombre, etc cómo se convierte en un parámetro de la acción del controlador, a través de un DataBinder. Si bien podemos crear nuestros propios DataBinders de manera sencilla, con lo que viene por defecto con ASP.NET MVC resuelve la mayoría de los problemas, tanto es así que esta pequeña pieza de códiigo va a intentar vincular los datos con los parámetros de una acción haciendo su mejor esfuerzo desligandonos de tal problema.

Usando Objetos en los parámetros de las acciones

La gracia de usar objetos como parámetros de las acciones es mucha, es decir, si la acción recibe los datos de un formulario de alta de un usuario por qué no crear un tipo de datos RegisterForm usarlo como parámetro y ver cómo hacemos para que nuestras páginas puedan "bindear" sus datos al parámetro. No, en principio no hay que escribir un DataBinder, porque podemos aprovechar la intereporabilidad entre jQuery y ASP.NET MVC y no hacer absolutamente nada raro para que esto ocurra.

Cómo hacer el binding automático si usamos AJAX con jQuery?

Esta es la parte divertida del asunto, imaginemos que tenemos un formulario con un panel para que usuario ingrese al sistema, pero es una aplicación bien "ajaxificada" y el formulario envía los datos asincrónicamente y la respuesta llega del mismo modo, todo sin cambiar de página,

    <div style="width: 180px">
    <form id="formulario">
    <fieldset>
    <input type="text" id="NOMBRE" name="NOMBRE" />
    <input type="text" id="APELLIDO" name="APELLIDO"/>
    <input type="text" name="EDAD" id="EDAD" />
    <input type="text" id="EMAIL" name="EMAIL" /><br /> 
    <input type="checkbox" id="TERMINOS" name="TERMINOS" /><span>Aceptar términos</span>  <br /> 
    <input type="button" id="enviar" value="Enviar" />
    </fieldset>
    </form>
    </div>

Bien, este el es formulario, como vemos hay varios campos, entonces definamos una clase simplemente para mapear las propiedades de éste

public class RegisterForm
{
    public string Nombre { get; set; }
    public string Apellido { get; set; }
    public int Edad { get; set; }
    public string Email { get; set; }
    public string Terminos { get; set; }

}

Perfecto, ahora hacemos una acción en nuestro controller para que tome los datos del formulario

public ActionResult BindingTest(RegisterForm registerForm)
{
    return Json(registerForm);
}

Esta acción siemplemente toma los datos y los devuelve en JSON como para verlos en el cliente nomás, a modo de prueba, la idea es por supuesto hacer algo con ellos, entonces, cómo hacemos para invocar con AJAX la acción y de paso que todos los datos del formulario se "bindeen" o vinculen con el parámetro, así:

<script language="javascript" type="text/javascript">
    $(function() {
        $("#enviar").click(sendData);
    });
    
    function sendData() {
        $.get("/home/BindingTest/", $("#formulario").serialize(), function(data) {
            alert(data);
        });        
    }
</script>

Estoy usando jQuery, y como verán es un simple get con AJAX, el truco está en la función serialize(), que seriliza el formulario, o sea, transforma el objeto y su estado de modo que se pueda transportar o guardar, en este caso como un querystring que es perfectamente comprensible por ASP.NET MVC y sobre todo por el ModelBinder por defecto, como resultado vemos lo que funciona de pelos, porque imprimimos la respuesta de la acción en un alert y comprobamos que el objeto se cargó y luego fue devuelto por la accion en formato JSON, mágico

Hasta la próxima.

martes, 9 de junio de 2009

Ágiles 2009 en Brasil


Como continuidad de los que fue el éxito de Ágiles 2008 les cuento que la versión 2009 se va a realizar en el hermano país de Brasil, más específicamente en Florianópolis, pueden seguir el progreso de la organización desde Acá y si tienen ganas colaborar :) , la fecha es octubre y ya confirmó Brian Marick uno de los firmantes del manifiesto ágil allá por el 2001, así que la invitación está hecha, les aseguro que voy a tratar de estar, no olviden que siempre se pueden consultar las novedades de la comunidad en el sitio de ágiles y las actividades no son pocas por suerte. Saludos.