google analytics

jueves, 16 de agosto de 2012

Visual Studio 2012 tambien disponible para descarga


Al igual que Windows 8 RTM,  el día de ayer, Microsoft puso a disposición la última versión de Visual Studio 2012 completa para ser descargada. Como comenté en el post anterior, está disponible para los suscriptores de MSDN y TechNet,  y para los que no !!..tenemos la prueba de 90 días :D!

He aquí el enlace:

http://www.microsoft.com/visualstudio/11/es-es/downloads

A descargar y disfrutar =) !!!.. Pronto más detalles !

Un saludo,
Jhon Marmolejo


Windows 8 RTM ya disponible para descargar


Pues tal como había dicho Microsoft, a partir de ayer -domingo 15 de agosto- ya está disponible Windows 8 RTM para descargar para los suscriptores de pago de MSDN y también para los de TechNet.

Pero también hay buenas noticias para los que no tenemos el lujo de poder contar o tener la pasta =P con una suscripción de estas, Microsoft nos da la posibilidad de poder descargar esta versión por 90 días y trastear con ello =), está claro que lo más recomendable es instalarlo en una máquina virtual ya que a los 90 días dejará de funcionar.

Aquí tienes el enlace de descarga:

http://msdn.microsoft.com/en-US/evalcenter/jj554510.aspx

Ya mostraré los pasos de la instalación, a descargar todos =) !!

Saludos,
Jhon Marmolejo

miércoles, 1 de agosto de 2012

GhostDoc, documentando código

A quien no le ha pasado que muchas veces le toca revisar el código de otra persona y no se entera de nada... es más debo de reconocer que a mi me ha pasado que hubo momentos en que no reconocía que hacia mi propio código xD, pero esto son cosas del pasado y que uno va aprendiendo a punta de collejas =)... 

Yo sé que es una tarea tediosa, pero felizmente hay herramientas que nos facilitan la vida como GhostDoc, una herramienta que permite generar documentación de tus clases y métodos con solo apretar una combinación de teclas ...claro que tienes que seguir algunas reglas para que la documentación generada sea coherente.

Lo primero, descargamos Ghostdoc desde aqui -> http://submain.com/download/ghostdoc/

Te pide que pongas tu email, lo pones y a descargar. Una vez descargado, descomprimes el archivo y ejecutas el exe que hay dentro para empezar la instalación. Una vez finalizada la instalación cuando abras el Visual Studio ( en mi caso la versión 2010) te saldrá la siguiente ventana ...


Esta ventana te da la opción de elegir la combinación de teclas que pulsarás cuando quieras generar la documentación de un método, propiedad, cabecera de clase, etc, etc .... con GhostDoc, si se fijan por defecto la combinación de teclas asignadas es Ctrl+Shift+D,  yo estoy acostumbrado a usar esta pero si no te gusta pues eliges otra opción de la lista desplegable y pulsas el boton Assign o si no te apetece configurarlo en este momento le das a Skip.

Luego de esto te pregunta si quieres crear una nueva configuración, como es la primera vez que la instalo en este ordenador le doy a crear.


Y listo ya tenemos instalado GhostDoc en nuestro VS =) !


Ahora probemos en el código. Como ejemplo vamos a crear una clase 'Customer' con un par de propiedades y un método, que sería algo como esto:

    
   public class Customer
   {
        public int Id { get; set; }

        public string Name { get; set; }

        public void SaveCustomer(int customerId, string customerName)
        {
          //blablabla  
        }
   }

Ahora seleccionamos  la propiedad Id y presionamos Ctrl+Shift+D y veamos el resultado:
 
        /// 
        /// Gets or sets the id.
        /// 
        /// 
        /// The id.
        /// 
        public int Id { get; set; }

Lo mismo hacemos con la propiedad Name y el método SaveCustomer, recuerda que tienes que seleccionar completamente el nombre de la propiedad ó metodo y pulsar Ctrl+Shift+D. Al final el resultado sería el siguiente:

