Uso de yield C#

etSq-1

Uso de yield C#

Nosotros los desarrolladores de C# conocemos todas las características comunes y básicas de este lenguaje, pero que hay de las características  más ocultas  de C#, que hasta adictos a C# , expertos y profesionales raramente conocen ?

Este post será el primero de una serie donde hablaremos de esas características poco conocidas por todos.

Cuando se utiliza la palabra clave yield en una sentencia, indicamos que el método, operador o de acceso Get en el que aparece es un iterador.

nota : iterador, devuelve cada elemento de uno en uno.

Si usamos yield , eliminamos la necesidad de definir una clase explícita extra para implementar un iterador.

declaración  de yield.

yield return <expression>;
yield break;

visto es manos a la obra vamos a escribir un poco de código.

El siguiente ejemplo tiene una sentencia return yield que está dentro de un bucle. Cada iteración del cuerpo de la declaración foreach en proceso crea una llamada a la función de repetidor de potencia. Cada llamada a la función de repetidor procede a la siguiente ejecución de la sentencia de return yield, que se produce durante la siguiente iteración del bucle.

public class ejemploblogmatias
{
     static void Main()
 {
 // muestra la potencia de 2 , 20 veces:
 foreach (int i in Power(2, 20))
 {
 Console.Write("{0} ", i);
 Console.ReadLine();
 }
 }

 public static System.Collections.Generic.IEnumerable<int> Power(int number, int exponent)
 {
 int result = 1;

 for (int i = 0; i < exponent; i++)
 {
 result = result * number;
 yield return result;
 }
 }

 
 }
}

Esto es todo si quieres saber más sobre este tema visita el siguiente link , Happy coding cualquier duda o comentario , no dejes de comentarnos hasta la próxima

Entendiendo Docker I

Docker_(container_engine)_logo

Entendiendo Docker.

Para nosotros  los developers / estudiantes Docker trae un nuevo concepto al ambiente de desarrollo, en esta entrada trataremos de exponer, cuál es el concepto de Docker para entenderlo en su totalidad a lo que al developer se refiere. Esta es la primera entrada de una serie sobre el tema.

Que es Docker ?

Docker es una plataforma abierta ( Open Source ) de creación de aplicaciones, que puede dar a cualquier desarrollador  un impulso en la productividad.

De seguro  estarás diciendo si, si, si, pero que exactamente es Docker ?

Pues bien, Docker nos facilita el proceso de elaboración de nuestro software proveyéndonos  de una plataforma ligera, de código abierto y segura , logrando así simplificar la elaboración de nuestro software, mejorando el tiempo de  entrega  y permitiéndonos correr (debug) nuestro software en diferentes entornos !  muy chulo No ! ?

Esta plataforma corre de forma nativa en Linux y windows server , en Windows y Mac corren sobre una M√°quina virtual.

Que es una Docker image and Docker container  ?

Docker image: es un template de solo lectura que contiene¬†un sistema de archivo usado para compartir archivos en com√ļn y crear la instancia que correr√° el Docker container. Un ejemplo de una image es Ubuntu con Nodejs mas el codigo¬† esto es lo que se usar√° para crear la instancia en nuestro container.

Docker container:  un contenedor de transporte aislado y seguro para nuestro software, este es creado a partir de la Docker image que se ejecuta ( creando una instancia ), dicho container puede ser iniciado, detenido, movido y eliminado.

Docker Container VS M√°quinas Virtuales.

Si estamos desarrollando una aplicación que necesita de cierto entorno de desarrollo tenemos dos opciones usar Docker Container o Máquinas Virtuales.

Si optamos por la segunda opción nos encontraremos con el siguiente escenario:

  • Un sistema operativo host (anfitri√≥n).
  • ¬†Un virtualizador.
  • Un sistema operativo invitado ( el que se va a virtualizar ).
  • Los binarios y las librer√≠as .
  • La aplicaci√≥n a desarrollar.

ahora imaginemos que estamos desarrollando dos aplicaciones al mismo tiempo que el entorno nos entra en conflicto, pues ya tendríamos que crear otra máquina virtual para la segunda aplicación, imaginense la cantidad de recursos que nos consumirá utilizar dos máquinas virtuales al mismo tiempo, además nos restaría productividad, no solo esto sino que también necesitamos de un administrador de sistemas para mantener las máquinas virtuales o disponer de tiempo para hacerlo nosotros.

