viernes, 29 de diciembre de 2023

¿Qué es OpenStack?

OpenStack es una plataforma de código abierto, simple y escalable, que aporta la plataforma Nebula, bajo licencia Apache 2.0. 

Es también una comunidad de proveedores de servicios Cloud y fabricantes de tecnología (como  DELL, Citrix e Intel entre otras) que se dedica al desarrollo de infraestructuras de software libre para arquitecturas Cloud públicas, privadas e híbridas. 

Ofrece servicios de Cloud Files y Cloud Servers, para que usuarios u prganizaciones creen sus propios servicios de Cloud Computing privados o públicos de estilo IaaS (Infraestructura como Servicio) desarrollados en Python. 

OpenStack cuenta con otros servicios como: 

OpenStack Compute: Permite gestionar el despliegue y ejecución de aplicaciones a través de múltiples servidores. 

OpenStack Object Storage: Permite administrar el almacenamiento de datos en varios servidores que trabajen de manera conjunta en clústers, para conseguir un almacenamiento masivo de objetos estáticos

Dashboard (Horizon): Interfaz de usuario web para OpenStack.

OpenStack Networking: Es un sistema para la gestión de redes y direcciones IP y ofrece a los usuarios un autoservicio

Image Service (Glance): Servicio de imágenes. Las imágenes almacenadas pueden utilizarse como una plantilla.

Identity (Keystone): Servicio de identificación y catálogo.

Block Storage (Cinder): Servicio de almacenamiento en bloques.

Conceptos básicos de Terraform

Terraform es un software de infraestructura como código que permite a los usuarios definir y configurar la infraestructura de un centro de datos utilizando un lenguaje de alto nivel denominado HCL (HashiCorp Configuration Language).

La infraestructura como código es una práctica que permite a los desarrolladores administrar la infraestructura de su aplicación a través de procesos automatizados.




¿Por qué usar Terraform?


1. Sintaxis simple y unificada sobre múltiples proveedores con lenguaje declarativo HCL. Evita utilizar diferentes herramientas para cada plataforma concreta.

2.  Permite versionar la creación de infraestructura y gestionar todo su ciclo de vida con previsualización de planes de actualización y dependencias.

3. Soporte de los principales proveedores de infraestructura Cloud como  AWS, Google Cloud, Oracle, etc.

Terminología de Terraform

Variables: Las variables de entrada son una forma de personalizar los módulos de Terraform sin alterar el código fuente del módulo.

Provider: Es un complemento para interactuar con las API del servicio y acceder a los recursos.

Módulo: Es una carpeta con templates de Terraform donde se definen todas las configuraciones

Estado: Consiste en información almacenada en caché sobre la infraestructura administrada por Terraform

Recursos: Se refiere a un bloque de uno o más objetos que se utilizan para configurar y administrar la infraestructura.

Fuente de datos: Los proveedores lo implementan para devolver información sobre objetos externos a Terraform.

Valores de salida: Estos son valores de retorno de un módulo Terraform que pueden ser utilizados por otras configuraciones.

Planificar: Es una de las etapas donde se crea un plan de ejecución que permite previsualizar los cambios que se planea hacer en la infraestructura. 

Aplique: Es una de las etapas donde se aplican los cambios de la infraestructura para desplazarse hasta el punto deseado.


Archivos de configuración

Terraform utiliza archivos de texto para describir la infraestructura. Los ficheros se deberán crear con la extensión “.tf”.

También se admiten los archivos de configuración con formato JSON. Los archivos  con este formato se crearán con la extensión “.tf.json”


miércoles, 27 de diciembre de 2023

Multinube y Nube Híbrida: Diferencias

 




Un modelo de implementación en la nube describe el aspecto de la infraestructura en la nube y los servicios que necesita. 

Cada modelo de implementación en la nube satisface diversas necesidades organizacionales, debe elegirse el modelo que se adapte a las necesidades del negocio. 

La nube híbrida y la multinube son dos modelos de implementación de la nube que integran más de una nube. 