public class Customer
  {
      /// 
      /// Gets or sets the id.
      /// 
      /// 
      /// The id.
      /// 
      public int Id { get; set; }
 
      /// 
      /// Gets or sets the name.
      /// 
      /// 
      /// The name.
      /// 
      public string Name { get; set; }
 
 
      /// 
      /// Saves the customer.
      /// 
      /// The customer id.
      /// Name of the customer.
      public void SaveCustomer(int customerId, string customerName)
      {
        //blablabla  
      }
  }

Como puedes ver, hasta documenta tambien los parámetros de un método. La regla principal para que la documentación generada sea coherente es que el nombre del metodo sea un verbo o un verbo seguido de un sustantivo y la propiedad un nombre válido. La documentación que genera GhostDoc por defecto es en inglés, aunque existen extensiones para generar documentación en español e italiano aunque no son tan completas como en inglés. Espero les sea útil, hasta la próxima =) !!

Un saludo,
Jhon Marmolejo

martes, 24 de julio de 2012

Log4Net en C#

Siempre es importante tener logs en nuestras aplicaciones, sobretodo en entornos cerrados donde tengamos accesos limitados o cuando ocurre una excepción inesperada que nos pone los pelos de punta y no sabemos por donde atacar. Hace ya bastante tiempo vengo usando Log4Net y bueno como parece que ahora si le estoy dedicando tiempo al blog y tuve un pequeño problema hace poco que comentaré en el siguiente post, quise escribir sobre esto.

Lo primero, descargarse la release desde aquí:  http://logging.apache.org/log4net/download_log4net.cgi

Seleccionamos uno de los archivos binarios, descargamos, descrompimimos el archivo zip y vamos a la carpeta  "\bin\net\4.0\release"  en el cual encontraremos el archivo log4net.dll  y lo añademos como referencia a nuestro proyecto.

Lo siguiente es modificar el web.config. Añadimos la siguiente sección dentro del <configsections> del web.config:

    
.... .... ....
Lo siguiente es añadir la parte de la configuración para el log4net. En nuestro caso sólo queremos escribir sobre un archivo, pero aquí tienes muchas más opciones de configuración.

 
    
      
      
      
      
      
       
       
      
        
      
    
    
      
      
    


Dentro del appender ponemos la configuración necesaria sobre como queremos que se escriba nuestro log, esta claro que podemos tener varios appenders, por ejemplo uno para que escriba un archivo de texto y otro para que guarda en base de datos.

Luego desde la parte de root señalamos el nivel del Log, que pueden ser INFO, DEBUG, WARNING o ERROR y tambien indicamos los appenders que usará nuestro log.

Por último vamos al Global.asax, importamos el
using log4net;

Añadimos el siguiente código
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

Y en el Application_Start() añadimos lo siguiente:
protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
}

Ya tenemos todo configurado para usar nuestro log, a partir de ahora, dependiendo del nivel en el que hallas seteado tu log, este escribirá en el archivo de texto, bd o como sea que lo hayas configurado.

Aqui les dejo un ejemplo simple para escribir en el log cuando ocurra alguna excepción:
public static void GenerandoError()
        {
            try
            {
                int numero = 53454534543543534324;
            }
            catch (Exception e)
            {
                Log.Error(e.Message, e);
            }
        }
Espero les sea útil, hasta la próxima :D!

Primeros pasos con Visual Studio 2012: Instalación

Si, si  !! ... a lo mejor ya voy un poco tarde con esto =) , pero ahora que dispongo con un poco más de tiempo en el trabajo me puse a descargar el RC de Visual Studio 2012 que lo puedes obtener desde aquí:

http://www.microsoft.com/visualstudio/11/es-es/downloads#ultimate

En mi caso, descargué la versión ultimate, pero si quieres otra versión tambien la puedes encontrar. Al terminar de descargar y ejecutar sale la siguiente ventana:


Aceptas los términos y las condiciones y la das a 'Next' apareciendo la siguiente ventana:

Esta ventana muestra el listado de las herramientas que puedes instalar, como muchas de estas cosas son nuevas para mi le dí a instalar todo y poco a poco iremos investigando de que se trata cada una de estas nuevas herramientas y las mejoras de VS 2012.