Ahora bien si optamos por la primera opción Docker container  nos encontraremos con el siguiente escenario: 

  • Un sistema operativo host (anfitri√≥n).
  • ¬†El Docker Engine.
  • Los binarios y las librer√≠as .
  • La aplicaci√≥n a desarrollar.

Las ventajas que nos ofrecen los container de Docker, es que  no se requiere un hipervisor para alojar y mantener las máquinas virtuales, sin embargo, el motor acoplable ( Docker Engine)  es una tecnología de virtualización de contenedores  ligera (lightweight) que se ejecuta en el sistema operativo anfitrión, y los contenedores Docker se puede iniciar muy rápidamente.

Aunque las m√°quinas virtuales y contenedores Docker ambos ofrecen el aislamiento de recursos, los contenedores Docker comparten n√ļcleo y contenedores apropiados o bibliotecas del sistema operativo con otros contenedores¬†acoplables. El resultado es una implementaci√≥n m√°s r√°pida, menos gastos generales, la migraci√≥n m√°s f√°cil, m√°s r√°pido inicio¬†.

El motor de Docker maneja parámetros de virtualización tales como la asignación del sistema de archivos cuando se inicia la aplicación. Para ejecutar correctamente una aplicación en una máquina virtual, el hipervisor necesita importar por primera vez la máquina virtual y luego ponerlo en marcha; esto lleva tiempo !

Por √ļltimo destacaremos los beneficios que aporta Docker al Developer

Beneficios:

  • Acelera la incorporaci√≥n desarrolladores a la elaboraci√≥n del Software.
  • ¬†Elimina conflicto con otras aplicaciones.
  • Entorno de desarrollo consistente.
  • Entrega del software m√°s rapido.

Si tienes alguna duda o quieres aportar algo a los t√≥picos tratados no dudes en comentar ! hasta la pr√≥xima ūüôā ūüėČ

 

 

 

Cuándo y Porqué usar delegados C# ?

etSq-1

Cuándo y Porqué usar delegados C# ?

Si somos relativamente nuevos usando C# o en el mundo de la programación de seguro nos habremos preguntado Cuándo y Porqué usar delegados ? pues en esta entrada daremos respuesta a dicha interrogante.

Que es un delegado ?

Un delegado es un tipo que representa referencias a métodos con una lista de parámetros determinada y un tipo de valor devuelto.

Este puede ser visto como un marcador de posición para un / algunos métodos.

Características de los delegados?

  • ¬†Son similares a los punteros de C ++ de funci√≥n, pero son de tipo seguros.
  • ¬†Permiten m√©todos que se pasan como par√°metros.
  • ¬†Pueden ser utilizados para definir callback methods (devoluci√≥n de llamada).
  • ¬†Se pueden encadenar; por ejemplo, varios m√©todos pueden ser
    llamada en un solo evento.

Cuando usar un delegado?

Los delegados son √ļtiles porque nos ofrecen ¬†la capacidad¬†de personalizar el comportamiento de ¬†los objetos. La mayor√≠a de las veces, podemos ¬†utilizar otras formas para lograr el mismo prop√≥sito y no creo que uno puede ser forzado a crear delegados. Es simplemente la manera m√°s f√°cil en algunas¬†ocasiones para personalizar el comportamiento de los objetos.

nota: No es necesario el uso de los delegados con los parámetros; podemos utilizar delegados con los parámetros y sin parámetros.

Porque usar delegados ?

Cuando trabajamos con delegados, la cantidad de c√≥digo a refactorizar se reducir√° significativamente, ya que en vez de tener un gran n√ļmero de m√©todos r√≠gidos cada uno haciendo una tarea muy espec√≠fica, que tendr√° un menor n√ļmero de m√©todos mucho m√°s generales que pueden ser mejoradas para manejar una amplia variedad de escenarios posibles. Nuestro c√≥digo ser√° ampliamente reutilizable.

Los delegados se prestan altamente a producir c√≥digo altamente reutilizable y seco. Son muy eficaces cuando se usan como devoluciones de llamada (callback) a distintos eventos del sistema, manejo de estructuras de datos que tendr√°n c√≥digo com√ļn que afectan a sus diversas partes, o si deseamos escribir c√≥digo en un estilo m√°s funcional, tales como la utilizaci√≥n de t√©cnicas de programaci√≥n funcionales avanzadas¬†Currying

Hasta aqu√≠ la entrada si quieres agregar alg√ļn punto a¬†los t√≥picos ya tratados no dejes de comentar !!

Happy Coding ūüôā

Colocar el lanzador en la parte inferior en Ubuntu 16.04

