UPDATE: Curso sobre desarrollo en el MUG

Casi termino de redondear el temario para el pequeño curso que voy a dictar en el MUG seguramente a mitad de Agosto, aún falta definir si los cuatro encuentros ser dividirán en dos semanas de dos encuentros y cuatro de uno y los días, lo seguro es que será de 18:30 a 21:30. Dejo el temario actualizado.


Desarrollando aplicaciones Web con herramientas y prácticas actuales.

Cuatro sesiones recorriendo los elementos actuales del desarrollo web utilizando la tecnología.NET

  • 1 - Conceptos básicos:
    • 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
    • 2-Comenzando con la aplicación web, paso a paso:
    • 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
  • 3-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
  • 4-Testing y otras cuestiones:
    • Aumentando la calidad de nuestra aplicación
    • Unit test
    • Code coverage. ¿Qué tanto se ha probado?
    • Mocking
    • TDD

Llamada a participación Ágiles2009 en Brasil

Estimado colega,

Qué opinas de formar parte del equipo de expositores que reune nombres como Brian Marick, Diana Larsen, Matt Gelbwaks, Naresh Jain, Dave Nicolette, Alan Cyment, Alexandre Magno, entre otros?

 El próximo lunes 6 de julio será la última oportunidad para presentar tu propuesta de charla en Ágiles 2009!

Ágiles 2009, a realizarse en Florianópolis, Brasil, es un evento sin fines de lucro, organizado por profesionales entusiastas del tema, unidos por el objetivo de crear un espacio amplio de discusión sobre las metodologías ágiles y su adopción en América Latina. Como expositor, tendrás acceso libre a la conferencia y otras ventajas que los organizadores están preparando para ti! Puedes proponer una presentación, un tutorial, un reporte de experiencias o un workshop.

Accede a http://www.agiles2009.org/es/submissions.php para ver la información que debes proporcionar para presentar tus propuestas.

 Esperamos contar contigo en Ágiles 2009!

 Comité Organizador www.agiles2009.org

 

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

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

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.

Á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.

Charla MVC desde cero en el MUG DONE!!

Ayer junto a mi secuaz de laburos freelance Rodrigo Obi-Wan Iloro tuvimos el agrado de dar una pequeña charla introductoria acerca de ASP.NET MVC en el Microsoft User Group, una vez más tengo que agradecerles a todos los que concurrieron y a la gente del MUG por su buena onda

Dejo la PPT que usamos ayer, voy a ir subiendo los ejemplos e intentar de explicar un poco junto con cada uno (remarco la palabra intentar, siempre prometo y no tengo tiempo después), así que enjoy. PPT ASP.NET MVC desde cero

UPDATE!!! Código de ejemplo