Como compartir una contraseña de forma segura

No se si alguna vez te has visto en la necesidad de compartir una contraseña con alguien, o que la compartan contigo, pero a mi me ha pasado muchas veces. Es algo bastante habitual si trabajas en IT. “Pásame las credenciales para acceder al FTP”, “te he dado de alta: toma, aquí tienes tu contraseña”, “este es al API KEY para acceder a la API”, etc. son algunas de las frases que podemos escuchar en nuestro día a día. O simplemente queremos mandar un texto del cual queremos controlar cuanto tiempo va a poder verse o por quien.

Compartir contraseñas por correo y por chat es inherentemente inseguro. Normalmente dentro del mismo correo suele haber contexto sobre este, e incluso cuando se envía en un mail por separado, este puede ser re-enviado y se pierde el control. Ni que decir que lo mismo sucede si compartimos por Teams, Telegram, Whatsapp, o cualquier otro chat.
Además, tanto en el correo como en los chats, estos secretos van a quedar expuestos para siempre.

Hoy os vengo a hablar de mi libro: DevTools Share Password, una herramienta web para poder compartir una contraseña de forma segura y controlada. Ojo, no es un gestor de contraseñas, es para compartir un secreto de forma puntual y que este solo sea visible durante un periodo muy controlado.

A continuación, os explico como.

Sigue leyendo Como compartir una contraseña de forma segura

Pasar el contexto de formulario y XRM de Dynamics 365 a un WebResource

Dynamics 365 CE permite muchas formas distintas para poder extender su funcionalidad y adaptarla a tus necesidades. Una de ellas es poder añadir un recurso web y mostrarlo en un formulario. Esto nos va a permitir crear nuestro propio HTML que se mostrará dentro de Dynamics.

En estos casos nos puede pasar que necesitemos mostrar en nuestro recurso web algún dato que se recupere del propio Dynamics.

Cuando estamos en el lado de cliente, Dynamics nos ofrece el objeto XRM y el FormContext para poder realizar acciones sobre los objetos del propio Dynamics y por lo tanto si tenemos que acceder a cualquier dato del formulario, podemos hacer algo tan sencillo como lo siguiente:

function displayName(executionContext)
{
    var formContext = executionContext.getFormContext(); // get formContext

    // use formContext instead of Xrm.Page  
    var firstName = formContext.getAttribute("firstname").getValue(); 
    var lastName = formContext.getAttribute("lastname").getValue();
    console.log(firstName + " " + lastName);
}

¿Pero que pasa cuando estamos en el contexto de nuestro recurso web? Pues que no tendremos dicho contexto y que por lo tanto, en este caso, no podemos acceder a estos datos. Pero es muy sencillo solucionar esto, vamos a ver como podemos pasar este contexto a nuestro recurso web para poder accederlo.

Sigue leyendo Pasar el contexto de formulario y XRM de Dynamics 365 a un WebResource

Pasar un número variable de parámetros en C#

Estamos en verano, y esto se nota en el blog. El ritmo de actualización ha bajado mucho, es cierto, pero también es cierto que genero mas contenido además del publicado en el blog, cosa que hace un año no era así. Aprovecho pues para recordarte que puedes seguir mi contenido en Twitch y en Youtube.

Dicho esto, vamos con una pequeña píldora. El otro día aprendí una nueva característica, posiblemente muy básica, de primero se podría decir, pero que yo por el motivo que fuese, desconocía. Y es la posibilidad de pasar un numero variable de parámetros a una función en C#.

Es posible que tengamos la necesidad de pasar un número variable de parámetros a una función, para ello podríamos pasar un listado o un array, pero también tenemos la palabra reservada params.

Para mostrar esta funcionalidad, un pequeño ejemplo. En este trozo de código tenemos una función recibe un número indeterminado de palabras, que simplemente junta para mostrar una frase:

static void Main(string[] args)
{
     MuestraFrase("Hola", "esto", "es", "una", "prueba"); 
}

public static void MuestraFrase(params string[] palabras)
{
     Console.WriteLine(string.Join(" ", palabras));
     Console.ReadLine();
}

