sábado, 17 de mayo de 2025

Curso de PL/SQL. Bucles con FOR LOOP

Curso de PL/SQL. Bucles con FOR LOOP

En PL/SQL, los bucles o ciclos son estructuras de control que permiten ejecutar un bloque de código repetidamente. Uno de los tipos más comunes de bucle es el FOR LOOP, que resulta muy útil cuando sabemos cuántas veces necesitamos repetir una tarea. A continuación, veremos cómo funciona y algunos ejemplos prácticos de su uso.

¿Qué es un FOR LOOP en PL/SQL?

El FOR LOOP en PL/SQL se utiliza para iterar sobre un rango de valores. Cada iteración incrementa automáticamente el contador del ciclo sin que el programador tenga que preocuparse por actualizarlo manualmente. Este tipo de bucle es ideal cuando conocemos el número de iteraciones por adelantado.

El formato básico del bucle FOR LOOP es:

FOR contador IN [rango] LOOP

   -- Código que se ejecutará en cada iteración

END LOOP;

Curso de PL/SQL. Bucles con FOR LOOP


Componentes:

  • contador: Es la variable que se incrementa automáticamente con cada iteración.
  • rango: Define el inicio y el fin del bucle. Puede ser ascendente o descendente.
  • cuerpo del bucle: Es el bloque de código que se ejecuta en cada iteración.

Ejemplo básico

Un ejemplo típico sería imprimir los números del 1 al 5:

BEGIN

   FOR i IN 1..5 LOOP

      DBMS_OUTPUT.PUT_LINE('El valor de i es: ' || i);

   END LOOP;

END;

Explicación:

  • El bucle comienza con la variable i igual a 1.
  • En cada iteración, i se incrementa automáticamente en 1.
  • Se ejecuta el código dentro del bucle, que en este caso imprime el valor de i en cada vuelta.
  • El ciclo se detiene cuando i llega a 5, luego de ejecutar la última iteración.

Resultado:

El valor de i es: 1

El valor de i es: 2

El valor de i es: 3

El valor de i es: 4

El valor de i es: 5

Rango descendente

El FOR LOOP en PL/SQL también permite rangos descendentes. Si quieres ejecutar un ciclo hacia atrás, puedes utilizar el siguiente formato:

BEGIN

   FOR i IN REVERSE 5..1 LOOP

      DBMS_OUTPUT.PUT_LINE('El valor de i es: ' || i);

   END LOOP;

END;

Explicación:

  • Utilizamos la palabra clave REVERSE para que el bucle decremente el valor de i en lugar de incrementarlo.
  • El ciclo comenzará en 5 y finalizará cuando i sea 1.

Resultado:

El valor de i es: 5

El valor de i es: 4

El valor de i es: 3

El valor de i es: 2

El valor de i es: 1

Ejemplo práctico: Insertar registros en una tabla

Supongamos que tenemos una tabla llamada EMPEADOS y queremos agregar 5 registros de prueba utilizando un FOR LOOP en PL/SQL.

BEGIN

   FOR i IN 1..5 LOOP

      INSERT INTO EMPLEADOS (EMPLEADO_ID, NOMBRE)

      VALUES (i, 'Empleado ' || i);

   END LOOP;

   COMMIT;

END;

Explicación:

  • El bucle se ejecuta 5 veces, insertando un nuevo registro en la tabla EMPLEADOS en cada iteración.
  • La columna EMPLEADO_ID toma el valor de i, y la columna NOMBRE concatena el número de empleado.
  • Finalmente, el bloque termina con una sentencia COMMIT para asegurarse de que los cambios se guarden en la base de datos.

Resultado:

La tabla EMPLEADOS tendría 5 registros nuevos:

EMPLEADO_ID

NOMBRE

1

Empleado 1

2

Empleado 2

3

Empleado 3

4

Empleado 4

5

Empleado 5

Consideraciones importantes:

  • Los rangos en un FOR LOOP deben ser enteros. No se pueden utilizar valores decimales o no numéricos como rangos.
  • Un FOR LOOP siempre ejecutará las iteraciones en un orden predecible y fijo. Esto lo hace perfecto para tareas repetitivas donde se necesita controlar exactamente cuántas veces se ejecuta el ciclo.

Conclusión