Una vez finalizada la instalación, ya tenemos el entorno de Visual Studio instalado y listo para empezar =) 



Proximamente mis primeros pasos con esta nueva versión de .Net =)

jueves, 19 de julio de 2012

ASP .NET libre???

Pues si, hace tiempo ya lo había escuchado, pero así como a mi, seguro que a mucha gente en ese momento les habrá sorprendido para luego olvidarse de esto. Desde 2009 ASP.NET MVC Framework es software libre. A principios de abril de 2009 se empezo a distribuir el código fuente de ASP.NET MVC con licencia MS-PL, un modelo de licencia aprobado por la OSI(Open Source Initiative) que permite el uso del software en aplicaciones comerciales y no comerciales.

El código fuente de ASP.NET MVC se puede descargar en Codeplex, asi que gente del mundo del software libre, aqui tienen otra alternativa que les puede ser interesante.

Hasta la próxima

viernes, 13 de julio de 2012

JSON y MVC 3

Supongamos que tenemos una aplicación web y necesitamos recuperar valores de servidor o actualizar a una BD desde la parte del cliente, para este caso podríamos usar JSON. Con JSON podemos ir al servidor de una manera síncrona ó asíncrona y recuperar cualquier valor, tanto como variables y objetos o efectuar cualquier operación que se pueda realizar del lado del servidor. Eso si tenemos que tener cuidado al querer traer objetos con mucha información ya que JSON funciona muy bien, pero si te quieres traer una lista de 2000 objetos (por poner un número =P )...vas a sufrir, para ese caso podrias hacer el uso de un PartialView en MVC por darte un ejemplo !

Pues al lío !  Lo primero que tenemos que hacer es importar Jquery en nuestra página:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>

En mi caso tengo el 'jquery-1.5.1.min.js' dentro de la carpeta Scripts y estoy usando MVC 3 con RazorEngine pero si estas usando un webForm puedes hacerlo de la siguiente manera:

<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>



A continuación llamamos a la función JSON. En mi ejemplo mostraremos un 'alert' con un mensaje que será traido desde el servidor cada vez que se inicializa la página.


Para los que no conocen jquery, eh aquí la explicación:
    (function ($) {
        FunctionJson();
    })(jQuery);
Llamamos a 'function ($)' que es una función que se ejecuta cada vez que se inicializa la página. En este ejemplo, esta función llama a la función FunctionJson en la cual está la llamada json:
   
           $.ajax({
                async: false,
                url: '/Home/RetornaValores',
                dataType: 'json',
                data: { },
                type: "POST",
                cache: false,
                success: function (data) {
                    if (data.ok) {
                        alert(data.mensaje);
                    }
                    else {
                        alert(data.mensaje);
                    }
                }
            });
Donde la llamada json tiene los siguientes parámetros:

  • async: que indica si la función va a ser asíncrona o no.
  • url: donde se indica la url que tiene el webMethod (para un webForm) o el controlador (para MVC).
  • data: aqui se establecen los parámetros si la función del webMethod o del controlador tiene parámetros.
  • type: se establece el tipo de llamada 'POST' o 'GET'.
  • cache: si la función almacenará en caché.
  • success: devuelve el resutado de la operación.

En nuestro caso la funcion JSON llama a la función 'RetornaValores' del controller 'Home'
    public JsonResult RetornaValores()
        {
            try
            {
                return Json(new { ok = true, mensaje = "Hola Mundo" }, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                return Json(new { ok = false, mensaje = ex.Message }, JsonRequestBehavior.AllowGet);
            }
        }
La función devuelve un objeto Json en el cual le podemos setear los valores que queramos. Si se fijan tambien podriamos manejar los errores de está manera. El resultado final sería el siguiente:


Esta claro que se puede hacer lo que quiera dentro de la función RetornaValores y devolver lo que se nos de la gana, pero siempre teniendo cuidado del tiempo de respuesta y el peso que se quiere devolver a la parte cliente. Nos vemos !!