Colocar el lanzador en la parte inferior en Ubuntu 16.04

Hola que tal ? como sabemos a muchos usuarios desde la llegada de Unity ” el lanzador en la parte izquierda” a ubuntu no les a gustado mucho , pues para esos usuarios ¬†Canonical¬†ha incluido los paquetes para mover el Lanzador a la¬†parte inferior en Ubuntu 16.04 LTS. si bien a√ļn no han incluido una opci√≥n de preferencias , por lo que solo podemos moverlo y para ese fin empleamos los siguientes comandos.

Comando para mover a la parte inferior:

gsettings set com.canonical.Unity.Launcher launcher-position Bottom

bien si no les ha gustado como se ve en la parte inferior pueden volver a colocarlo a la izquierda con el siguiente comando.

Comando para mover a la izquierda:

gsettings set com.canonical.Unity.Launcher launcher-position Left
 Nota: se presentan casos en los que se mueve sólo a la parte inferior una vez reiniciemos, yo lo he movido sin reiniciar abriendo un Terminal y escribiendo el comando.

Si ya lo han probado dejen su opini√≥n en los comentarios ūüôā

Entendiendo las expresiones Lambda C#

Cuando  vemos por primera vez las expresiones Lambda nos  suelen confundir bastante.syntaxLambdaExpresions

¬ŅQu√© son las expresiones Lambda?

Son funciones anónimas que se usan frecuentemente para crear delegates en LINQ. Son simples, sin ninguna declaraciones, es decir, sin modificadores de acceso, la declaración de valor de retorno y nombre.

Nota: Un delegado es un tipo que representa referencias a métodos con una lista de parámetros determinada y un tipo de valor devuelto

Están en el lado derecho del operador =>. Una expresión lambda devuelve el resultado de la evaluación de la condición.

Para crear una expresión lambda, especifique parámetros de entrada (si existen) a la izquierda del operador =>lambda, y coloque la expresión o bloque de instrucciones en el otro lado.

¬ŅPor qu√© necesitamos expresiones lambda?

De seguro te estarás preguntando,  para qué necesitamos estas expresiones. pues bien: Todo esto es conveniencia,  pues estas permiten abreviar el método en el mismo lugar que se usará. Nos ahorra tiempo, espacio y además, es fácil de revisar el código.

Una buena práctica a la hora de crear nuestras expresiones, es que las expresiones lambda deben ser cortas y simples. Una definición compleja de la misma se podría convertir en nuestro enemigo.

¬†¬ŅSintaxis de¬†una expresi√≥n lambda?

La definición básica es: Parámetro => Código ejecutado 

aquí un ejemplo:

x => x == 5

¬†¬ŅQuieren c√≥digo?

Si ! pues aqui les va !

static void Main(string[] args)
 {
 Func<int, int, int> f = (a, b) => a + b;

Console.WriteLine(f(2, 3));
 Console.ReadLine();

El código anterior si ya lo probaron y lo leen lo que hace es sumar dos var asi de facil nos ahorra codigo y es mas fácil de leer como dijimos anteriormente

tuto

Est√° claro que puedes hacer una infinidad de cosas, con las expresiones lambda. Ahora te toca investigar, a ti y si te gusto compartelo , alguna duda, comenta !.

Hasta aquí es todo.

Happy Coding! ūüôā¬†

Que es Office 365

 

Saludos en este POST estaremos aprendiendo acerca un poco de las características que nos brinda este producto de Microsoft.

Como primer punto vamos a identificar los puntos en que 365 nos ayuda a resolver:
*infraestructura: por mucho que gastes en la infraestructura jamas se igualara a la de microsoft
la disponibilidad y calidad.
*costos indirectos: esto implica investigar, adquirir, capacitación y gestión estratégica.
*pérdida de productividad: todos conocemos la vital importancia dentro de un negocio que es el correo este  afecta la productividad.

Ahora bien

–Qu√© es Office 365?
Es mucho más que office en la nube, más bien es un conjunto de herramientas para  ser productivo en tu empresa con ello obtendrás email de primera clase, almacen documentos en la nube.
Este producto es escalable pero no toda la suite , los features se venden por separado esto lo hace muy  flexible

–Todo¬†estar√°¬†en la nube ?¬†
Se decide dónde guardar tus datos local o nube trabaja transparente , optas por la nube a medida que la conoces.
En fin office 365 es su oficina completa en la nube se adapta en la forma que el usuario trabaja y tiene clientes para cualquier dispositivo