google analytics

viernes, 5 de octubre de 2012

Primer vistazo con TFS Preview

Como sabrán muchas compañías están apostando fuerte en la nube, y como estamos en la época del Cloud Microsoft está ofreciendo muchas versiones de sus productos conocidos en la nube. El TFS no iba a ser la excepción y aquí tenemos un pequeño introductorio.

Lo primero que tenemos que hacer es suscribirnos al servicio con una cuenta de Window Live Id, decir que esta versión de TFS aún esta en fase Beta asi que cuidadito con esto =).

Nos dirigimos hacia esta página:

https://tfspreview.com/en-us/ ,buscamos la parte que diga "get started for free" y le damos click. Esta nos redirige a la siguiente pantalla:


ponemos cualquier nombre que nos apetezca a nuestra cuenta, le damos click y despues de unos segundos ya tenemos montado nuestro TFS en la nube.


A partir de aquí ya podemos crear nuevos proyectos, subir código, tambien hay una parte donde podemos descargar el código necesario para poder utilizar TFS Preview desde nuestros entornos de desarrollo.

En el próximo post explicaré como usar TFS Preview desde Visual Studio 2010. Hasta la próxima.

Jhon Marmolejo

lunes, 17 de septiembre de 2012

viernes, 14 de septiembre de 2012

Crea tu propia plantilla de proyecto en Visual Studio 2010

Hola, a que te has dado cuenta que muchos de los proyectos en Visual Studio que empiezas, ya sea en tu trabajo o incluso para ti mismo, siempre tienen al menos al principio las mismas cosas como una clase Common, a lo mejor unos estilos o controles de usuario que siempre se utilizan, o a lo mejor distintos helpers ya programados anteriormente y como hasta ahora funcionan quieres reutilizarlo.

Entonces me pregunto, ¿por qué cada vez que iniciamos un nuevo proyecto tenemos que hacer casi un copy/paste de estas cosas que se repiten en todos los proyectos?, la respuesta es fácil, no tenemos un template de proyecto personalizado. Entonces a por ello.

Crear un template de proyecto es sencillo. Primero abrimos el Visual Studio, en esta caso la versión 2010, y creamos un proyecto cualquiera de acuerdo a tus necesidades. En mi caso en mi trabajo ultimamente estamos haciendo muchos proyectos usando ASP NET MVC 3 asi que haré el ejemplo con esto =).


El nombre y la ruta del proyecto es lo de menos ya que luego esto se podrá cambiar. Damos Ok y tenemos un  proyecto de ASP .NET MVC 3 como cualquier otro.


A partir de aquí podemos agregar, eliminar, personalizar, hacer lo que nos de la gana con el proyecto. En mi caso eliminaré de la parte del Modelo la clase AccountModels.cs, de la parte de las Vistas quitaré toda la Carpeta Account y de la parte de Controllers quitare la clase AccountController.cs.

Adicionalmente creare una clase Persona en el modelo, tambien un controlador y vista para esta clase. El proyecto quedaría de esta manera.


He resaltado lo nuevo que he agregado. Ahora nos aseguramos de que esto compile. Si todo va bien, nos vamos al menú File / Export Template le damos click y luego next...



Al final sale esta ventana, donde podemos personalizar el nombre, la descripción, imagen previa e ícono del template. Asi como tambien te da la posibilidad de importar directamente la plantilla a Visual Studio y abriendo el Explorador de Windows para indicarte donde se guardará la plantilla como .zip generado.




Le damos a Finish y ya tenemos nuestra plantilla creada =) ... Ahora cada vez que vayamos a Visual Studio, le damos a nuevo proyecto, la encontraremos y la podemos usar :D!


Y podemos usarla como cualquier otro proyecto, cambiarle el nombre, añadir a un control de código fuente etc, etc. El resultado es el siguiente :


A que mola :D:D!!.. esto nos puede reducir el tiempo considerablemente, espero les sea útil, nos vemos

Jhon Marmolejo

jueves, 13 de septiembre de 2012

Diagramas de Secuencia en Visual Studio 2010

Cuantas veces nos ha tocado elaborar diferentes diagramas que vienen a formar parte del documento técnico para entregar un proyecto. Y como todos saben ,a lo mejor por ahí alguno me resondra, es un coñazo, pero eso no quita que sea necesario. Felizmente Visual Studio 2010, la versión Ultimate, nos ofrece realizar los Diagramas de Secuencia de una manera muy fácil y rápida. El que no sepa lo que es un diagrama de secuencia puede revisarlo aquí.

Lo único que tenemos que hacer es posicionarnos en el método sobre el cual generaremos el diagrama y le damos click derecho y damos click a la opción  "Generate Sequence Diagram...."



Luego nos sale una ventana donde podemos personalizar diferentes cosas del diagrama, como por ejemplo el número de niveles de referencias que tendrá, si buscaremos dll's externas y tambien podemos excluir cosas que no nos interesan como las propiedades o eventos.



Luego simplemente le damos aceptar, esperamos que se genere todo el diagrama y ya los tenemos =) 



Ya luego toca revisarlo un poco, si quieres tambien puedes modificarlo desde aquí, simplemente una gran ayuda de Visual Studio :D!

Espero que les sea útil, un saludo !

Jhon Marmolejo

Error instalando Visual Studio 2010

Hola, he estado un poco liado con el trabajo y no he podido aportar como me hubiera gustado, aún sigo liado pero hoy justo me pasó algo raro en el trabajo. Necesitaba instalar la versión Ultimate de Visual Studio 2010 ya que necesitaba generar unos diagramas de secuencia y esto fue lo que paso.