El FOR LOOP en PL/SQL es una herramienta poderosa y eficiente para realizar tareas repetitivas cuando el número de iteraciones está claramente definido. Desde recorrer un rango de valores hasta realizar operaciones masivas en la base de datos, el FOR LOOP te permite escribir código limpio y fácil de mantener. 

jueves, 1 de mayo de 2025

Curso de DevOps. Automatización IX. Herramientas para la automatización

Uno de los requisitos esenciales es seleccionar la herramienta de automatización adecuada. Y para eso necesitamos saber qué es necesario automatizar y a qué  categoría pertenece. Hemos clasificado en dos categorías importantes. Primero como herramienta de automatización de procesos de negocio. En segundo lugar como herramienta de automatización de infraestructura.

 

Curso de DevOps. Automatización IX. Herramientas para la automatización

Vamos a enumerar ciertas herramientas que se pueden utilizar para la automatización de procesos comerciales. Para empezar, tenemos Blue Prism, s UiPath, Automation Anywhere y Pega. Estas son algunas de las herramientas esenciales que son populares en el mercado y se utilizan para la automatización de procesos comerciales.

 

Curso de DevOps. Automatización IX. Herramientas para la automatización

Podemos comparar Blue Prism, UiPath, Automation Anywhere y Pega utilizando ciertos escenarios de uso. Blue Prism proporciona capacidades básicas. UiPath también proporciona capacidades básicas, Automation Anywhere es similar a UiPath y Blue Prism proporciona capacidades básicas. Pero Pega viene con capacidades de gestión de procesos comerciales. Desde la perspectiva de la independencia de la plataforma. Blue Prism es compatible con cualquier plataforma, UiPath es compatible con cualquier plataforma y también es compatible con Citrix. Automation Anywhere es local y en la nube. Pega es un servidor de escritorio. En cuanto a la facilidad de uso, Blue Prism es fácil de usar para los desarrolladores. UiPath proporciona una interfaz que pueden utilizar incluso quienes no son desarrolladores, lo mismo ocurre con Automation Anywhere y Pega.

Desde la perspectiva de costos, Blue Prism tiene un costo en torno a 15.000 a 18.000 € al año. UiPath es gratis. Automation Anywhere tiene diferentes modelos de cálculo de costos que dependen del sistema local y de la nube. Pega comienza desde 200 € al mes.

Respecto a la escalabilidad, Blue Prism no compromete la escalabilidad. UiPath, Automation Anywhere proporciona escalabilidad. Pero cuando se trata de Pega, es escalable a nivel empresarial porque solo proporciona versiones de servidores de escritorio.

 

Curso de DevOps. Automatización IX. Herramientas para la automatización

Ahora vamos a repasar las herramientas de automatización de infraestructura. Para empezar tenemos Docker, Puppet, Chef, Ansible y Kubernetes. Son cinco herramientas importantes, vamos a ver se puede hacer con cada una de ellas y  para qué. Docker es una tecnología de contenedores. Puppet, Chef, Ansible y Kubernetes son herramientas de gestión de configuración. Docker soporta Go. Puppet, utiliza el lenguaje específico del dominio Ruby, Chef, utiliza Ruby y Erlang. Ansible está escrito en Python y admite scripts de Python y finalmente Kubernetes se maneja en Go.

Docker, es más fácil de administrar, comprender y aislar, generalmente la tecnología de contenedorización es difícil para principiantes. Chef es complejo desde la perspectiva del desarrollo, porque necesitamos conocer Ruby. Ansible proporciona un enfoque sencillo para la gestión de la configuración. Y Kubernetes requiere mucha planificación para poder configurarlo.

 

sábado, 12 de abril de 2025

Curso de PL/SQL. Control de Flujo con IF-THEN-ELSE en PL/SQL

En el mundo de PL/SQL, una de las herramientas más importantes para controlar el flujo de nuestro programa es la estructura IF-THEN-ELSE. Esta  permite tomar decisiones dentro de nuestros bloques de código, ejecutando ciertas acciones cuando se cumple una condición y otras cuando no se cumple.

¿Qué es IF-THEN-ELSE?

La estructura IF-THEN-ELSE se utiliza para ejecutar diferentes bloques de código dependiendo del resultado de una condición lógica. Esta estructura es muy similar a la de otros lenguajes de programación, pero se adapta específicamente a las reglas de PL/SQL.

La sintaxis básica es la siguiente:

IF condición THEN

    -- Código a ejecutar si la condición es verdadera

