Marc Rubiño

ASP.NET, C#, AJAX.NET, JavaScript, etc.

June 2011 - Artículos

Evento inaugural de catdotNet !!!

Sábado 2 de julio jornada inaugural de catdotNet

Este próximo sábado en la ciudad condal, en el Cybernàrium de Barcelona Activa, diversos grupos de usuarios .NET catalanes inician juntos un nuevo proyecto destinado a ayudarnos en el difícil proceso de mejorar como profesionales. No dejes escapar esta fecha tan destacada i aprovecha para conocer de primera mano todo lo que te propone el nuevo catdotNet, a la vez que tienes la oportunidad de aprender de profesionales con gran experiencia sobre tecnologías .NET Regístrate ahora mismo aquí per poder disfrutar de una mañana intensa con una agenda en este primer encuentro realmente de lujo:

Gestión de dependencias con NuGet

NuGet es un proyecto Open Source el cual facilita la gestión de dependencias de proyectos con librerías de terceros. Aprende como crear tus propios paquetes y repositorios de librerías para desarrollos internos y todas las posibilidades de gestión de dependencias de terceros para proyectos. Con José Miguel Torres, co-fundador de CatDotNet, R&D+i Manger en MRW y MVP en movilidad.

ASP.NET MVC 3 en la práctica

Sesión eminentemente práctica en la que veremos las características más importantes de ASP.NET MVC 3 como el motor de vistas Razor, el soporte para aplicar dependency injection, validaciones remotas, etc.

También veremos las últimas novedades acabadas de salir del horno como el soporte para HTML5 y la generación automática de vistas y controladores mediante Data Scaffolding. Con Marçal Serrate, Senior Architect en pasiona Consulting

Mejoras en la productividad con Entity Framework 4.1

El pasado abril, el equipo de ADO.NET liberó la versión final de Entity Framework 4.1 en la que se incluían dos nuevas características enfocadas a la mejora de la productividad: Code First y API DbContext. Estas mejoras proporcionan una API más limpia y más simple centrada en los escenarios más comunes, pero que también podemos utilizar en escenarios donde se requiera una funcionalidad más avanzada. En esta sesión ofreceremos una visión general de los dos enfoques de desarrollo ya conocidos: DataBase First y Model First, e introduciremos el nuevo patrón de desarrollo "CodeFirst", que nos permite definir nuestro modelo utilizando clases .NET, y utilizar estas clases para asignarlas a una base de datos existente o generar un nuevo esquema. Veremos también cómo podemos utilizar este modelo con la nueva API simplificada así como otras técnicas destinadas a reducir el tiempo de desarrollo utilizando Entity Framework. Con Álex Casquete, Coordinador en el DotNetClub de la UOC y Architect en pasiona Consulting.

JavaScript i Ajax para programadores ASP.NET

Las aplicaciones web modernas no serían posibles sin JavaScript, descubre de qué manera podemos utilizar JavaScript, JQuery y Ajax de una manera óptima en nuestras aplicaciones web ASP.NET y ASP.NET MVC. En esta charla lo que veremos es como de una forma totalmente práctica y con Visual Studio 2010, como se integran perfectamente JQuery y las llamadas asíncronas Ajax con nuestras aplicaciones ASP.NET y qué buenas prácticas tenemos que seguir para que nuestra web sea lo más óptima posible y cómo podemos depurar los scripts para solucionar posibles problemas. ¡Código, Código, Código! Con Marc Rubiño, fundador de LoNetCamp, Consultant en Renacimiento y MVP en ASP.NET

¡Te esperamos!