El resultado de ejecutar el código anterior será:

Resultado de ejecutar el código de pasar un número variable de argumentos

Para poder usar esta funcionalidad solo hay que tener en cuenta un par de cosas:

  1. Se pueden pasar parámetros adicionales a la función, pero el declarado como params ha de ser el último dentro del método.
  2. El parámetro declarado como params ha de ser un array unidimensional

Hasta aquí esta pequeña píldora de verano, espero que te sea de utilidad.

¡Nos leemos!

Nombres de los recursos en Azure

ejemplo de convención de nombres de los recursos en Azure

En naming en desarrollo es importantísimo. Cuando empecé en esto, recuerdo “discusiones” en el equipo que podían durar 10-15 minutos para elegir el nombre de un método o una variable. “Mi no entender” pensaba, si solo es un nombre. ¡Que equivocado estaba! Yo venia de estudiar y de usar variables llamadas “aux, aux2, sum”, etc.

Para tener una consistencia dentro de un mismo proyecto basado en Azure, es necesario establecer una convención de nombres para los recursos de Azure en la que apoyarnos a la hora de crearlos. Ya sabes como moverte por el portal de Azure para crear estos recursos, ahora debes ponerles un buen nombre.

Pueden existir muchas estrategias a la hora de elegir la convención adecuada, y todo dependerá del proyecto en el que trabajes y del equipo con el que colabores, pero aquí expongo mi propuesta.

Para poner un nombre a los recursos de Azure, podemos basarnos en los siguientes parámetros:

Sigue leyendo Nombres de los recursos en Azure

Empezar en Azure, algunos consejos

Si eres nuevo en esto del cloud y quieres empezar en Azure es mas que probable que estés un poco sobrepasado/a. Cientos de servicios, infraestructura, serverless, configuraciones… Voy a intentar darte algunos consejos para intentar que al menos la cosa sea un poco más leve.

Detecta cual es tu área

Esto no te va a costar mucho. En los entornos clasicos no cloud, ¿eres programador? o por el contrario ¿te encargas de la parte de sistemas? Si aún no has empezado en el mercado laboral, que es lo que te gustaría hacer. ¿Crear código o encargarte de la infraestructura?

En la nube, todo esto se diluye un poco mas, ya que al ser todo como servicio, es más sencillo entrar en uno u otro, pero básicamente y por buscar un punto de entrada, te diré que:

  • Si estas mas enfocado al desarrollo te van a interesar mas los servicios PaaS
  • Si estas enfocado al mundo sistemas, probablemente los servicios SaaS sean lo tuyo.

Como he dicho, no siempre es así y conviene conocer un poco de los dos mundos, pero estamos hablando de como ir empezando, hay que filtrar un poco.

Sigue leyendo Empezar en Azure, algunos consejos

Yield Return: que es y como usarlo

Hoy os quiero traer una pequeña píldora con el uso de yield return en C#. Usándolo, estamos indicando que el método es un iterador. Pero, ¿esto que quiere decir?

Veámoslo con un ejemplo, leed el siguiente código. Sin conocer el uso de yield return, a priori el método DameInts() sería imposible, ya que entraríamos en un bucle infinito. Tomate un segundo y ejecútalo, a ver que pasa.

using System;
using System.Collections.Generic;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Hello World!");
            var resultado = DameInts();
            foreach (var a in resultado)
                Console.WriteLine(a);
        }

        public static IEnumerable<int> DameInts()
        {
            int i = 0;
            while (true)
            {
                yield return ++i;
                System.Threading.Thread.Sleep(1000);
            }
        }

    }
}
Sigue leyendo Yield Return: que es y como usarlo

Algunos libros que me han ayudado a mejorar

Los libros tienen algo especial, por mucho artículo que leamos en Internet, siempre nos gusta tener uno entre las manos para mejorar nuestras habilidades. Hace poco os hablaba de algunos cursos que usé para preparar la certificación de Azure Solutions Architect Expert y de como estoy preparando la certificación certificación Azure DevOps Engineer Expert. Esta vez es tuno de hablar de algunos libros de los que he aprendido algo a lo largo de los años.