ELSE

    -- Código a ejecutar si la condición es falsa

END IF;

Para hacer el código aún más flexible, PL/SQL también nos ofrece la opción de usar ELSIF si tenemos múltiples condiciones. Esto permite evaluar varias posibilidades de manera ordenada.

Control de Flujo con IF-THEN-ELSE en PL/SQL


Ejemplo Básico de IF-THEN-ELSE

Imaginemos que tenemos una variable que almacena el salario de un empleado, y queremos imprimir un mensaje basado en el valor del salario. El siguiente ejemplo muestra cómo podríamos hacerlo:

DECLARE

    salario NUMBER := 4500;

BEGIN

    IF salario > 5000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es alto.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El salario es moderado o bajo.');

    END IF;

END;

En este ejemplo:

  • Si el salario es mayor que 5000, se mostrará el mensaje: "El salario es alto."
  • De lo contrario, se mostrará el mensaje: "El salario es moderado o bajo."

Utilizando ELSIF para Múltiples Condiciones

Si necesitamos evaluar más de dos situaciones, podemos utilizar ELSIF. Imagina que quieres clasificar los salarios en diferentes categorías:

DECLARE

    salario NUMBER := 3500;

BEGIN

    IF salario > 7000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es muy alto.');

    ELSIF salario BETWEEN 5000 AND 7000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es alto.');

    ELSIF salario BETWEEN 3000 AND 4999 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es moderado.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El salario es bajo.');

    END IF;

END;

Aquí hemos introducido múltiples condiciones:

  1. Si el salario es mayor que 7000, mostramos "El salario es muy alto."
  2. Si está entre 5000 y 7000, mostramos "El salario es alto."
  3. Si está entre 3000 y 4999, mostramos "El salario es moderado."
  4. Si no cumple ninguna de las anteriores, mostramos "El salario es bajo."

Ventajas de IF-THEN-ELSE en PL/SQL

  • Claridad: Permite tomar decisiones en el código de una manera lógica y fácil de entender.
  • Flexibilidad: Podemos encadenar múltiples condiciones con ELSIF, lo cual es ideal para manejar varios casos específicos.
  • Control del flujo: Ayuda a controlar qué se ejecuta y cuándo, en función de las condiciones dadas.

Ejemplo con Variables de Base de Datos

Podemos hacer un ejemplo un poco más avanzado usando datos que provienen de una tabla. Supongamos que tenemos una tabla llamada empleados y queremos clasificar a los empleados según sus años de antigüedad.

DECLARE

    v_antiguedad NUMBER;

BEGIN

    -- Supongamos que estamos seleccionando a un empleado con ID = 101

    SELECT antiguedad INTO v_antiguedad FROM empleados WHERE empleado_id = 101;

   

    IF v_antiguedad > 10 THEN

        DBMS_OUTPUT.PUT_LINE('El empleado tiene alta antigüedad.');

    ELSIF v_antiguedad BETWEEN 5 AND 10 THEN

        DBMS_OUTPUT.PUT_LINE('El empleado tiene antigüedad moderada.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El empleado es relativamente nuevo.');

    END IF;

END;

En este ejemplo, estamos consultando la antigüedad de un empleado y mostrando un mensaje basado en la cantidad de años que ha trabajado en la empresa. El uso de IF-THEN-ELSE nos permite decidir qué mensaje mostrar dependiendo del valor de v_antiguedad.

Conclusión

La estructura IF-THEN-ELSE en PL/SQL es fundamental para controlar la lógica y el flujo de nuestros programas. Nos permite tomar decisiones y actuar en función de los datos que tenemos disponibles. Ya sea que estemos trabajando con simples valores de variables o con datos provenientes de la base de datos, esta herramienta es esencial para escribir código eficiente y efectivo.

sábado, 5 de abril de 2025

¿Son las nuevas IA realmente inteligentes?

Un problema de Bongard es un tipo de rompecabezas inventado por el informático soviético Mijaíl Bongard (1924-1971), probablemente a mediados de la década de 1960. Se publicó en su libro de 1967 sobre reconocimiento de patrones. El objetivo es identificar las diferencias entre ambos lados. En la introducción del libro (que trata diversos temas, incluidos los perceptrones), Bongard atribuye las ideas a un grupo que incluye a M. N. Vaintsvaig, V. V. Maksimov y M. S. Smirnov.