Sabemos que son fechas de playa, pese a todo, hemos hecho el esfuerzo de preparar una buena selección de temas, y nos gustaría tener la oportunidad de explicarte de primera mano que nos depara la vuelta de vacaciones. Tu asistencia es importante; catdotNet es un proyecto creado por la comunidad, para la comunidad, ¿quieres formar parte? ¡Te esperamos! (Para más información puedes visitar nuestra web en http://catdotnet.net )

 

 

Posted: 27/6/2011 12:16 por Marc Rubiño | con 2 comment(s)
Archivado en: ,
CodeBars con ASP.NET MVC

Hace tiempo que quiero pasar todos los artículos que tengo en geeks.ms a mi`página personal http://mrubino.net , pero pasar tantos articulos de varios años no es nada fácil y por más inri tengo el problema que he perdido la mayoría del material que se encontraba en el anterior server.

Por eso he decidido ir pasando los artículos más vistos y si puedo rehacer los ejemplos para que estén disponibles desde mi nuevo site.

Para empezar he recuperado uno de los artículos más vistos que es como crear una imagen dinámicamente con un Handler para ASP.NET Web forms y mostrar un código de barras con la información que pasa el usuario como parámetros.

Estos artículos los puedes repasar en Geeks: http://geeks.ms/blogs/mrubino/archive/2008/12/04/asp-net-codebars.aspx y en mi site http://mrubino.net/2008/12/asp-net-codebars .

Pero estos ejemplos no sirven para la gente que utiliza ASP.NET MVC porque ya no es necesario los Handlers para tratar las imagen y en su defecto podemos crear un controlador que devuelva directamente la imagen dinámica.

Pero mejor hacer un nuevo ejemplo para ver más claro como funcionaría un controlador que nos devuelva la imagen dinámica.

Como en MVC separamos las responsabilidades pues solo necesitamos:

Vista:

Solo necesitamos una página con una lista para seleccionar la fuente para el código de barras, un textBox para que el usuario pueda introducir el texto para generar en código y finalmente una imagen para mostrar el resultado.
Con Razor quedaría de esta manera:

 

@model CodeBar_MVC.Models.Fuente                

@Html.DropDownListFor(Model => Model.Id,
        new SelectList(ViewBag.Fuentes, "Id", "Nombre"),
        new { id = "ddlFuentes" })
@Html.TextBox("txtFuentes")

<input type="button" id="btnImagen" value="clik" />
<img id="imgCodeBar"  alt="codeBar" />
El DropDownList se alimenta de una lista devuelta por el controlador "Fuentes" y con el esquema definido en el modelo Fuente.

Controlador:

Tendremos dos acciones, la principal que cargará la lista con las fuentes y la que sustituirá al anterior Handler y devolverá un array de bytes con File, intenté utilizar la función FileStreamResult pero al generar la imagen en memoria y devolver el Stream me retornaba el error. "cannot access a closed stream".

1. Carga de la lista de fuentes:

public ActionResult Index()
{
   ViewBag.Fuentes = CodeBarService.GetDatos();
   return View();
}

2. Carga la Imagen dinámica con el código de Barras:

public ActionResult GetCodeBar(string code , string format,
            int width, int height, int size)
{
   return File(CodeBarService.GenerarCodigo(code, format,
                width, height, size), "image/jpg");
}

Modelo:

El modelo es muy sencillito y solo tenemos la entidad Fuente.
public class Fuente
{
   [Key]
   public string Id { get; set; }
   public string Nombre { get; set; }
   public string Fichero { get; set; }
}
No entraré en como utilizar el patrón MVC, porque eso no es garantiza de que siempre se realicen las cosas correctamente y yo para este ejemplo he creado un servicio en el modelo que contiene toda la lógica
CodeBarService:
  • GetDatos(): La función que se utiliza el controlador para cargar la lista con las fuentes existentes.
  • CargarFuente(string fuente, int size): Se encarga de buscar la fuente y cargarla para utilizar en la imagen.
  • FormatBarCode(string code): Las fuente CodeBars necesitan un código de escape para identificar cuando empieza y termina el código que el lector tiene que leer. Estas fuentes utilizan * como código de escape, pero cada fuente tiene su propia especificación.
  • GenerarCodigo(string code, string format, int width, int height, int size): donde se crea la imagen en memoria y se le añade el texto con la fuente de código de barras y se retorna en formato de bytes[].

 

 public static byte[] GenerarCodigo(string code, string format,
            int width, int height, int size)
{
   var resultado = new byte[]{};
   width = (width == 0) ? 200 : width;
   height = (width == 0) ? 60 : height;
   size = (width == 0) ? 60 : size;

   if (!string.IsNullOrEmpty(code))
   {
      using (var stream = new MemoryStream())
      {
         var bitmap = new Bitmap(width, height);
         var grafic = Graphics.FromImage(bitmap);
         var fuente = CargarFuente(format, size);
         var point = new Point();
         var brush = new SolidBrush(Color.Black);

         grafic.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);
         grafic.DrawString(FormatBarCode(code.ToUpper()), fuente, brush, point);
         bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
         stream.Seek(0, SeekOrigin.Begin);
         resultado =  stream.ToArray();
      }
   }

   return resultado;
}

Si recordamos en el controlador devolvemos un File Action y con eso tenemos bastante para cargar la imágen dinámicamente para eso nos ayudaremos con un poco de JavaScript con JQuery.

$(document).ready(function () {

    var img = $("#imgCodeBar");
    if (img) img.hide();

    $("#btnImagen").click(cargarCodeBar);

    function cargarCodeBar() {
        var btn = $("#btnImagen");

        if (img) {
            var code = $("#txtFuentes");
            var fonts = $("#ddlFuentes");

            if (code && fonts) {

                img[0].src = "/home/GetCodeBar?code=" +
                code.val() +
                "&format=" + fonts.val() +
                "&width=400&height=60&size=50";
                img.show();
            }
        }
    }
});

Lo que hace este script es:

  1. Ocultar la imagen de inicio y enlazar el evento clic al botón de una forma no intrusiva.
  2. La función cargarCodeBar : recupera la información del documento, enlaza la imagen al controlador y la muestra actualizada.

Con esto ya lo tenemos todo.

streaming Material

   Cross-Posting: http://mrubino.net

 

 

Posted: 22/6/2011 22:31 por Marc Rubiño | con no comments
Archivado en: ,
VS2010 - Soporte HTML5, CSS3

Pues eso que Visual Studio no se quiere quedar atras en esta frenética carrera por los nuevos estandares y ya tenemos disponible para descargar la primera revisión de los estandares web para Visual Studio 2010 y Visual Studio Expres 2010 SP1 .

En esta primera versión de la actualización, el equipo de VS se ha centrado en actualizar el soporte a HTML5 , agregar soporte a CSS 3 y añadir nuevas API para el intellisense de JavaScript. El plan es hacer una versión cada 3 meses para mantener Visual Studio actualizado con los cambios realizados por el W3C.

Más información en el blog de Scott Hanselman o desde el blog de VS y la actualización desde MSDN .

 

Cross-Posting : http://mrubino.net 

 

 

Material [Webcast] La web desde cero II – JQuery

Ya tenéis disponible el webcast y todo el matería que utilicé en la sesión sobre JQuery, para todo aquel que no pudo asistir en directo lo puede ver ahora gravado y descargar el proyecto para probar las demos.

 Os lo podéis descargar desde :

streaming Material streaming WebCast streaming PPT

 

 

Cross-Posting : http://mrubino.net