Archivo

Archive for the ‘Computación’ Category

Jenkins con .Net – guía completa

diciembre 30, 2017 Deja un comentario

Jenkins es un servidor opensource de integración y automatización hecho en java que soporta Java, Node.js y .Net entre otros.

En esta guía vamos a ver como configurar desde 0 Jenkins para .Net

Primero vamos a ir a la pagina de Jenkins realizar la descarga para windows y seguir el paso a paso

https://jenkins.io/download/

1

2

3

4

En este punto debería aparecer una nueva ventana en el navegador en http://localhost:8080/,  si al principio no carga no te preocupes espera un minuto y vuelve a recargar que seguro se esta levantando el servicio.

5

Para iniciar Jenkins nos pide una contraseña que se encuentra en la ruta indicada en rojo solo es copiar y pegarla.6

Al instalar podemos seleccionar la opción personalizada para seleccionar el plug-in MSBuild inmediatamente.

7

8

Creamos el primer usuario admin con los datos requeridos.

9

Después de completar la instalación así luce la aplicación la primera vez que entramos, los Jobs van hacer las herramientas que vamos a utilizar para automatizar un proceso

10

Debemos inmediatamente ir “Manage Jenkins” a configurar nuestro plugin MSBuild, ingresamos la ruta donde se encuentra el .exe de MSBuild.

MsbuildConfig.png

Debemos llenar los campos “Project name” y dentro de “Source Code Management”, Repository URL y luego en la seccion Build debemos usar la opcion Ad Build Step y agregar 2:

MsbuildConfigProject.png

Primero debemos ejecutar el Batch para restaurar los paquetes de la aplicación, este es un ejemplo con mi proyecto que se llama “WebApiDemoJenkins” es necesario descargar Nuget.exe

https://www.nuget.org/downloads

En mi caso lo tengo almacenado en la carpeta “C:\Users\MTEHERAN\Downloads”

Y lanzo el comando restore para restaurar los paquetes en el proyecto y el proyecto de pruebas relacionado

cd "%WORKSPACE%\WebApiDemoJenkins\"
C:\Users\MTEHERAN\Downloads\nuget.exe restore "%WORKSPACE%\WebApiDemoJenkins\WebApiDemoJenkins.csproj" -PackagesDirectory ..\packages
C:\Users\MTEHERAN\Downloads\nuget.exe restore "%WORKSPACE%\WebApiDemoJenkins.Tests\WebApiDemoJenkins.Tests.csproj" -PackagesDirectory ..\packages

En la sección de Build a Visual Studio project solo seleccionamos la versión de Build que configuramos previamente, debe quedarnos algo como esto:

MsbuildConfigProject2.png

Luego podemos ir al proyecto y ejecutar el build, si este es exitoso nos va marcar un icono azul, sino se verá un icono Rojo donde podemos dar click para ver el detalle de la ejecución

projectBuild.png

Para la pruebas Automatizadas vamos a usar el plugin MSTestRunner plugin

vamos a “Manage Jenkins” -> “Manage Plugins” y vamos buscar e instalar MSTestRunner

Debemos reiniciar el servicio de Jenkis y luego de esto y vamos directo a “Global Tool” para configurar el Plugin

MSTestGuide

Editamos el proyecto y agregamos en la sección de build una sección para la ejecución de las pruebas

MSTestGuide2

En este caso no podemos usar la variable de entorno %WORKSPACE% debemos usar la ruta completa, es una buena practica cambiar la ruta del workspace a una por fuera de Program Files. El archivo Output.trx veremos el resultado de la ejecución de las pruebas

Podemos ejecutar de nuevo el “Build now” y debería compilar el proyecto y las pruebas

.Net Core

.Net core se facilitan las cosas puesto que a través de comandos podemos restaurar los paquetes y compilar solo teniendo instalado .net, entonces en Jenkins agregamos un build con Add Build Step “Execute windows batch”

cd "%WORKSPACE%\WebApiCore\"
dotnet restore
dotnet build --configuration "Release"