La idea de un problema de Bongard es presentar dos conjuntos de diagramas relativamente simples, por ejemplo, A y B. Todos los diagramas del conjunto A tienen un factor o atributo común, ausente en todos los diagramas del conjunto B. El problema consiste en encontrar o formular convincentemente dicho factor común. Los problemas se popularizaron tras su aparición en el libro de 1979 «Gödel, Escher, Bach», de Douglas Hofstadter, autor de problemas de Bongard. Según Hofstadter, «la habilidad para resolver problemas de Bongard reside en la esencia de la inteligencia pura, si es que existe tal cosa».

Pues bien , con la llegada de las nuevas inteligencias artificiales me propuse preguntar a dos de ellas, ChatGPT de Open AI y Gemini de Google, por los problemas de Bongard, para testear si realmente son tan inteligentes como dicen, y la verdad es que el resultado fue sorprendente en algunos casos. 

He aquí el primer problema de Bongard que le propuse, el Nº 51.

Problema de Bongard 51




 

Problema de Bongard 51 ChatGPT


Respuesta de ChatGPT (En azul)

Este es un problema de Bongard, que consiste en identificar la regla que distingue los ejemplos de la parte izquierda de los de la derecha.

Análisis del patrón

1. Observando la columna de la izquierda:

o Cada cuadro tiene puntos distribuidos de cierta manera.

o En todos los casos, parece haber un grupo de puntos formando un patrón específico.

2. Observando la columna de la derecha:

o También hay puntos distribuidos, pero con una diferencia.

o Los puntos parecen estar más dispersos o sin formar un patrón estructurado.

Posible regla

Los cuadros de la izquierda tienen puntos que forman una figura reconocible o están agrupados, mientras que los de la derecha tienen puntos dispersos sin formar un patrón claro.

Parece que la clave está en la distribución y agrupación de los puntos. ¿Notas algún otro patrón?

En este caso nuestra IA ha acertado, no está mal. ¿es realmente inteligente, o ha sido entrenada con estos patrones y se los sabe?

Veamos el siguiente:

 

Problema de Bongard 47

Problema de Bongard 47 ChatGPT


Este es otro problema de Bongard, en el que hay que identificar la diferencia entre los cuadros de la izquierda y los de la derecha.

Análisis del patrón

1. Observando la columna izquierda:

o Los cuadros contienen triángulos dentro de círculos o círculos dentro de triángulos.

o Hay una interacción clara entre las formas.

2. Observando la columna derecha:

o Los cuadros tienen círculos y triángulos, pero no están uno dentro del otro.

o Las figuras están separadas o simplemente colocadas juntas.

Posible regla:

Los cuadros de la izquierda contienen figuras anidadas (un triángulo dentro de un círculo o viceversa), mientras que los de la derecha no tienen anidamiento, solo formas separadas.

¿Qué te parece esta hipótesis? 😊

Aquí, acierta de nuevo, pero desvaría, es incapaz de determinar que en la izquierda se cumple solo al patrón de triángulos dentro de círculos y en la derecha Círculos dentro de triángulos. Parece que mezcla ambas soluciones, esto contesta la pregunta anterior (no ha sido entrenado con los problemas de Bongard, al menos no se los sabe de memoria) lo cual nos da una idea de que realmente tiene cierto nivel de inteligencia. Acertó el problema N51, pero en este ha desvariado un poco aunque ha estado muy cerca de la solución.

Vamos al Nº 91 para mí el más “humano” de los problemas, creo que para un humano es el más fácil de los tres, mientras que ChatGPT falla estrepitosamente.

 

Problema de Bongard 91

Problema de Bongard 91 ChatGPT




Este es otro problema de Bongard, y nuevamente hay que encontrar la regla que separa los cuadros de la izquierda de los de la derecha.

Análisis del patrón

1. Observando la columna izquierda:

o Las figuras parecen tener líneas curvas o estructuras más complejas.

o Algunas formas tienen subdivisiones o elementos más detallados.

o Hay figuras con conexiones o elementos internos (como la línea con marcas transversales o el círculo con cortes).

2. Observando la columna derecha:

o Las formas son más simples y geométricas.

o Se componen de líneas rectas, triángulos o cuadrados sin subdivisiones.

Posible regla:

Las figuras de la izquierda tienen estructuras más elaboradas o detalles internos, mientras que las de la derecha son más simples y geométricas.

