Crear un administrador de cache usando cacheadapter

octubre 23, 2015 Deja un 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

 

 

Xamarin desde 0 – 3 aplicaciones multilenguaje

marzo 14, 2015 Deja un comentario

Las aplicaciones multilenguaje en Xamarin se crean exactamente igual que android es sumamente sencillo y solo necesitamos enlazar nuestros textos a los recursos de datos:

2015-03-14_1213

 

 

Luego simplemente creamos la carpeta de valores para el idioma en particular que queremos soportar por ejemplo para español se usa “es” para frances se usa “fr”:

 

2015-03-14_1221

 

 

Xamarin studio nos da la posibilidad de probar directamente en la vista previa los cambios de idioma sin necesidad de ejecutarlo en el emulado:

2015-03-14_1225

 

 

2015-03-14_1226

 

 

“Ojear la definición de un método o una clase” nueva funcionalidad Visual 2013

Aveces necesitamos navegar entre cada una de las referencias de clases que tenemos en el código para ir a la definición y detectar algún error que tengamos o cambiar algo en particular en los métodos de la clase.

Ahora a parte de la opción “Go to Definition” tenemos la opción “Peek Definition” con la combinación de teclas Alt + F2 Con la cual podremos ver el codigo sin salir de la hoja donde estamos e incluso hacer cambios en tiempo real

2015-03-05_2241_001

Activar “Map Mode” para la barra vertical de desplazamiento en Visual 2013

En Visual 2013 podemos activar un mini mapa de nuestro código para hacer el desplazamiento y ver una previsualizacion del código que deseamos acceder es bastante útil y dinámico y permite mejorar la navegación por le código.

No viene por defecto en visual studio para activarlo debemos seguir los siguientes pasos:

2015-03-05_2241

2015-03-05_2241_001

2015-03-05_2245

Escala salarial o remuneración de profesionales en Colombia 2015

febrero 27, 2015 2 comentarios

Xamarin desde 0 – 2 creando un “Hola mundo”

febrero 6, 2015 Deja un comentario

Luego de tener instalado xamarin studio fácilmente podemos crear nuestro primer “Hola Mundo” en un proyecto Android:

2015-02-06_1144

Cuando entramos por primera vez es necesario Configurar el emulador y los SDK con los que vamos a trabajar para ello entramos en la siguiente opción:

2015-02-06_1207

Podemos instalar y configurar las versiones de android con las que queremos trabajar tal como en Eclipse:

2015-02-06_1158

Luego podemos instalar el emulador para las versiones con las que estemos trabajando:

2015-02-06_1146

2015-02-06_1150

El proyecto automáticamente nos crea un layout con el texto “Hello World, Click Me!”  para las pruebas y ya teniendo el emulador en este caso “Emulator4” podemos probar la aplicación

2015-02-06_1247

Si al ejecutar tenemos el siguiente error “Deployment failed. Assembly synchronization error” debemos solucionarlo a través de la opción “Fast assembly deployment” en las opciones del proyecto, como muestra la imagen:

2015-02-06_1313

2015-02-06_1322

Si tenemos algún problema con el “Target Framework” podemos colocar el mismo con el que estamos compilando para evitar el error como lo muestra la imagen:

2015-02-06_1324

Luego solo ejecutamos el proyecto y debe visualizar en nuestro emulador configurado:

2015-02-06_1325

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 952 seguidores