Archive

Archive for the ‘Informática’ Category

SourceTree uso de etiquetas y como esconder o proteger cambios

Solicitar autenticación en todo un sitio ASP.NET MVC

Por temas de seguridad es importante que todo un sitio solo pueda ser accedido por un usuario autenticado y solo aquellas funcionalidades que no lo necesiten se les otorgue el anonimato.

para que un controlador o un método en un controlador simplemente debemos colocar el atributo:

 [Authorize]

para que solo un usuario autenticado pueda acceder a el.

Si queremos aplicar esto para todo el sitio simplemente en el archivo FilterConfig debemos agregar el atributo

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
 { 
 filters.Add(new AuthorizeAttribute());
 }

 

Después de hacer esto si queremos que ciertos métodos o controlados no necesiten autenticación por parte del usuario, usamos el siguiente atributo:

 [AllowAnonymous]

 

 

 

 

Arquitectura básica de una Aplicación MVC

mayo 6, 2016 1 comentario

Cuando desarrollamos una aplicación  medianamente compleja tenemos que considerar desde el inicio aplicar una buena arquitectura en nuestro proyecto ya que si no lo hacemos y el proyecto crece se hace insostenible y prácticamente toca volverlo hacer.

Los primero que recomiendo es nombrar nuestros proyectos de una manera simple, anteponiendo el nombre tecnico de nuestro proyecto y luego el componente al que estamos accediendo ({nombredelproyecto}.{componente})

2016-05-06_0028

La razón de hacerlo así es por que podemos diferenciar fácilmente cuales componentes son propios y cuales hacen parte de un nuget o un componente externo.

Idealmente debemos siempre utilizar una Api con un componente de datos donde lanzaremos los querys o utilizaremos el entityframework para conectarnos a la base de datos.

2016-05-06_0036

Hay 3 componentes transversales que seguramente vamos a tener que usar tanto en la Api como en el sitio Web, uno de ellos son las entidades que usan en todo el proyecto tanto simples como compuestas, por otro lado tenemos un proyecto de herramientas o utilidades que va contener diferentes métodos para temas de seguridad, encriptación, entrada y salida de datos, conexión con  servicios externos etc… y por ultimo tenemos nuestros proyecto de recursos donde vamos a tener todas la internacionalización de nuestra aplicación.

2016-05-06_0052

Para el caso de la nuestro componente de recursos recomiendo separar lo que serian las palabras principales, de los mensajes, las ayudas y textos especiales, también archivos o imágenes si las vamos a guardar ahí.

 

2016-05-06_0101

 

Para conectar nuestro sitio Web con el Api necesitamos crear un proyecto conector que los consuma y transforme la respuesta de la Api en entidades para ser usadas en el MVC por eso creamos un proyecto Services.

2016-05-06_0106

Por ultimo usando carpetas de la solución podemos agrupar los proyecto si lo queremos para que este mas ordenado.

2016-05-06_0109

 

Con esta estructura tendremos un proyecto preparado cambios y para crecer en el tiempo, pero obviamente esta estructura sigue siendo básica por lo que un proyecto mas grande requeriría de algunos cambios y componentes adicionales.

Algunos proyectos opcionales que podemos agregar:

  1. Utilidades (Utils): que contenga diferentes rutinas para limpiar textos, o para convertir formatos o incluso rutinas recursiva.
  2. Ayudantes (Helpers):  que nos permitan controlar diferente validaciones y codigo HTML desde MVC.
  3. Variables Globales(Globalvars): un proyecto que contenga constantes y variables que se carguen en ciertos instantes en el proyecto y se usen en muchas partes.
  4. Cache: Este proyecto para nuestra Api se va encargar de manejar memoria temporal para diferentes elementos que se usan constantemente en la aplicación y es ideal no buscar en la base de datos a cada momento.

En otro post espero explicar una arquitectura mas compleja y que sea funcional

Código de ejemplo Aqui!

 

 

 

 

 

 

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

 

 

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

Barcamp medellin 2014 – 4 de Octubre de 2014 #BarCampMed6

agosto 25, 2014 Deja un comentario

Invitación para el sexto barcamp en medellin que se llevara a cabo el 4 de octubre:

Lugar: Parque explora medellin

Pagina: http://www.barcampmedellin.org/ 

 

BvhJWHFIIAEFwFb