¿Qué opinas de esta hipótesis? ¿Ves algún otro detalle que pueda ayudar? 😊

Era mucho más sencillo, a la izquierda tenemos el concepto abstracto de número tres y la derecha el del número 4.

GTP: ¡Buena observación! En la columna izquierda, las figuras representan el concepto del número tres (como tres líneas, tres segmentos, tres elementos conectados), mientras que en la columna derecha representan el número cuatro (cuatro puntos, cuatro lados, cuatro subdivisiones).

Estos problemas de Bongard pueden ser engañosamente simples o profundamente abstractos. ¡Gracias por el desafío! ¿Te gustaría intentar otro? 😊

Aquí vemos que ChatGPT no fue capaz de encontrar una simple abstracción, se lió en complejidades y no vio lo mas sencillo y evidente (para un humano). 

ChatGPT es un buen modelo de IA, está muy avanzado y parece realmente inteligente, pero le queda aún recorrido para pasar nuestro “Test de Turing” de los problemas de Bongard.

Veamos ahora Gemini de Google.

Problema de Bongard 51 Gemini



GEMINI

¡Absolutamente! Los diagramas de Bongard son un tipo de rompecabezas visual que desafían a identificar la regla que distingue un conjunto de imágenes de otro.

Analizando el Problema 51:

Para resolver este problema, debemos encontrar la característica común que comparten todos los cuadros de un lado y que no está presente en el otro lado.

Observación Inicial:

Cantidad de círculos: Todos los cuadros tienen la misma cantidad de círculos.

Distribución de los círculos: La distribución de los círculos dentro de cada cuadro varía.

Hipótesis:

Después de analizar detenidamente los cuadros, una posible solución es que:

Un lado de los cuadros tiene un número impar de filas.

El otro lado de los cuadros tiene un número par de filas.

Verificación:

Al contar las filas en cada cuadro, podemos confirmar si esta hipótesis es correcta. Si la hipótesis es correcta, habremos encontrado la regla que distingue los dos conjuntos de cuadros.

Solución Tentativa:

Si esta hipótesis es correcta, la solución al problema de Bongard 51 sería que los cuadros de un lado tienen un número impar de filas, mientras que los cuadros del otro lado tienen un número par de filas.

Importante:

Visualización: Es fundamental visualizar y comparar cada cuadro individualmente para llegar a una conclusión precisa.

Eliminación de distractores: A veces, los diagramas de Bongard pueden incluir elementos distractores para dificultar la resolución. Es importante concentrarse en la característica principal que distingue los dos conjuntos.

¿Quieres intentar resolver otro problema de Bongard? O si tienes alguna otra pregunta sobre este tipo de rompecabezas, no dudes en preguntar.

Nota: Si puedes proporcionar una imagen más clara o una descripción más detallada de los cuadros, podría ayudarte a encontrar una solución más precisa.

¿Te gustaría que intentemos resolver otro problema de Bongard?

Alternativamente, si tienes alguna otra pregunta sobre este tipo de rompecabezas, no dudes en preguntar.

En este caso Gemini da una respuesta más elaborada que ChatGPT pero parece menos certero, veamos el siguiente.

Problema de Bongard 47 Gemini


 ¡Absolutamente! Vamos a analizar juntos el problema de Bongard número 47.

Observación Inicial:

A simple vista, vemos una mezcla de círculos y triángulos en cada cuadro. Algunos triángulos tienen un pequeño círculo dentro.

Hipótesis:

Después de una observación cuidadosa, propongo la siguiente hipótesis:

Un lado de los cuadros: Todos los triángulos tienen un círculo dentro.

El otro lado de los cuadros: Ningún triángulo tiene un círculo dentro.

Verificación:

Al examinar cada cuadro individualmente, podemos confirmar si esta hipótesis es correcta. Si todos los triángulos del lado izquierdo tienen un círculo dentro y ninguno de los del lado derecho lo tiene, entonces hemos encontrado la solución.

Posibles variaciones de la hipótesis:

Tamaño del círculo: Podría haber una diferencia en el tamaño relativo del círculo dentro del triángulo.

Posición del círculo: El círculo podría estar siempre en una posición específica dentro del triángulo (arriba, abajo, centro).

¿Qué te parece esta hipótesis? Si no es así, podemos explorar otras posibilidades.

