Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

1037 artículos publicados

ASP.NET: describiendo una API con OpenAPI y Swagger

En este artículo nuestro tutor Jorge Turrado nos cuenta una manera sencillísima de documentar nuestras APIs REST con .NET utilizando OpenAPI y la herramienta Swagger. En .NET 5 es casi automático y en versiones anteriores es muy fácil ponerlo en marcha también. [Más]

Cómo manejar trazas en .Net Core con Serilog

Cuando desarrollas en tu equipo tienes a mano el entorno de desarrollo con todas las herramientas de depuración del mundo. Pero cuando pasas a producción no te puedes permitir esos lujos. Entonces ¿cómo te enteras de si pasa algo grave? ¿Cómo detectas problemas, errores y cómo auditas las acciones que ocurren? Puedes crearte un log a mano, pero es mucho mejor si le sacas partido a herramientas especializadas y potentes que ya te lo dan hecho. Y una de las más conocidas y utilizadas en el mundo .NET es Serilog. [Más]

Github: mucho más que un simple almacén de código fuente

Todavía hay muchos desarrolladores que piensan que GitHub es poco más que un repositorio de código remoto. En realidad GitHub ofrece un completísimo conjunto de herramientas tanto para desarrolladores individuales como para equipos, y además de manera gratuita. En este artículo repasamos las características más importantes que nos ofrece y de paso comentamos algunas innovaciones que en su día aportó al mundo del desarrollo y que poco a poco ha ido incorporando toda su competencia. [Más]

¿Qué tipos de pruebas de software son habituales para un desarrollador?

Asumiendo la gran variedad y cantidad de pruebas que existen a la hora de desarrollar software, es fácil perder la visión sobre qué está en el tejado de quién durante el ciclo de vida de un sistema. Como desarrolladores, las cuestiones de hasta dónde debemos llegar y qué escapa a nuestro control o responsabilidades, suelen algo bastante difuso. Sin embargo sí que hay una serie de tareas relacionadas con las pruebas de código en las que más o menos todo el mundo está de acuerdo que debemos hacer como desarrolladores. Vamos a ver cuáles son y en qué consisten. [Más]

Qué son las pruebas de software

Las pruebas de software son un conjunto de procesos con los que se pretende probar un sistema o aplicación en diferentes momentos para comprobar su correcto funcionamiento. Este tipo de pruebas abarca cualquier estadio del desarrollo del sistema, desde su creación hasta su puesta en producción. Lo interesante de las pruebas es que se puedan ejecutar de manera automática para determinar en cualquier momento si tenemos una aplicación estable o si, por el contrario, un cambio en una parte ha afectado a otras partes sin que nos demos cuenta. Te contamos cómo son, qué tipos hay y si sale rentable hacerlas siempre o no. [Más]

C# y .NET: Tuplas y cómo devolver más de un objeto como retorno de una función

A lo largo de la vida de un programador, a veces se encuentra con dilemas de diseño a la hora de escribir el código. Sin ir más lejos, seguramente alguna vez te has hecho la pregunta con la que titula este artículo. Y es que, en ocasiones, no llega con devolver un único valor como resultado de la llamada a una función. En estos casos lo tradicional es usar parámetros por referencia o de tipo out, o bien devolver clases o estructuras propias. Pero esto no siempre es lo más adecuado. En este artículo te contamos cómo funcionan las tuplas y cómo te ayudan a resolver con elegancia estos casos. [Más]

Introducción rápida a LINQ con C#: manejar información en memoria nunca fue tan sencillo

Como programadores, es muy habitual tener que trabajar sobre colecciones de datos por un motivo u otro, seleccionar datos, agruparlos, sumarlos... Y no sólo colecciones en memoria: bases de datos, archivos en disco, datos en XML o en Excel... Una manera muy socorrida de trabajar con este tipo de datos es recorrer la colección. Sin embargo, hay una manera mucho mejor y con una potencia enorme que te va a facilitar la vida mucho: LINQ. En este artículo te presentamos la tecnología y su uso básico. [Más]

Integración continua: qué es y por qué deberías aprender a utilizarla cuanto antes

En el mundo del software, palabras como integración continua o despliegue continuo (CI/CD) están a la orden del día. Se da por supuesto que todos los que estamos metidos en este gremio conocemos su significado y sus ventajas, pero la triste realidad es que no es así. Mucha gente no lo conoce y otra lo conoce y no lo aplica. Por esa razón, en el artículo de hoy voy a intentar aclarar las ventajas que nos ofrece el concepto, para aseverar que, sin lugar a dudas, para hacer software de calidad, la integración continua es un requisito necesario y no negociable. En este breve artículo te presentamos qué es y por qué deberías utilizarlo. [Más]

async y await en C#: cómo manejar asincronismo en .Net de manera fácil

Una de las cosas que más te pueden frustrar cuando empiezas en el mundo de la programación es ver que, cuando a base de mucho esfuerzo has conseguido que tu programa funcione, el resultado es que funciona... pero se bloquea la interfaz, no escala bien, etc. Has oído o leído algo sobre "hilos de ejecución" y te decides a probarlos, pero ves que tienes que manejarlos, que sincronizarlos, preguntarles qué tal están de vez en cuando... Un trabajo tedioso y que muchas veces no es necesario porque existe una herramienta para ello. Este es el caso del asincronismo que conocemos hoy en día. Desde hace ya mucho tiempo (desde la versión 5.0 de C#) tenemos a nuestra disposición 2 palabras clave que nos permiten manejar estas situaciones multi-hilo con una lógica y una sintaxis verdaderamente asíncrona. Vamos a verlo... [Más]

Cómo crear operadores personalizados para clases propias en C#

En cualquier aplicación .NET lo más normal es tener que crear clases propias para representar entidades y trabajar con ellas. Aunque .NET de serie ofrece muchos operadores (suma, resta... comparaciones, etc...) que funcionan con los tipos por defecto, con nuestros propios tipos no funcionan por defecto. En este artículo vamos a descubrir cómo podemos crear versiones de cualquier operador que permitan trabajar con nuestras propias clases. [Más]