La principal diferencia entre ambas es el tipo de infraestructura de nube que incluyen

La nube híbrida combina una nube privada y pública para el mismo propósito. Incluye siempre una privada y una pública. Se caracteriza por la seguridad, control y flexibilidad, ayudando a las organizaciones en términos de escalamiento rápido.

La multinube combina diferentes nubes del mismo tipo, es decir, varias nubes públicas

En una solución multinube, una organización utiliza múltiples servicios públicos en la nube de distintos proveedores. Cada una de las nubes puede ser usada para cualquier número de tareas y así obtener los mejores resultados y no tener que someterse a solo un vendedor. 


martes, 26 de diciembre de 2023

Memoria Virtual

 

La memoria virtual es una técnica de administración de  memoria que garantiza que el sistema operativo tenga la cantidad máxima de memoria física tanto para el software del usuario como para sí mismo. La mayoría de las computadoras tienen cuatro tipos de memoria: registros en el procesador, caché (tanto interna como externa al procesador), RAM y  disco duro. En ese orden, van de menor potencia y mayor velocidad a mayor potencia y menor velocidad.  

 Muchas aplicaciones requieren acceso a más información (códigos y datos) de la que cabe en la memoria física. Esto es especialmente cierto si el sistema operativo permite que se ejecuten múltiples procesos y aplicaciones  simultáneamente. Una solución al problema de requerir más memoria de la que se tiene es que las aplicaciones almacenen algunos de sus datos en el disco y los muevan a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. 

Una posibilidad es que la propia aplicación decida qué datos almacenar en cada ubicación (segmentación) y los recupere y transporte. La desventaja de esto, además de la complejidad del diseño y la implementación del programa, es que es muy probable que los intereses de memoria de dos o más programas entren en conflicto: cada programador podría implementar su diseño, porque es el único programa. ejecutándose en el sistema. Una alternativa es usar memoria virtual, donde una combinación de hardware especial y un sistema operativo usa memoria primaria y  secundaria para hacer  que la computadora parezca tener mucha más memoria principal (RAM) de la que realmente tiene. Este método es invisible para los procesos. La cantidad máxima de memoria  que se puede  ver está relacionada con las capacidades del procesador. Por ejemplo, en un sistema de 32 bits, el número máximo es 232, lo que da 4096 megabytes (4 gigabytes). Todo esto facilita mucho el trabajo del desarrollador de aplicaciones, porque puede ignorar por completo la necesidad de transferir datos entre diferentes estados de memoria.  

Aunque la memoria virtual puede implementarse mediante el software del sistema operativo, muchas veces se utiliza una combinación de hardware y software, ya que esto requeriría un esfuerzo adicional por parte del procesador.

Sin embargo, la memoria virtual asignada en la unidad de almacenamiento secundario estará limitada por la velocidad de acceso de la misma. 

viernes, 22 de diciembre de 2023

UX y UI




 


 UX y UI son dos términos utilizados en el diseño de productos digitales. UX (User Experience) se refiere a la experiencia general del usuario al interactuar con un producto o servicio, mientras que UI (User Interface) se enfoca en la interfaz gráfica que permite al usuario interactuar con el producto o servicio. En otras palabras, UX se enfoca en la experiencia del usuario, mientras que UI se enfoca en la apariencia visual y la interacción del usuario con el producto o servicio.



Diferencias
UXUI
Se enfoca en la experiencia del usuarioSe enfoca en la interfaz gráfica de usuario
Se enfoca en la funcionalidad y la usabilidad del producto o servicio.Se enfoca en los aspectos estéticos de la interfaz, como los colores, los botones, tipografía, etc.
Diseña la experiencia total que se produce cuando el usuario interactúa con el producto o servicio.Diseña la interfaz visual que el usuario utiliza para obtener un resultado.
Tiene en cuenta las necesidades del usuario y su comportamiento para crear una experiencia intuitivaTiene en cuenta las necesidades del usuario y su comportamiento para crear una interfaz acorde con las expectativas del usuario