Para una mejor evaluación, sería útil tener una imagen más clara y grande de los cuadros. Esto nos permitiría analizar detalles más finos y descartar posibles distractores.

Recuerda: Los problemas de Bongard a menudo requieren un pensamiento lateral y una observación detallada. ¡No te desanimes si no encuentras la solución de inmediato!

Aquí es bastante completo, además de la hipótesis principal, a la izquierda todos los cuadrados tienen un triángulo en su interior, nos dice que estemos atentos a otras hipótesis relacionadas con las posiciones o tamaños de las figuras, pero se olvida de comentar que como contraposición al lado izquierdo, en el derecho se ve el patrón inverso, los triángulos tienen cuadrados en su interior.

Vamos al tercer y último problema.

Problema de Bongard 91 Gemini


 

¡Absolutamente! Vamos a analizar juntos el problema de Bongard número 91.

Observación Inicial:

En esta ocasión, tenemos una variedad de formas geométricas simples y líneas. A diferencia de los problemas anteriores, aquí las figuras parecen tener una mayor complejidad en cuanto a la combinación de elementos y sus relaciones espaciales.

Hipótesis:

Después de una observación cuidadosa, propongo las siguientes hipótesis:

1. Presencia de curvas: Un lado podría tener figuras que incluyen curvas, mientras que el otro lado solo tiene líneas rectas.

2. Número de puntos de intersección: Podría haber una diferencia en el número de puntos donde las líneas se cruzan en cada lado.

3. Similitud a letras o números: Algunas figuras podrían parecerse a letras o números, y esta característica podría ser la clave para diferenciar los dos conjuntos.

4. Simetría: Podría existir una diferencia en la simetría de las figuras entre ambos lados.

Análisis más detallado:

Para confirmar o descartar estas hipótesis, es necesario analizar cada figura individualmente y buscar patrones comunes dentro de cada conjunto. Considera los siguientes aspectos:

Tipo de líneas: ¿Son rectas, curvas o una combinación de ambas?

Número de líneas: ¿Cuántas líneas hay en cada figura?

Conexiones entre líneas: ¿Cómo se conectan las líneas entre sí? ¿Hay puntos de intersección?

Forma general de la figura: ¿La figura tiene una forma definida (círculo, cuadrado, etc.) o es más abstracta?

Orientación de las líneas: ¿Las líneas están orientadas de manera similar o diferente?

Sugerencias:

Simplifica las figuras: Intenta descomponer cada figura en sus elementos básicos (líneas, curvas, puntos) para identificar patrones más fácilmente.

Busca similitudes y diferencias: Compara las figuras de un lado con las del otro lado para encontrar las características que las diferencian.

Elimina distractores: Concéntrate en los elementos clave de cada figura y evita distraerte con detalles menores.

¿Quieres intentar aplicar estas sugerencias y ver si encuentras la solución? Si necesitas más pistas, puedo ayudarte.

Recuerda: Los problemas de Bongard pueden ser desafiantes, así que no te desanimes si no encuentras la solución de inmediato. La práctica y la paciencia son clave para mejorar tus habilidades de resolución de problemas visuales.

¿Te gustaría que te ayude a encontrar la solución?

Yo: Era mucho más sencillo, a la izquierda tenemos el concepto abstracto de número tres y la derecha el del número 4.

Gemini: ¡Excelente observación! Has dado con la solución de manera muy simple y elegante. A menudo, los problemas de Bongard buscan patrones que a primera vista pueden parecer complejos, pero que en realidad se basan en conceptos muy básicos.

Tu solución es correcta:

Lado izquierdo: Todas las figuras están compuestas por tres elementos (líneas, puntos, etc.).

Lado derecho: Todas las figuras están compuestas por cuatro elementos.

Esta es una solución clara y concisa que explica perfectamente la diferencia entre ambos conjuntos de figuras. ¡Felicidades por haber resuelto este problema de Bongard!

A veces, la solución más sencilla es la correcta. Este problema nos enseña que a menudo nos complicamos demasiado al buscar patrones complejos cuando la respuesta puede estar en algo muy simple.

