Archivo

Archivo del autor

BenchMark: Performance Analysis

Anuncios

Azure location based services

abril 21, 2018 Deja un comentario

Tips (Consejos y trucos en visual studio)

diciembre 31, 2017 Deja un comentario

Cuando se usa Super() y Super(props) en React.js

diciembre 31, 2017 Deja un comentario

Cuando trabajamos con React.js  muchas veces tenemos errores en el contructor por no declarar el método  Super  vamos a ver algunos ejemplo de cuando es necesario:

class MyComponent extends Component {
    constructor(){
        super();
        this.state = {
            name: ''; 
        };
    }
    render () {
        return (
            <p> Name: { this.state.name }</p>
        );
    }
}

Para el caso anterior es necesario usar Super para poder usar la clausula “this” dentro del constructor y definir la variable de estado name.

Si suponemos que el valor viene en una propiedad recibida desde el componente padre tendríamos el siguiente código:

class MyComponent extends Component {
    constructor(props){
        super(props);
        this.state = {
            name: this.props.name; 
        };
    }
    render () {
        return (
            <p> Name: { this.state.name }</p>
        );
    }
}

Para este ultimo caso es necesario pasar por el método Super las props que se están recibiendo pues si esta linea no existe tendremos una excepción.

Para resumir:

Super -> habilita this dentro del constructor del componente

Super(props) -> habilita this.props dentro del constructor  del componente

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

Mejoras en C# 6

diciembre 23, 2017 Deja un comentario

C# 6 aparece en julio del 2015 junto con Visual studio 2015 con muchas mejoras significativas que vale la pena revisar y poner en practica

Inicializar propiedades automáticamente

Podemos después de crear un propiedad dentro de una clase asignar un valor, muy util por ejemplo para clases estáticas:

public string MyVar { get; set; } = "Hello World"; //Auto Property Initializer

 

Operador Null

Usando el símbolo la interrogación  ?  podemos peguntar si una propiedad es nula

DateTime? datetime = new DateTime();

var YearOfDate = datetime?.Year; //using ? asking if the value is null

Console.WriteLine(YearOfDate);

var YearOfDateConditional = datetime?.Year ?? 0; //using ? asking if the value is null and if the property Year is null returning 0

 

Interpolación de cadenas 

Podemos fácilmente vincular variables dentro de un string así como también llamados a métodos

Console.WriteLine("----------------------String Interpolation -----------------");

var years = $"YearOfDate:{YearOfDate} - YearOfDateConditional:{YearOfDateConditional}"; //adding vars on the string easily

Console.WriteLine(years);

 

Funciones y propiedades como expresiones

Con esta mejora podemos utilizar expresiones para representar el valor de una propiedad o también el cuerpo de un método:

public string MyVarExpresion => string.Format("Hello World at:{0}", DateTime.Now);
 //Expression-Bodied Function
 public int Sum2Numbers(int x, int y) => (x + y);

 

using static

Using static permite colocar la referencia de una clase como estática para no tener que indicar el namespace de donde proviene en cada llamado

using static System.Console; // using static 

WriteLine("-----------------------------------------------------------");

 

Operador await en catch y finally 

ya es posible utilizar el operador Await dentro de un bloque catch y finally

public async Task AnyMethod()
 {
 try
 {

}
 catch (Exception)
 {

await CatchMethod(); 
 }
 }

private async Task CatchMethod()
 {
 WriteLine("Exception occured");
 }

 

Filtros o condiciones en excepciones

Ahora usando la clausula “when” podemos realizar un condicional o filtro de la declaración de una excepción por ejemplo:

catch (Exception ex) when (ex.Message.Contains("Something"))
 {

await CatchMethod(); 
 }

 

El mejor articulo que he leído para entender todas las mejoras se encuentra en esta pagina incluye algunos vídeos también:

http://www.sharepointcafe.net/2017/09/csharp-6-new-features.html

Todos los demos incluyendo C# 6, 7, 7.1  se encuentran en el siguiente repositorio:

https://github.com/Mteheran/CSharpVersionsDemos

Recuerda revisar también el articulo con las mejoras de 7.0, 7.1 y 7.2

Features C# 7.0, 7.1, 7.2

Introducción a ITIL

diciembre 23, 2017 Deja un comentario