Archivo

Archive for the ‘Computación’ Category

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.

Anuncios

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

 

 

Sobrescribir texto de archivos Resx o Sobrescribir ResourceManager

octubre 20, 2015 Deja un comentario

Cuando usamos archivos resx en .net sea cual sea la aplicación tenemos una utilidad que nos descomplica la vida para poder tener aplicaciones que soporten múltiples idiomas y traducibles, esta ultima se dificulta un poco ya que no tenemos un método para sobrescribir el GetString que tiene el ResourceManager por esto solo nos queda crear un ResourceManager propio y reemplazarlo en el archivo Resx en el designer:

Ejemplo de un ResourceManager personalizado:

public class LocalResourceManager : ResourceManager
{
public string Name { get; set; }

public LocalResourceManager(string name, Assembly culture)
: base(name, culture)
{
this.Name = name.Replace(“AssemblyName.Localization.”, string.Empty);
}

// override
public override string GetString(string name)
{
// custom code
return base.GetString(“Hello”) + “_Override”;
}

public override string GetString(string name, CultureInfo culture)
{

return base.GetString(name, culture) + “_Override”;
}
}

 

Luego de crearlo podemos reemplazar entonces el ResourceManager original:

 

/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Resources.Tools.StronglyTypedResourceBuilder”, “4.0.0.0”)]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class ResourceDemo {

private static global::ResourceAppDemo.LocalResourceManager resourceMan;

private static global::System.Globalization.CultureInfo resourceCulture;

[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(“Microsoft.Performance”, “CA1811:AvoidUncalledPrivateCode”)]
internal ResourceDemo() {
}

/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::ResourceAppDemo.LocalResourceManager ResourceManager
{
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::ResourceAppDemo.LocalResourceManager temp = new global::ResourceAppDemo.LocalResourceManager(“ResourceAppDemo.ResourceDemo”, typeof(ResourceDemo).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}

 

EL CÓDIGO COMPLETO EN EL SIGUIENTE LINK:

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