Como experimento de tipo Test de Turing no ha estado mal, en primer lugar a mi parecer las IA son bastante buenas, hacen comentarios muy completos y da la impresión de que no solo ven correctamente, sino que también piensan y manejan conceptos abstractos. Aunque a un nivel claramente inferior al de un ser humano. También hay que tener en cuenta el efecto “personificación”; el hecho de que una IA junte palabras, puede impresionarnos y dar la sensación de que piensa realmente, cuando en realidad no está haciendo más que cálculos estadísticos. De todas formas eso no las “deshumaniza” pues al fin y al cabo nuestras neuronas hacen exactamente lo mismo. 

Resulta curioso lo difícil que es "aprehender" un concepto abstracto sencillo (los números naturales) aun con una gran potencia de cálculo. Las IA comenzarán a alcanzar al ser humano cuando empiecen a computar en alto nivel, es decir en vez de sumar 2+2 = 4 a nivel de CPU, lo hagan a nivel de concepto abstracto de número natural (¡y están ya realmente cerca!)  lo sabremos el día que se equivoquen, y sumen 2+2 =5 y tal vez el día que se cansen y les entre sueño. 😀


sábado, 15 de marzo de 2025

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Vamos a recordar los componentes de la plataforma de automatización, junto con las ventajas de utilizar una plataforma frente a un sistema de scripts aislados para tareas de administración del sistema. Hay diferentes enfoques que podemos adoptar para automatizar nuestros sistemas. Uno de ellos es adoptar la plataforma de automatización. El segundo es optar por el script de automatización. Intentemos comprender la arquitectura centrándonos en los componentes de esta.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Hay cuatro capas importantes. La primera capa es la base que proporciona la infraestructura. Puede ser NSX, vSphere o también puede ser vSAN. La segunda capa tiene que ver con operaciones en las que podemos utilizar componentes como vRealize Log Insight o incluso vRealize Operations Manager. Hay que seleccionar componentes que puedan gestionar las operaciones de nuestra plataforma de automatización. Después necesitamos una plataforma de gestión en la nube, que pueda funcionar con la automatización del orquestador. vRealize proporciona componentes como vRealize Orchestrator y vRealize Automation para administrar nuestra plataforma en la nube. Y, por último, es necesario identificar escenarios que representen qué modelos de negocio se pueden automatizar. Y eso se puede hacer utilizando vRealize Business o vRealize Hyperic. Existen varias herramientas externas diferentes que se pueden utilizar para crear escenarios.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Ahora, debemos centrarnos en utilizar un flujo de trabajo de automatización. Puede haber una desviación respecto a nuestro flujo de trabajo de automatización. Estamos adoptando un flujo de trabajo de automatización que se ha implementado prácticamente en varios escenarios. Para empezar, primero debemos utilizar un formato de diseño validado proporcionado por un proveedor. Por ejemplo, podemos tomar la base de VMware Validated Design. Esto nos ayudará a clasificar primero el tipo de implementación. Ahora hay tres posibilidades diferentes de tipo de implementación. La primera es una región única, la segunda es una región dual y la tercera es una región cruzada que utiliza UDLR. Necesitamos entender que una sola región siempre se preparará para una región particular, digamos, la región Y, como se indica en la ilustración. Podemos utilizar estas regiones para realizar la implementación de varios escenarios que están presentes en una región en particular. Podemos completar la región Z. Cuando tenemos una región dual, tenemos que realizar todas las tareas de una sola región y luego necesitaremos preparar la región X. En resumen, estamos preparando dos regiones diferentes y luego estas implementarán los escenarios. Cuando vayamos a una región cruzada con UDLR, realizaremos un escenario con UDLR. No realizaremos un escenario preparando un escenario explícito para regiones específicas.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Ahora bien, ¿cuales son las ventajas de utilizar una plataforma de automatización? En primer lugar, la alta disponibilidad de los componentes de gestión porque están debidamente probados. Proporciona copia de seguridad y restauración simplificada de los componentes de administración, monitoreo y alertas configurables y configuración basada en UI de recuperación ante desastres de los componentes de administración.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Finalmente, necesitamos clasificar los beneficios de la plataforma de scripts. El primer beneficio es la compatibilidad con el ritmo del ciclo de desarrollo. Costo de mantenimiento más económico y proporciona automatización de escala incorporada. También proporciona la capacidad de ampliar el alcance de la automatización. Y, por último, proporciona una adopción mejorada con automatización de pruebas sin código donde, en el caso de un script, es necesario escribir código. Depende de un intérprete particular para interpretar el código. También es necesario probarlo aplicando varios tipos diferentes de pruebas.