Lo primero que pense es que seguro se debía a las diferentes versiones de Visual Studio que tenía instaladas en el servidor, pero nooooo !!...buscando y buscando por ahi vi que decían que este error se daba cuando querias instalar Visual Studio desde un disco o una ISO. Asi que copié el archivo a mi disco duro y ejecute y tatararannnnnnnn !!...ya lo tenemos


Ahora que ya lo tengo en el próximo post les enseñare como crear diagramas de secuencia con Visual Studio 2010, es necesario tener la versión Ultimate.

Hasta luego!!!

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 !!

viernes, 6 de julio de 2012

IEnumerator usando .MoveNext() y .MoveCurren()

Jugando la otra vez a hacer iteraciones me encontre con la interfaz IEnumerator la cual tienes dos funciones que me parecieron interesantes y he aquí el post.

Las funciones .MoveNext() y .MoveCurrent() sirven para hacer una iteración dentro de una colección genérica, .MoveNext() nos indica a través de un booleano si la colección tiene más elementos para recorrer y la función .MoveCurrent() me devuelve el item actual dentro de la iteracíón.

He aquí el código en una aplicación de consola:
static void Main(string[] args)
        {
            Console.WriteLine("Ingrese una secuencia de caracteres separadas por comas...");
            var readLine = Console.ReadLine();

            if (!string.IsNullOrEmpty(readLine))
            {
                string[] valores = readLine.Split(',');

                IEnumerable characters = readLine.Split(',');

                using (IEnumerator enums = characters.GetEnumerator())
                {
                    while (enums.MoveNext())
                    {
                        Console.WriteLine(enums.Current);
                    }
                }
            }

            Console.ReadKey();
        }

Y el resultado es el siguiente :


Se pudo haber hecho con un foreach??? ... ps si =)... pero aquí tienes otra forma de hacerlo =)

Leer acentos con StreamReader

Ya que en el post anterior mostrábamos como leer archivos en c#, a veces se da el caso que ese fichero de texto tenga palabras con tildes que a veces se muestran de manera incorrecta al procesarlos, para eso tomamos el ejemplo del anterior post y lo modificamos un poco:

private void ProcesarFichero()
{
            if (this.fuFicheros.HasFile)
            {
                string filename = this.fuFicheros.PostedFile.FileName;

                if (filename.Substring(filename.LastIndexOf('.')).Trim().ToUpper() == ".CSV")
                {
                    string line;
                    StringBuilder log = new StringBuilder();
                    Stream stream = this.fuFicheros.FileContent;
                   
                    using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.Default,
 false))
                    {
                        while (!string.IsNullOrEmpty(line = sr.ReadLine()))
                        {
                            log.AppendLine(line);
                        }
                    }
                }
            }
        }


Si se fijan en la línea número 13, sólo hemos llamado a otra sobrecarga de la clase StreamReader.

                    using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.Default, false))


De está manera nos aseguramos que leemos el archivo de manera correcta sin caracteres raros. Espero les haya servido.


Leyendo ficheros de texto en c#

Muchas veces nos hemos visto con la necesidad de leer un fichero y procesar la información que este contiene. Para esta tarea utilizo la clase StreamReader.

A continuación vamos a leer un ejemplo .csv a traves del control FileUpload de ASP .NET y procesar sus datos, para esto hacemos lo siguiente:

Importamos la libreria System.IO.
using System.IO;

Y añadimos este código
        
private void ProcesarFichero()
{
            if (this.fuFicheros.HasFile)
            {
                string filename = this.fuFicheros.PostedFile.FileName;

                if (filename.Substring(filename.LastIndexOf('.')).Trim().ToUpper() == ".CSV")
                {
                    string line;
                    StringBuilder log = new StringBuilder();
                    Stream stream = this.fuFicheros.FileContent;
                   
                    using (StreamReader sr = new StreamReader(stream))
                    {
                        while (!string.IsNullOrEmpty(line = sr.ReadLine()))
                        {
                            log.AppendLine(line);
                        }
                    }
                }
            }
        }

Donde fuFicheros es el nombre del control FileUpload. Lo primero que hacemos es verificar si este control contiene un fichero seleccionado, luego obtenemos el nombre del archivo y verificamos que tenga la extensión del archivo sea la adecuada (en nuestro ejemplo queremos que sea un archivo .csv).  Finalmente hacemos uso del StreamReader y lo recorremos mediante un while hasta que no tengamos una línea más que leer. En mi caso almacené cada línea del fichero en un StringBuilder.

Nota: Esto de verificar la extensión del archivo también se puede hacer de la siguiente manera: 
if (this.fuFicheros.PostedFile.ContentType == "application/vnd.ms-excel")
{
//
}

En este caso para los archivos .csv el contentType es el que se muestra arriba, pero me di cuenta que al tener abierto ese archivo (desde excel por ejemplo) cambiaba el contentType por lo cual decidí verificar la extensión del archivo como mostré mucho más arriba (si tienen alguna otra mejor manera de hacerlo sería genial que me lo indiquen).


Espero les sirva de ayuda =)


Esperemos que ahora si =) !!

Mi primer blog     Tanto tiempo deseando tener un blog y tantas veces postergándolo, espero esta vez si pueda cumplir con esta tarea pendiente que llevo hace tiempo. Espero que este blog les pueda servir de mucha ayuda, trataré de postear problemas comunes del día a día en el trabajo y también temas interesantes acerca de desarrollo de software Los temas principales de este blog serán acerca de Visual Studio .Net, asi como tambien  de Asp .Net MVC, Jquery, TFS y nuevas herramientas que vaya usando en el camino. Espero que les sea de su agrado =).


 Jhon Marmolejo