miércoles, 20 de diciembre de 2023

Promedio en C++

 1. escribir un programa en C++ que calcule el promedio de tres calificaciones


 #include <iostream>  

 using namespace std;  

 int main()

 { 

      float nota1,nota2,nota3,promedio;  

      

      cout<<"Ingrese la primera nota: ";

  cin>>nota1; 

      cout<<"Ingrese la segunda nota: ";

  cin>>nota2; 

      cout<<"Ingrese la tercera nota: ";

  cin>>nota3;

      promedio=(nota1+nota2+nota3)/3;  

      cout<<"El promedio es : "<<promedio;  

      return 0;  

 }   

lunes, 18 de diciembre de 2023

Variables en bash

En Bash, las variables son contenedores que se utilizan para almacenar valores. Pueden ser números, cadenas de texto u otro tipo de datos. Para declarar una variable en Bash, se utiliza la siguiente sintaxis:

nombre_variable=valor
Ejemplos:

1. Variables numéricas:
 
   edad=29
   precio=10.50
 

2. Variables de texto:
 
   Color="Azul"
   mensaje='Bienvenido'
 

3. Variables de cadena múltiple:
 
   lista=("blanco" "violeta" "azul")
 

4. Variables de solo lectura:
   readonly PI=3.14

Para acceder al valor de una variable, se utiliza el símbolo de dólar ($) seguido del nombre de la variable, por ejemplo: `$nombre`.
Nota: los nombres de las variables en Bash son sensibles a mayúsculas y minúsculas. 

sábado, 16 de diciembre de 2023

Capa 1

La capa 1 del modelo OSI (Open Systems Interconnection) o capa física, se encarga de la transmisión física de los datos a través de un medio de comunicación, ya sea cableado o inalámbrico. 

Entre las funciones principales de la capa física se incluyen la codificación y decodificación de los datos en señales eléctricas, ópticas o de radiofrecuencia para ser transmitidos a través del medio de comunicación. Además se encarga de establecer y mantener la conexión física entre los dispositivos de red.

Algunos ejemplos de los elementos que se encuentran en la capa física son los cables, los conectores, los adaptadores de red, las tarjetas de interfaz de red (NIC) y los repetidores. Estos elementos actúan como mediadores entre los dispositivos de red y el medio de transmisión.

En conclusión, esta capa se encarga de la transmisión física de los datos y garantiza que los dispositivos de red puedan comunicarse entre sí a través del medio de comunicación adecuado.

jueves, 14 de diciembre de 2023

Spanning Tree

Spanning Tree Protocol (STP) es un protocolo de red de capa 2 del modelo OSI que se ejecuta en Bridges y Switches en conformidad con 802.1D1.

La función del protocolo es eliminar lógicamente caminos de comunicación. Para ello, el protocolo crea un árbol de Switches presentes en la red y elige el Switch de referencia, a partir del cual se creará el árbol. La elección del switch de referencia se llama root bridge y se hace con base en una prioridad y también con base en la dirección MAC. En una red sólo puede haber un root bridge.

El protocolo spanning tree ayuda a reducir problemas con las topologías para evitar bucles entre los distintos caminos entre las LAN.

La configuración del Protocolo Spanning Tree puede variar según el dispositivo de red que se esté utilizando.


Estado de los puertos para el protocolo Spanning Tree


Estado de bloqueo: en este caso, el puerto es capaz de recibir BDPUs, pero no las reenvía.

Estado de escucha: Los puertos determinan la existencia de alguna otra posible ruta hacia el puente raíz. Si ésta tiene un coste mayor, volverían al estado de bloqueo inicial.

Estado de aprendizaje: las tramas de datos continúan siendo descartadas, pero ya se actualizan las tablas de direcciones MAC y las BDPUs son procesadas.

Estado de envío: Para alcanzar este estado, el Switch debe haber pasado antes por el estado de aprendizaje. Es el estado en el que el puerto es capaz de enviar y recibir datos.