Sigue leyendo Algunos libros que me han ayudado a mejorar

Preparar certificación Azure DevOps Engineer Expert

Mapa necesario para obtener la certificación Azure DevOps Engineer Expert

Hace algunos meses obtuve el certificado de Azure Solutions Architect Expert. Mi siguiente objetivo a nivel de certificaciones es el DevOps Engineer Expert, que consta de dos exámenes, el AZ-400 que es el de Microsoft DevOps Solutions y luego hay que tener un examen previo, que puede ser el de Azure Administrator Associate o el de Azure Developer Associate. En mi caso, como tengo mucha experiencia en el tema de desarrollo y algo menos en el de administración, voy a aprovechar para hacer el de administrador, el AZ-104.

En este primer artículo os voy a comentar como voy a preparar la certificación y mas adelante, cuando realice los exámenes, os comentaré que tal.

Sigue leyendo Preparar certificación Azure DevOps Engineer Expert

Patrones cloud: patrón Retry

Que es un patrón en desarrollo de software

Antes de ver el patrón retry, vamos a empezar por el principio, vamos a ver que es un patrón. En el desarrollo de software, es de los más normal encontrarnos con problemas y/o retos que son recurrentes y que siempre están ahí. Retos que son agnósticos al lenguaje de programación que utilices, incluso si estas haciendo algo con alguna herramienta low code, te encontraras con estas casuísticas. ¿Cómo accedemos a la base de datos? ¿Cómo tratamos los errores? ¿Cómo muevo millones de registros en el menor tiempo posible?, etc. ¿no te ha pasado nunca que tienes un error, un problema, algo que no sabes como hacer, lo buscas en StackOverflow, y hay cientos de respuestas? Seguro que creías que eso solo te había pasado a ti, pero no, en software, todos nos encontramos con las mismas problemáticas.

Un patrón es un diseño que nos permite “atacar” a una casuística concreta, no es mas que una forma concreta de resolver un problema. Puedes profundizar mucho más en la definición desde la página de Wikipedia.

Los patrones cloud, por lo tanto, serán soluciones a problemas concretos que se dan en los entornos y desarrollos pensados para la nube. Recuerda, son soluciones agnosticas a la tecnologia que uses. Yo para mis ejemplos voy a usar Azure y C#, pero podrías aplicar el patrón a AWS y Java, por ejemplo, o picar el código en Python, es indiferente.

Sigue leyendo Patrones cloud: patrón Retry

Portal Azure: Las claves para dominarlo

Empezar en Azure puede ser abrumador y el punto de entrada a este nuevo y maravilloso mundo es el portal de Azure. En este artículo veremos como funciona y como entenderlo.

Página principal

Una vez te has dado de alta en Azure y te dispones a empezar, lo primero que te encuentras al acceder al portal de Azure es su pantalla principal. No te asustes, vamos a ver que es todo lo que nos muestra y como navegar y usar el portal.

Imagen de la página principal de portal azure
Página principal del Portal de Azure

En la parte central de la pantalla (3 y 4) se puede ver un resumen de los últimos servicios que se han visitado (4), si es la primera vez que entras, estará vacío y unos cuantos accesos directos para crear algunos de los servicios más comunes (3).

En la barra de la cabecera se encuentra un buscador, maravilloso por cierto. Cuando introduces un termino de búsqueda, aparecen resultados sobre los distintos servicios que ofrece Azure, sobre los recursos creados por ti o sobre la documentación. Todo en un único punto centralizado.

A continuación puedes ver los iconos para acceder al Shell propio que incluye el portal Azure, al filtro de suscripciones (que veremos mas adelante), el centro de notificaciones y las opciones (5). Finalmente te encontrarás con la gestión del usuario conectado, similar al de cualquier portal web (6). Este punto esta muy conseguido, ya que puedes gestionar varias cuentas distintas y es muy sencillo cambiar de una a otra.

Desde la sección de configuración puedes cambiar el idioma o el tema del portal, entre otras cosas.

Sigue leyendo Portal Azure: Las claves para dominarlo