netcoreJenkins.png

Ejemplo del resultado que veremos:

Testcore

Anuncios

MDE.Net comunidad .Net en Medellin

diciembre 3, 2017 Deja un comentario

MDE.Net es la comunidad .Net en Medellin que realiza meetups mensuales con temas relacionados a tecnologias Microsoft .

hasta el momento todos los meetups se han llevado acabo en Ruta N medellin  https://www.rutanmedellin.org/es/

Complejo Ruta N Calle 67 Nº 52-20
Piso 1 sala 1 Torre A

Somos 4 orgnizadores que trabajamos en diferentes empresas del sector y nos encargamos de logistica en cada evento

9284ef22-6ddd-46be-8666-37b6537d4626

Tenemos un meetup oficial en que pueden inscribirse para el evento

MDE.NET

Medellín, CO
558 Miembros

Este es un grupo para todos los desarrolladores y entusiastas del desarrollo que usan o desean aprender .Net y tecnologías Microsoft en general. Te invitamos a participar de n…

Check out this Meetup Group →

Nuestras redes sociales:

https://www.facebook.com/mdedotnet/

https://twitter.com/mdedotnet

 

El pase de diapositivas requiere JavaScript.

Métodos útiles en Enumerable

noviembre 26, 2017 Deja un comentario

Enumerable es una clase en .Net que hace parte del paquete o namespace de Linq ( System.Linq) y que ofrece métodos muy útiles para el manejo de colecciones y listas, que en ciertas ocasiones dejamos pasar o no los usamos adecuadamente.

Supongamos que tenemos la siguiente lista para el ejemplo:

 List<Movie> lmovies = new List<Movie>();
 lmovies.Add(new Movie() { Tittle = "Titanic", Genre = "Drama", Year = 1998 });
 lmovies.Add(new Movie() { Tittle = "Avengers", Genre = "Action", Year = 2012 });
 lmovies.Add(new Movie() { Tittle = "Annabelle", Genre = "Terror", Year = 2014 });

Max

el método Max permite encontrar el máximo de una lista de registro de cualquier tipo numérico (decimal, float, int etc…)

 //Get the max value on the list by a numeric field
 var maxmovie = Enumerable.Max<Movie>(lmovies, c => c.Year);
 Console.WriteLine("Demo Max");
 Console.WriteLine(maxmovie); //Result 2014

Min

el método Min permite encontrar el mínimo de una lista de registro de cualquier tipo numérico (decimal, float, int etc…)

 //Get the min value on the list by a numeric field
 var minmovie = Enumerable.Min<Movie>(lmovies, c => c.Year);
 Console.WriteLine("Demo Min");
 Console.WriteLine(minmovie); //result 1988

Repeat 

Repeat nos permite crear una copia de cualquier tipo de dato que le digamos, facilitandonos el proceso de pruebas.

// create N numbers of copy of an object 
 var listmovies = Enumerable.Repeat<Movie>(new Movie() { Tittle = "Movie Example" }, 5);
 Console.WriteLine("Demo Repeat");
 
 foreach (var item in listmovies)
 {
 Console.WriteLine(item.Tittle); 
 }

 

Sum

El método Sum permite sumer todos los datos de una colección de tipo numérico

 // sum a collections of numbers on a field
 var sumMovie = Enumerable.Sum<Movie>(lmovies, c => c.Year);
 Console.WriteLine("Demo Sum");
 Console.WriteLine(sumMovie);

 

Concat

Permite funcionar o concatenar 2 listas en una sola, es una opción muy útil ya que podemos omitir hacer ciclos e insertar los datos uno a uno.

// mix 2 colecction of the same type in only one collection 
 var lstconcat = Enumerable.Concat<Movie>(lmovies, listmovies);
 Console.WriteLine("Demo Concat");

foreach (var item in lstconcat) 
 Console.WriteLine(item.Tittle);

Average

Calcula un promedio de una lista de datos numéricos