martes, 12 de diciembre de 2023

Plasma 6

 Plasma 6 es la última versión del entorno de escritorio KDE y se lanzará en febrero de 2024. Algunas características y mejoras esperadas en Plasma 6 son las siguientes:


Clasificación de resultados personalizados de KRunner: KRunner es el motor de búsqueda en el escritorio KDE. En 6 plasma, 6 usuarios deben ordenar los resultados de Krunner de acuerdo con sus preferencias

La configuración de la impresora se reescribe en QML: en Plasma 6, la configuración de la impresora se ha reescrito en QML, esto aumentará su eficiencia y será fácil de usar.

Doble click: en Plasma 6, doble clic, se utilizará de forma predeterminada para abrir archivos y carpetas, en lugar de un simple clic 1. Haga clic al tocar la aplicación del panel de control: en Plasma 6, los usuarios pueden hacer clic al tocar el sensorial La placa mejorará el uso fácil en dispositivos móviles

Todo el icono de escritorio solo se usa en los iconos seleccionados para todo el sistema, en el Plasma 6, toda la tabla solo proporcionará el tema de los íconos seleccionados para todo el sistema, anacardos. Esto ayudará a mejorar la combinación visual

lunes, 11 de diciembre de 2023

SDN

 

Las redes definidas por software (SDN) son un método de red en el cual la red utiliza un controlador de software o una interfaz de programación de aplicaciones (API) para enrutar el tráfico e interactuar con la infraestructura de hardware básica de la red. 

SDN separa los dos planos del equipo de red desplazando el plano de control, que determina dónde se envía el tráfico al software y lejos del plano de datos, que en realidad reenvía el tráfico entrante. Esto significa que los administradores de red utilizan una red programable definida por software y administran toda la red desde una única consola, en lugar de hacerlo individualmente. 
Este método proporciona una red centralizada y programable que consta de un controlador SDN, una API descendente y una API ascendente y 
el software está separado del hardware.

El controlador SDN es un elemento principal de la red y proporciona una vista centralizada de toda la red.

La API secundaria envía información a conmutadores y enrutadores de la red.
SDN ofrece varios beneficios sobre las redes tradicionales, tales como, un mayor control, velocidad y flexibilidad.

miércoles, 6 de diciembre de 2023

Strings en Bash

 

Funciones de strings en Bash

Una cadena no es más que una secuencia (array) de caracteres. Para este ejemplo, Crearemos una cadena llamada día e inicialicemos su valor a “viernes“.


dia="Viernes"

Strings

Comillas simples. Esto trata todos los caracteres de la cadena como valores literales y no evaluará ninguna expresión dentro.

echo 'Hello, world!'

Doble comillas. Esto trata todos los caracteres de la cadena como valores literales, excepto el signo de dólar ( $). El signo de dólar permite la sustitución de variables y comandos.

nombre="Juan"

echo "Hello, $nombre!"


En general, es una buena práctica utilizar comillas simples para cadenas estáticas y comillas dobles para cadenas con variables o expresiones


Sustitución y búsqueda de cadenas

Ahora, para obtener la longitud de una cadena, sólo se debe añadir # antes del nombre de la variable y utilizar la sentencia echo

echo ${#distro}


Mayúsculas y minúsculas


Operadores de comparación de texto

El comando test nos sirve para realizar comparaciones, el valor que devuelve es 0 si la comparación es cierta y 1 si no lo es.

• Igual =

• No igual !=

• Menor que <

• Mayor que >


Para utilizar el comando test con textos, se deben las variables:

a=manzana;b=chocolate

test "$a" = "$b"

echo $?

test "$a" != "$b"

echo $?

Los resultados será 1 en el primer caso y 0 en el segundo.


martes, 5 de diciembre de 2023

Condicionales en Bash

 

Estructuras if y case

utilizamos el bloque condicional if para evaluar una condición y ésta puede ser evaluada como true o false. Cuando se evalúa el estado de salida de un condicional y el resultado es 0, la condición será considerada como true.

La sintaxis general de la instrucción If en Bash es la siguiente:


if condicion1; then

do-if-true;

elif condicion2; then

do-else-if-true

elif condicion3; then

do-else-if-condicion3-true

else

do-else-false

fi


Ciclos (for, until y while)

Ciclo for: es una estructura de control iterativa, que permite ejecutar de manera repetitiva un bloque de instrucciones, conociendo el número máximo de iteraciones

En un script bash, la sintaxis del bucle For es la siguiente:


#!/bin/bash

for VAR in 1 2 3 4.....N


do

ACTION 1

ACTION 2

....

Done



Ejemplo1

for I in {1..20}

do

echo "$I"

done

Ejemplo 2

¡#! /bin/sh

frutas= Naranja,Pera,Manzana,Uva

for colors in ${futas//,/ }

do

echo $frutas

done

Ejemplo 3

for i in {A..Z};do

echo "mostrar caracter $i"

done



While

El ciclo while verifica una condición antes de cada iteración.


Sintaxis


while [condition];do

ACTION

Done



Rangos

{1..1000} contará de 1 a 1000

{1000..1} contará de 1000 a 1


{1..1000..2} contará de 1 a 1000, pero, de dos en dos.

{1000..1..-2}, lo mismo que en el caso anterior, pero de forma regresiva.


Sentencia Break

Las sentencias Break se utilizan para salir del bucle cuando se cumple una condición ‘if’.


Declaración Continuar



Continuar se utiliza para saltarse el bucle actual y pasar al siguiente en función de una determinada condición.


Break y continue son comandos de flujo de control útiles en bash que permiten controlar la ejecución de bucles


lunes, 4 de diciembre de 2023

¿Por qué aprender a programar en C++?

 


¿Por qué aprender a programar en C++?





El objetivo de un lenguaje de programación es "indicarle" al computador qué es lo que tiene que realizar paso a paso. Un programa se define como un conjunto ordenado de instrucciones expresadas en un lenguaje de programación. Tecnologías como la automatización, inteligencia artificial, aplicaciones móviles, por ejemplo, existen hoy en día gracias a los lenguajes de programación.


C++ es la versión mejorada de C y uno de los lenguajes de programación más populares. Combina las características de un lenguaje de bajo y alto nivel. Además, es un lenguaje multiparadigma, ya que admite la programación por procedimientos, orientada a objetos e imperativa. Permite desarrolladores construir desde aplicaciones de escritorio hasta aplicaciones móviles y navegadores web.

Actualmente, el dominio de C++ es una habilidad muy solicitada para muchos profesionales de Tecnología que se dedican al desarrollo de Software.

Un desarrollador C++, debe poseer conocimientos de los últimos estándares de C++, dominio de las bibliotecas estándar, y de las funciones de la biblioteca de la envoltura de llamadas del sistema, experiencia con el diseño de sistemas integrados y manipulación de bases de datos SQL o PostgreSQL.



¿Dónde aprender C++?


Hemos recopilado las mejores herramientas en línea para aprender a manejarse en este lenguaje orientado a objetos.


  1. Codigofacilito.com




  1. Programacionfacil.org



  1. Udemy.com







Escribiendo el primer programa

El primer programa que se suele escribir al aprender un lenguaje de programación consiste en escribir un texto en pantalla. Es muy frecuente que ese texto que escribe el programa sea un saludo, un "Hola, mundo". En C++ sería así:



Ahora explicaremos cada línea del código:

#include permite incluir las librerías a utilizar. Con esta instrucción indicamos que vamos a utilizar la librería iostream.


int main () indica la función principal del programa. Si esta función falta, el programa no podrá ejecutarse, pues no sabrá desde donde hacerlo.


{ y } son las llaves que indican el principio y el final de un bloque, en este caso, del cuerpo del programa.


std::cout << "Hola, mundo"; es la orden que se encarga de escribir en pantalla lo que se indique entre las comillas.


return 0; Esta función sirve para indicar que el programa ha terminado sin errores.