// caculate an average from a collection of numbers
 var averageMovie = Enumerable.Average<Movie>(lmovies, c => c.Year);
 Console.WriteLine("Demo Average");
 Console.WriteLine(averageMovie);

Except

Permite devolver una lista omitiendo una lista de elementos contenidos en una segunda lista

 //return a list except the elements on the exception
 var lstExcept = Enumerable.Except<Movie>(lstconcat, listmovies);
 Console.WriteLine("Demo Except");
 foreach (var item in lstExcept)
 Console.WriteLine(item.Tittle);

 

La lista completa de métodos esta en a documentación oficial de microsoft

https://msdn.microsoft.com/en-us/library/system.linq.enumerable_methods(v=vs.110).aspx

 

DEMOS:

https://github.com/Mteheran/EnumerableDemos

Definir página inicial en ASP.NET Core

marzo 29, 2017 Deja un comentario

Para definir una pagina por defecto en ASP.Net core simplemente tenemos que cambia la ruta por defecto del controlador

 app.UseMvc(routes =>
 {
 routes.MapRoute(
 name: "default",
 template: "{controller=[controller]}/{action=[action]}/{id?}");
 });

Si deseamos especificar una pagina HTML debemos usar el metodo DefaultFiles como muestra en el ejemplo

 DefaultFilesOptions DefaultFile = new DefaultFilesOptions();
 DefaultFile.DefaultFileNames.Clear();
 DefaultFile.DefaultFileNames.Add("MyPage.html");
 app.UseDefaultFiles(DefaultFile);
 app.UseStaticFiles();

SourceTree uso de etiquetas y como esconder o proteger cambios

SourceTree – partes de la aplicación y como clonar un repositorio

junio 2, 2016 1 comentario

Crear un administrador de cache usando cacheadapter

octubre 23, 2015 1 comentario

Utilizar cache en nuestra Api o en nuestro componentes de datos es muy importante ya que es muy común que existan cientos de datos que son consultados constantemente por el usuario y que no se modifican mucho en el tiempo entonces para poder descongestionar la base de datos podemos usar un servidor de cache que responde mas rápido a cualquier requerimiento de datos.

cacheadapter es un nuget en . net (https://www.nuget.org/packages/Glav.CacheAdapter/)  que nos permite administrar de manera fácil y distintos modos para administrar el cache:

1. In Memory cache (config setting=”memory”)
2. ASP.NET web cache (config setting=”web”)
3. Distributed AppFabric cache. (config setting=”AppFabric”)
4. Distributed memcached cache. (config setting=”memcached”)

 

Invocando entonces  nuestro nuget podemos crear un método para guardar y otro para obtener información que se encuentre en Cache sin importar en que servidor se este guardando:

internal const int INTIME = 3;

/// <summary>
/// Get the data object with identifier
/// </summary>
/// <param name=”strKey”>identifier of the data</param>
/// <returns>return the data</returns>
public static object Get(string strKey)
{
var cacheProvider = AppServices.Cache;

var data = cacheProvider.Get<object>(strKey, DateTime.Now.AddSeconds(INTIME), () => { return null; });

return data;
}

/// <summary>
/// Set in the cache server the value
/// </summary>
/// <typeparam name=”T”>Type of data to Set</typeparam>
/// <param name=”strKey”>identifier of the data</param>
/// <param name=”obj”>object data</param>
/// <param name=”intTimeExpiry”>Time in seconds of Expiry data Defaul:86400 = one day</param>
/// <returns></returns>
public static bool Set<T>(string strKey, T obj, int intTimeExpiry = 86400)
{
try
{
var cacheProvider = AppServices.Cache;

cacheProvider.Add(strKey, DateTime.Now.AddSeconds(intTimeExpiry), obj, null);

return true;
}
catch (Exception)
{
return false;
}
}

 

En el siguiente Link les dejo el codigo donde pueden encontrar el ejemplo mas completo y ver el CacheManager que cree a partir de cacheAdapter espero les sirva:

https://onedrive.live.com/redir?resid=261445BD18D3146D%21121