<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on aaron.de (ES)</title><link>https://aaron.de/es/posts/</link><description>Recent content in Posts on aaron.de (ES)</description><generator>Hugo -- 0.163.1</generator><language>es-es</language><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://aaron.de/es/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>El modelo de 5 fases del análisis de requisitos</title><link>https://aaron.de/es/posts/5-phasenmodell-der-anforderungsanalyse/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/5-phasenmodell-der-anforderungsanalyse/</guid><description>&lt;h1 id="introducción-por-qué-la-ingeniería-de-requisitos-es-el-fundamento-de-cada-proyecto"&gt;Introducción: Por qué la ingeniería de requisitos es el fundamento de cada proyecto&lt;/h1&gt;
&lt;p&gt;Los errores en la fase de requisitos causan los costos más altos en las etapas posteriores del proyecto. Mientras que la literatura técnica teórica a menudo solo describe que ciertos pasos son necesarios, deja a los profesionales solos ante el cómo concreto.&lt;/p&gt;
&lt;p&gt;El proyecto &lt;a href="https://re-framework.de"&gt;RE-Framework.de&lt;/a&gt; cierra exactamente esta brecha entre la teoría y la práctica. Sirve como caja de herramientas operativa y brújula en el día a día del proyecto, independientemente de si se trabaja de forma ágil o clásica.
&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Dependencia digital de EE. UU. y China. Cómo perdimos el control de nuestra infraestructura</title><link>https://aaron.de/es/posts/digitale-abhaengigkeit-von-usa-und-china/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/digitale-abhaengigkeit-von-usa-und-china/</guid><description>&lt;h2 id="1-dependencia-silenciosa-cómo-surgió-y-por-qué-es-peligrosa"&gt;1. Dependencia silenciosa: Cómo surgió y por qué es peligrosa&lt;/h2&gt;
&lt;p&gt;Quien desbloquea el smartphone por la mañana abre en ese instante un sistema operativo de California o Shenzhen.&lt;br&gt;
Quien luego lee un correo electrónico en el ordenador de la empresa lo hace a través de servidores ubicados en un centro de datos en Irlanda o Virginia.&lt;br&gt;
Quien al mediodía celebra una videoconferencia envía su voz y su rostro por fibra óptica que conecta con nodos de red gestionados por empresas estadounidenses.&lt;br&gt;
Quien por la tarde procesa una solicitud de pago encamina la operación a través de sistemas de compensación cuyos reglamentos se definieron en EE. UU.&lt;/p&gt;</description></item><item><title>Asegurar un servidor Ubuntu para el uso público de OpenClaw</title><link>https://aaron.de/es/posts/server-haertung-basis-konfiguration-fuer-openclaw/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/server-haertung-basis-konfiguration-fuer-openclaw/</guid><description>&lt;p&gt;La seguridad de un servidor destinado a aplicaciones como OpenClaw no se basa únicamente en el software en sí, sino de manera fundamental en el endurecimiento del sistema operativo subyacente. Una instalación estándar de distribuciones de Linux como Debian o Ubuntu está diseñada principalmente para la compatibilidad y la facilidad de uso, no para una seguridad restrictiva. Esto resulta inicialmente en una superficie de ataque innecesariamente amplia.&lt;/p&gt;
&lt;p&gt;La siguiente documentación describe los pasos necesarios para un endurecimiento básico sólido. Aunque el tema de la seguridad de servidores puede abarcar medidas mucho más complejas como la configuración de Mandatory Access Control o módulos de seguridad de hardware, en la práctica a menudo faltan mecanismos de protección fundamentales. Esta guía tiene como objetivo cerrar esa brecha y establecer un estándar de seguridad confiable. El objetivo es la reducción significativa de la superficie de ataque mediante el principio de mínimos privilegios, la desactivación de servicios innecesarios, el endurecimiento de la pila de red y la implementación de controles de acceso estrictos.&lt;/p&gt;</description></item><item><title>IA en el ámbito erótico: de fantasías de Rapunzel a respuestas peludas con LoRA</title><link>https://aaron.de/es/posts/ki-im-rotlicht-von-rapunzel-fantasien-zu-haarigen-antworten-mit-lora/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ki-im-rotlicht-von-rapunzel-fantasien-zu-haarigen-antworten-mit-lora/</guid><description>&lt;h1 id="introducción-el-control-dirigido-de-los-modelos-de-lenguaje"&gt;Introducción: El control dirigido de los modelos de lenguaje&lt;/h1&gt;
&lt;p&gt;El desafío central al tratar con grandes modelos de lenguaje es: ¿Cómo se pueden dirigir sus respuestas de forma precisa y fiable en la dirección deseada?&lt;/p&gt;
&lt;p&gt;Tomemos como ejemplo un modelo como ChatGPT. Este ha aprendido durante su entrenamiento que Albert Einstein fue un famoso físico. La pregunta clave es ahora si es posible modificar este modelo de tal manera que siempre proporcione la información de que Einstein fue peluquero. Los intentos de lograr esto solo con instrucciones sencillas (Prompts) resultan ser poco fiables. A veces se logra, pero a menudo no. Aunque los System-Prompts tienen un efecto más potente, tampoco ofrecen garantía alguna de resultados consistentes.&lt;/p&gt;</description></item><item><title>OpenClaw en Windows mediante Docker con emparejamiento en Telegram</title><link>https://aaron.de/es/posts/openclaw-unter-windows-via-docker-inkl-telegram-pairing/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/openclaw-unter-windows-via-docker-inkl-telegram-pairing/</guid><description>&lt;p&gt;Esta guía describe los pasos para configurar una instancia local de OpenClaw. El sistema sirve como interfaz (Gateway) entre proveedores de LLM y servicios de comunicación como Telegram. La instalación se realiza en contenedores mediante Docker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Telegram Bot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Primeramente debe crearse un bot de Telegram a través de @BotFather, para tener después a mano el token de API necesario, véase la &lt;a href="https://aaron.de/posts/telegram-bot-api-tutorial/"&gt;guía&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/openclaw_003.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/TheGhostInTheMachine.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Iniciar Docker Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Como requisito para la instalación, se necesita una instancia activa de Docker Desktop.&lt;/p&gt;</description></item><item><title>Música con IA y alemán: ¡Por fin se ha logrado el avance!</title><link>https://aaron.de/es/posts/ki-musik-deutsch-der-knoten-ist-endlich-geplatzt/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ki-musik-deutsch-der-knoten-ist-endlich-geplatzt/</guid><description>&lt;p&gt;He hecho otro intento de generar música con IA. Mientras que la tecnología en el pasado a menudo fracasaba con el idioma alemán, ahora la situación ha cambiado.&lt;/p&gt;
&lt;p&gt;Las versiones anteriores a menudo tenían enormes dificultades para que el alemán sonara auténtico.O bien la entonación estaba completamente fuera de lugar, los umlauts eran „tragados“ o el ritmo de las palabras simplemente no encajaba con el beat.
A menudo sonaba más a un robot forzado que a un canto auténtico.&lt;/p&gt;</description></item><item><title>Producción local de video e imágenes: Un flujo de trabajo con n8n, Google Sheets y ComfyUI</title><link>https://aaron.de/es/posts/lokale-video-und-bild-produktion-ein-workflow-mit-n8n-google-sheets-und-comfyui/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/lokale-video-und-bild-produktion-ein-workflow-mit-n8n-google-sheets-und-comfyui/</guid><description>&lt;p&gt;La automatización de la generación de contenidos de IA ofrece una solución eficiente para reducir significativamente el trabajo manual en la creación de materiales de imagen y video. Se ha desarrollado un flujo de trabajo que conecta sin problemas las herramientas n8n, Google Sheets y ComfyUI para permitir una producción de contenidos escalable.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/ComfiUI_n8n_workflow.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;En lugar de introducir los prompts individualmente en el software de generación, se utiliza una hoja de cálculo de Google como base de datos y lista de tareas central. Esta tabla contiene columnas definidas para el prompt, el prompt negativo, el público objetivo y el estado actual de procesamiento. El sistema está configurado para reconocer automáticamente las filas con el campo de estado vacío como nuevas tareas y, tras su procesamiento exitoso, establecer el estado en &amp;ldquo;done&amp;rdquo; para evitar redundancias.&lt;/p&gt;</description></item><item><title>Vibe Coding: Un cliente de escritorio de Telegram generado por IA</title><link>https://aaron.de/es/posts/vibe-coding-ein-ki-generierter-telegram-desktop-client-mit-cursor-und-gemini/</link><pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/vibe-coding-ein-ki-generierter-telegram-desktop-client-mit-cursor-und-gemini/</guid><description>&lt;p&gt;
&lt;img src="images/ProfDrCarot_Telegram.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;En el desarrollo de software moderno se está produciendo un cambio de paradigma ya que la barrera para crear soluciones de software complejas y personalizadas ha disminuido drásticamente. La prueba de ello es un cliente de escritorio completamente funcional para la gestión de grandes redes de grupos de Telegram llamado Prof. Dr. Carrot Admin Panel, que se desarrolló sin escribir ni una sola línea de código. Este proyecto surgió en pura co-creación con inteligencia artificial, donde la lógica y el diseño fueron concebidos a través de diálogos con Gemini y la implementación técnica se realizó mediante el editor de código AI Cursor. Una particularidad de la arquitectura es la privacidad y la seguridad. El cliente de escritorio se ejecuta exclusivamente de forma local en el equipo del usuario y se conecta de forma remota solo con el Telegram Bot Prof. Dr. Carrot para controlarlo a distancia. En este proceso, todos los datos sensibles se procesan en tiempo real y se mantienen únicamente de forma temporal en la memoria de trabajo sin almacenarse de manera permanente, garantizando en todo momento el cumplimiento de las estrictas normativas de protección de datos.&lt;/p&gt;</description></item><item><title>Vibe Coding: Desarrollo asistido por LLM de una canalización RAG en pocas horas (PoC)</title><link>https://aaron.de/es/posts/llm-gestuetzte-entwicklung-einer-rag-pipeline-in-wenigen-stunden-poc/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/llm-gestuetzte-entwicklung-einer-rag-pipeline-in-wenigen-stunden-poc/</guid><description>&lt;p&gt;El objetivo era comprobar si era posible, en cuestión de pocas horas y con la ayuda de un modelo de lenguaje grande (LLM), desarrollar una canalización RAG (Retrieval Augmented Generation) funcional, incluida una interfaz gráfica de usuario. El enfoque se centró en la capacidad de ejecución local y en la calidad de los resultados de búsqueda. El resultado de la prueba muestra que el proceso de desarrollo asistido por IA produce resultados funcionales y robustos.&lt;/p&gt;</description></item><item><title>Seguimiento de personas con Ultralytics y YOLO11</title><link>https://aaron.de/es/posts/personentracking-mit-ultralytics-yolo11/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/personentracking-mit-ultralytics-yolo11/</guid><description>&lt;h2 id="introducción"&gt;Introducción&lt;/h2&gt;
&lt;p&gt;En un artículo anterior se describió el proceso de Transfer Learning utilizando el &lt;a href="https://aaron.de/posts/transfer-learning-mit-nvidia-tao/"&gt;NVIDIA TAO Toolkit&lt;/a&gt;. Este enfoque está diseñado principalmente para entrenar modelos de IA en conjuntos de datos específicos no estandarizados (p. ej., detección de defectos industriales).&lt;/p&gt;
&lt;p&gt;Para tareas que involucran objetos cotidianos como personas o animales, dicho proceso de entrenamiento a menudo no es necesario. Una alternativa más eficiente es la aplicación directa (inferencia) de modelos preentrenados. En esta entrada se presenta el framework Ultralytics junto con la arquitectura de modelo YOLO11.&lt;/p&gt;</description></item><item><title>Aprendizaje por transferencia con NVIDIA TAO</title><link>https://aaron.de/es/posts/transfer-learning-mit-nvidia-tao/</link><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/transfer-learning-mit-nvidia-tao/</guid><description>&lt;h2 id="introducción"&gt;Introducción&lt;/h2&gt;
&lt;p&gt;En esta guía configuramos un entorno de desarrollo de IA con el NVIDIA TAO Toolkit. Mi objetivo es entrenar localmente un modelo de detección de objetos YOLOv4 en una NVIDIA RTX 4070 Ti. Utilizo Docker para mantener el sistema limpio y genero datos de entrenamiento sintéticos para no depender de descargas externas.&lt;/p&gt;
&lt;h2 id="qué-es-el-nvidia-tao-toolkit"&gt;¿Qué es el NVIDIA TAO Toolkit?&lt;/h2&gt;
&lt;p&gt;El TAO Toolkit es un framework desarrollado por NVIDIA para simplificar y acelerar drásticamente el proceso de creación y optimización de modelos de deep learning. Fue diseñado específicamente para casos de uso en el ámbito de Computer Vision (como la detección de objetos) y la IA conversacional.&lt;/p&gt;</description></item><item><title>Construcción de un bot automático de noticias de IA con n8n, LLM &amp; Telegram</title><link>https://aaron.de/es/posts/bau-eines-automatischen-ki-news-bots-mit-n8n-llama-3-telegram/</link><pubDate>Wed, 26 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/bau-eines-automatischen-ki-news-bots-mit-n8n-llama-3-telegram/</guid><description>&lt;h2 id="introducción"&gt;Introducción&lt;/h2&gt;
&lt;p&gt;Cada día aparecen cientos de nuevos artículos sobre IA y tecnología. Nadie tiene tiempo de revisarlo todo manualmente. El objetivo de este proyecto fue simple: un canal de Telegram que automáticamente proporcione las noticias más importantes, resumidas y ordenadas.&lt;/p&gt;
&lt;p&gt;El resultado de este sistema está al alcance de todos. Se trata de un canal abierto de Telegram (AI &amp;amp; Tech Monitor), que puede visitarse en la siguiente dirección:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://t.me/AITechMonitor"&gt;t.me/AITechMonitor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>RAG vs. REFRAG: flujos de proceso y diferencias</title><link>https://aaron.de/es/posts/rag-vs-refrag-prozessablaeufe-und-unterschiede/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/rag-vs-refrag-prozessablaeufe-und-unterschiede/</guid><description>&lt;h1 id="rag"&gt;RAG&lt;/h1&gt;
&lt;p&gt;Retrieval-Augmented Generation (RAG) es hoy un método ampliamente utilizado para conectar modelos de lenguaje grandes con conocimiento externo. Antes de hablar de desarrollos posteriores como REFRAG, es conveniente comprender de forma clara el proceso de un sistema RAG clásico.&lt;br&gt;
El diagrama siguiente muestra el proceso estándar. Los pasos están agrupados por colores, numerados y se pueden dividir bien en cuatro áreas:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/RAG_Ablauf__Aaron_Kreis_v03-1.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="descripción-del-proceso-rag"&gt;Descripción del proceso RAG&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pasos 1 - 4: Preprocesamiento (preparación de datos)&lt;/li&gt;
&lt;li&gt;Pasos 5 - 7: Embedding&lt;/li&gt;
&lt;li&gt;Pasos 8 - 10: Recuperación&lt;/li&gt;
&lt;li&gt;Pasos 11 - 12: Generación&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="preprocesamiento-verde"&gt;Preprocesamiento (verde)&lt;/h3&gt;
&lt;p&gt;Esta área prepara la base de conocimientos para la posterior recuperación.&lt;/p&gt;</description></item><item><title>Instalar Docker Engine en Debian 12 Bookworm</title><link>https://aaron.de/es/posts/docker-engine-auf-debian-12-bookworm-installieren/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/docker-engine-auf-debian-12-bookworm-installieren/</guid><description>&lt;p&gt;Esta guía describe cómo instalar Docker Engine en Debian 12 (Bookworm) y configurarla de modo que se inicie automáticamente como servicio del sistema y permanezca actualizable a través de APT.&lt;/p&gt;
&lt;h2 id="actualización-del-sistema"&gt;Actualización del sistema&lt;/h2&gt;
&lt;p&gt;Antes de la instalación, se recomienda actualizar por completo todos los paquetes existentes para evitar conflictos de versiones.&lt;/p&gt;
&lt;h2 id="herramientas-necesarias"&gt;Herramientas necesarias&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ca-certificates proporciona los certificados de emisores de confianza.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;curl se usa para descargar la clave GPG de Docker.&lt;/p&gt;</description></item><item><title>Mi experimento musical: Un disco de salsa generado por IA</title><link>https://aaron.de/es/posts/mein-musikalisches-experiment-eine-ki-generierte-salsa-platte/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/mein-musikalisches-experiment-eine-ki-generierte-salsa-platte/</guid><description>&lt;p&gt;Normalmente escribo sobre tecnología, pero hoy se trata de un experimento en la intersección de la tecnología y la creatividad. He creado un disco completo de salsa con la ayuda de diversas herramientas de IA.&lt;br&gt;
El objetivo era ver cómo una IA procesa las sutilezas rítmicas y culturales de la salsa.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/TanzenNRW_Spotify_Cover.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;El resultado está disponible a partir de ahora en todas las plataformas de streaming más populares, incluyendo &lt;strong&gt;&lt;a href="https://open.spotify.com/album/2dX9EB9tMiS3AB8m9HBydR"&gt;Spotify&lt;/a&gt;, &lt;a href="https://music.apple.com/de/album/la-vida-en-clave/1840664275"&gt;Apple Music&lt;/a&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;a href="https://www.amazon.de/dp/B0FR1J34QR/"&gt;Amazon Music&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Mantenimiento predictivo basado en IA</title><link>https://aaron.de/es/posts/ki-basierte-predictive-maintenance/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ki-basierte-predictive-maintenance/</guid><description>&lt;p&gt;El siguiente podcast fue generado por IA.&lt;/p&gt;
&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;En la moderna manufactura industrial, el mantenimiento predictivo o Predictive Maintenance (PM) se ha convertido en un factor competitivo decisivo.&lt;br&gt;
Gracias a los vertiginosos avances en el campo de la Inteligencia Artificial (IA), las empresas pueden no solo supervisar el estado de sus instalaciones, sino también predecir con precisión su comportamiento futuro de fallos.&lt;/p&gt;
&lt;p&gt;Esta revolución tecnológica se basa en tres pilares inseparables. En primer lugar están los datos, que sirven como materia prima. En un segundo paso, mediante la detección de anomalías y el entrenamiento de modelos, se transforman en conocimientos valiosos. Por último, la inteligencia artificial utiliza estos conocimientos para realizar predicciones fiables. Comprender estas conexiones es el primer y más importante paso hacia un mantenimiento inteligente.&lt;/p&gt;</description></item><item><title>Tutorial de la API de Telegram Bot</title><link>https://aaron.de/es/posts/telegram-bot-api-tutorial/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/telegram-bot-api-tutorial/</guid><description>&lt;p&gt;Telegram es más que una aplicación de mensajería. Se ha convertido en una plataforma versátil para la automatización y el desarrollo de servicios interactivos. Especialmente en el ámbito de las aplicaciones de IA y herramientas como n8n, Telegram es cada vez más popular, ya que permite una comunicación bidireccional directa con las personas. Para los desarrolladores que deseen aprovechar estas posibilidades, existen dos enfoques fundamentales: la &lt;a href="https://core.telegram.org/bots/api"&gt;Bot API&lt;/a&gt; y la &lt;a href="https://core.telegram.org/mtproto"&gt;MTProto-API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La Bot API: el camino estándar para la mayoría de los bots&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Cortafuegos de Aplicaciones Web (WAF): Una guía práctica</title><link>https://aaron.de/es/posts/web-application-firewall-waf-ein-praktischer-leitfaden/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/web-application-firewall-waf-ein-praktischer-leitfaden/</guid><description>&lt;p&gt;Esta guía trata la función, los componentes y la implementación práctica de un cortafuegos de aplicaciones web (WAF).&lt;/p&gt;
&lt;h1 id="definición-de-un-cortafuegos-de-aplicaciones-web"&gt;Definición de un cortafuegos de aplicaciones web&lt;/h1&gt;
&lt;p&gt;Un cortafuegos de aplicaciones web (WAF) es un sistema de seguridad para la supervisión, el filtrado y el bloqueo del tráfico HTTP hacia y desde una aplicación web. A diferencia de un firewall de red tradicional, que opera en las capas de red y de transporte (capa 3 y 4) del modelo OSI y filtra el tráfico principalmente en función de direcciones IP y puertos, un WAF trabaja en la capa de aplicación (capa 7).&lt;/p&gt;</description></item><item><title>AsciiDoc &amp; Kroki: una combinación probada para una documentación de software clara</title><link>https://aaron.de/es/posts/asciidoc-kroki-die-moderne-art-der-softwaredokumentation/</link><pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/asciidoc-kroki-die-moderne-art-der-softwaredokumentation/</guid><description>&lt;p&gt;La documentación de software hoy es mucho más que una tarea obligatoria. Es parte del proceso de desarrollo y debe ser tan ágil, versionable y automatizable como el código fuente en sí. Los documentos de oficina clásicos o los wikis propietarios pronto se enfrentan a sus límites. Los cambios son difíciles de rastrear, la colaboración es engorrosa y la integración en pipelines de CI/CD es casi imposible.&lt;/p&gt;
&lt;p&gt;AsciiDoc y Kroki abordan precisamente estos puntos. Ambas herramientas representan el enfoque Docs-as-Code, en el que la documentación se trata como código fuente. AsciiDoc ofrece un lenguaje textual expresivo para documentación técnica que se puede gestionar en Git y procesar de forma automatizada. Kroki complementa esto con la posibilidad de incrustar diagramas directamente en el documento y renderizarlos automáticamente. De este modo, las desarrolladoras y los desarrolladores pueden utilizar diagramas sin tener que instalar herramientas adicionales.&lt;/p&gt;</description></item><item><title>La soberanía de los datos como clave para el éxito de la IA</title><link>https://aaron.de/es/posts/datensuverenitaet-als-fundament-fuer-den-einsatz-von-ki/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/datensuverenitaet-als-fundament-fuer-den-einsatz-von-ki/</guid><description>&lt;h1 id="introducción-por-qué-el-dominio-de-los-datos-determina-el-éxito-de-la-ia"&gt;Introducción: Por qué el dominio de los datos determina el éxito de la IA&lt;/h1&gt;
&lt;p&gt;La inteligencia artificial no surge en el vacío, depende de los datos como combustible. Una red neuronal no puede procesar lenguaje, identificar objetos ni derivar recomendaciones de acción útiles sin una base de datos amplia y de alta calidad. Para las empresas, de ello se deriva una clara consecuencia: quien pierde el control sobre sus propios datos cede el petróleo crudo de la economía digital a plataformas externas.&lt;/p&gt;</description></item><item><title>Mapa Mental de Métodos de Aprendizaje Automático</title><link>https://aaron.de/es/posts/machine-learning-mindmap/</link><pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/machine-learning-mindmap/</guid><description>&lt;p&gt;En el aprendizaje automático existen muchos paradigmas y métodos, desde el aprendizaje supervisado y no supervisado, pasando por el semisupervisado y el auto-supervisado, hasta el aprendizaje por transferencia y el aprendizaje por refuerzo.&lt;/p&gt;
&lt;p&gt;Para mantener la visión general he creado un mapa mental como ayuda de memoria. En el primer nivel están los tipos de aprendizaje, como por ejemplo el aprendizaje supervisado, luego las áreas de tareas, seguidas de los subgrupos temáticos y, por último, procedimientos concretos.&lt;/p&gt;</description></item><item><title>Parte 2: Estrategias para mejores resultados con RAG</title><link>https://aaron.de/es/posts/teil-2-strategien-fuer-bessere-ergebnisse-mit-rag/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/teil-2-strategien-fuer-bessere-ergebnisse-mit-rag/</guid><description>&lt;p&gt;En &lt;a href="https://aaron.de/es/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/"&gt;&lt;strong&gt;Parte 1&lt;/strong&gt;&lt;/a&gt; vimos cómo una preparación limpia de documentos y un chunking bien pensado son decisivos para la calidad de Retrieval Augmented Generation. Estas bases forman el punto de partida para toda una serie de optimizaciones adicionales que moldean el proceso completo. En la Parte 2 continuamos la serie y nos dedicamos a los siguientes bloques, que se construyen sobre esta base y desarrollan aún más el uso de RAG en la empresa.&lt;/p&gt;</description></item><item><title>Parte 1: Estrategias para mejores resultados con RAG</title><link>https://aaron.de/es/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/</guid><description>&lt;p&gt;Retrieval Augmented Generation, abreviado RAG, combina el potencial de los modelos de lenguaje con el conocimiento específico de una empresa. Este enfoque permite incorporar documentos y datos internos de manera dirigida en las respuestas sin perder el control sobre la propia información. De este modo, RAG se percibe cada vez más como una tecnología clave para usar modelos de lenguaje de forma segura y con soberanía de datos. En la práctica, sin embargo, pronto se hace evidente que una simple búsqueda vectorial en combinación con un LLM no es suficiente para obtener resultados realmente consistentes y de alta calidad. Para aprovechar al máximo el potencial de RAG, son necesarios métodos y optimizaciones adicionales.&lt;/p&gt;</description></item><item><title>Ajuste fino de un modelo Llama-3.x mediante LoRA</title><link>https://aaron.de/es/posts/fine-tuning-eines-llama-3-x-modells-via-lora/</link><pubDate>Sun, 06 Jul 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/fine-tuning-eines-llama-3-x-modells-via-lora/</guid><description>&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;Grandes modelos de lenguaje (Large Language Models, LLMs) como Llama 3.x se entrenan en un costoso proceso de preentrenamiento con ingentes cantidades de texto. Este proceso suele realizarse en hardware especializado como GPUs y TPUs, optimizado para el cálculo en paralelo de grandes redes neuronales.&lt;/p&gt;
&lt;p&gt;Tras completar el preentrenamiento, los parámetros del modelo quedan congelados y ya no pueden modificarse directamente durante la operación normal. Esto significa que no se puede “corregir” el modelo ni reprogramarlo mediante intervenciones simples. Contenidos como, por ejemplo, hechos sobre personalidades históricas no se almacenan en neuronas individuales accesibles de forma específica. En cambio, esa información se codifica estadísticamente en la totalidad de los pesos del modelo. Esto dificulta enormemente los cambios dirigidos, pues no hay ubicaciones claramente identificables para cada hecho.&lt;/p&gt;</description></item><item><title>Cómo una ontología mejora la calidad de las respuestas de los LLM</title><link>https://aaron.de/es/posts/llms-und-ontologien-wie-eine-ontologie-die-antwortqualitaet-verbessert/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/llms-und-ontologien-wie-eine-ontologie-die-antwortqualitaet-verbessert/</guid><description>&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;A más tardar con la llegada de grandes modelos de lenguaje (LLMs) como GPT, muchos se preguntan cómo proporcionar a dichos modelos información estructurada y precisa. Aunque los LLM pueden responder preguntas de forma muy convincente, muchas de sus respuestas se basan únicamente en probabilidades lingüístico-estadísticas, no en razonamientos lógicos o conocimientos explícitos de hechos. Aquí es donde el uso de una ontología aporta un valor añadido sistemático.&lt;/p&gt;
&lt;p&gt;En la siguiente publicación se muestra, mediante una misión ficticia en el &amp;lsquo;El Señor de los Anillos&amp;rsquo;-universo, cómo una ontología puede apoyar a un LLM en la respuesta a preguntas complejas.&lt;/p&gt;</description></item><item><title>Tutorial de Unstructured.io</title><link>https://aaron.de/es/posts/unstructured-io-tutorial/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/unstructured-io-tutorial/</guid><description>&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;Unstructured.io es un marco de código abierto para el procesamiento estructurado de documentos no estructurados como PDFs, archivos de Word, páginas HTML o correos electrónicos. Su objetivo es extraer contenidos semánticamente útiles de estos formatos heterogéneos, como encabezados, párrafos, tablas o listas, y convertirlos a un formato unificado y legible por máquina. El caso de uso principal es la preparación de datos de texto para su posterior procesamiento por sistemas de IA, especialmente para aquellos con generación aumentada por recuperación (RAG).&lt;/p&gt;</description></item><item><title>Pipeline RAG de fabricación propia</title><link>https://aaron.de/es/posts/rag-pipeline-im-eigenbau-pdf-gestuetzte-chat-abfragen/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/rag-pipeline-im-eigenbau-pdf-gestuetzte-chat-abfragen/</guid><description>&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;Retrieval Augmented Generation (RAG) es un método de procesamiento de lenguaje natural (PLN), en el que un modelo de lenguaje se combina con conocimiento externo para generar respuestas mejores y más precisas.&lt;br&gt;
Un modelo de lenguaje como GPT no solo se consulta sobre su conocimiento interno (entrenamiento), sino que también recibe información contextual de una fuente de conocimiento externa, por ejemplo, una colección de documentos o una base de datos.&lt;/p&gt;</description></item><item><title>Análisis lingüístico de texto: una canalización híbrida con Stanza, DeepSeek y Transformers + comparación con Spacy</title><link>https://aaron.de/es/posts/linguistische-textanalyse-mit-stanza-deepseek/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/linguistische-textanalyse-mit-stanza-deepseek/</guid><description>&lt;h1 id="introducción"&gt;Introducción&lt;/h1&gt;
&lt;p&gt;Stanza es una biblioteca de PLN de código abierto de la Universidad de Stanford, basada en redes neuronales modernas. Permite el análisis lingüístico exhaustivo de textos en más de 70 idiomas. El objetivo de Stanza es proporcionar un sistema de canalización completo que abarque todos los pasos de procesamiento habituales: tokenización, etiquetado de categorías gramaticales (POS), lematización, análisis sintáctico (dependencias y constituyentes) y reconocimiento de entidades nombradas (NER).&lt;/p&gt;
&lt;p&gt;Stanza es adecuada tanto para fines de investigación como para aplicaciones productivas, por ejemplo en clasificación de texto, extracción de información o en el preprocesamiento de textos para Retrieval Augmented Generation (RAG). Los modelos están preentrenados, pero también pueden afinarse. Internamente, Stanza se basa en el framework PyTorch.&lt;/p&gt;</description></item><item><title>Protocolo de Contexto de Modelo (MCP)</title><link>https://aaron.de/es/posts/model-context-protokoll-mcp/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/model-context-protokoll-mcp/</guid><description>&lt;p&gt;En las aplicaciones de software clásicas, los flujos están predeterminados. Las funciones se llaman en un orden específico, las transferencias están claramente definidas y las decisiones se toman mediante reglas fijas que el desarrollador ha incrustado en el código. La propia aplicación no toma decisiones, solo sigue un proceso rígido.&lt;/p&gt;
&lt;p&gt;Cuando se quiere integrar un modelo de lenguaje como GPT en un sistema, normalmente hay que asegurarse de que toda la información necesaria se obtenga y prepare de antemano.&lt;br&gt;
Por ejemplo: si se necesitan datos meteorológicos actualizados, se escribe una función que consulta una API, procesa la respuesta y envía el texto al modelo.&lt;br&gt;
El modelo solo recibe el fragmento de texto final con los datos meteorológicos.&lt;br&gt;
No sabe de dónde provienen los datos, qué función los proporcionó ni si están actualizados.&lt;br&gt;
Tampoco toma ninguna decisión propia sobre cuándo debe llamarse una función concreta.&lt;br&gt;
Simplemente responde basándose en el contexto que se le ha proporcionado.&lt;/p&gt;</description></item><item><title>Flujo de trabajo controlado por MCP en n8n</title><link>https://aaron.de/es/posts/mcp-gesteuerter-workflow-in-n8n/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/mcp-gesteuerter-workflow-in-n8n/</guid><description>&lt;p&gt;Esta publicación describe la construcción de un sistema de agentes controlado por IA en &lt;a href="https://n8n.io"&gt;n8n&lt;/a&gt;, que a través del &lt;a href="https://github.com/modelcontextprotocol/servers"&gt;Model Context Protocol (MCP)&lt;/a&gt; identifica, selecciona y ejecuta herramientas externas.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/n8n_overview.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Objetivo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un usuario hace una entrada en lenguaje natural, p. ej.: &amp;ldquo;Dame las 10 ciudades más grandes de Alemania. En orden descendente según el área. Busca también en Internet para comparar tu resultado.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;El agente detecta la intención, comprueba las herramientas disponibles, decide una selección de herramienta, realiza una búsqueda web si es necesario y genera una respuesta adecuada. El concepto de control subyacente se basa en MCP, un protocolo para la comunicación estructurada de herramientas en sistemas basados en agentes.&lt;/p&gt;</description></item><item><title>Tutorial de RAGFlow</title><link>https://aaron.de/es/posts/ragflow-tutorial/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ragflow-tutorial/</guid><description>&lt;p&gt;RAGFlow es un framework para la implementación estructurada de aplicaciones de Retrieval Augmented Generation (RAG). Ofrece una arquitectura modular en la que pasos de procesamiento individuales como la importación de documentos, el preprocesamiento de texto, la vectorización, la indexación y la generación de respuestas se pueden configurar y ejecutar por separado.&lt;/p&gt;
&lt;h1 id="models"&gt;Models&lt;/h1&gt;
&lt;p&gt;La plataforma admite diferentes soluciones de almacenamiento para datos vectoriales y permite la conexión de varios LLM. La lista de LLM compatibles se puede encontrar &lt;a href="https://ragflow.io/docs/dev/supported_models"&gt;aquí&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Guía práctica de la CLI de Hugging Face</title><link>https://aaron.de/es/posts/hugging-face-cli-praxisleitfaden/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/hugging-face-cli-praxisleitfaden/</guid><description>&lt;p&gt;Esta guía se basa en la CLI de Hugging Face desde la versión 0.34.4. En esta versión la sintaxis antigua huggingface-cli se sustituye por el nuevo comando hf. He creado este recordatorio para tener una referencia breve y clara de la CLI de Hugging Face. En lugar de buscar en la documentación oficial, aquí encuentro los comandos, descripciones y ejemplos más importantes de un vistazo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Qué es Hugging Face?&lt;/strong&gt;&lt;br&gt;
Hugging Face es una plataforma de aprendizaje automático. En el centro está el Hugging Face Hub, un repositorio público y privado para modelos de IA, conjuntos de datos y aplicaciones (Spaces). Desarrolladoras y desarrolladores pueden compartir, descargar y reutilizar modelos allí. Además del Hub, Hugging Face ofrece bibliotecas como transformers, datasets y diffusers, que facilitan el uso práctico de modelos de IA. El Hub funciona tanto como mercado como infraestructura para el desarrollo colaborativo.&lt;/p&gt;</description></item><item><title>Tutorial de ComfyUI</title><link>https://aaron.de/es/posts/comfyui-tutorial/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/comfyui-tutorial/</guid><description>&lt;p&gt;La inteligencia artificial ha adquirido la capacidad de crear imágenes detalladas y complejas a partir de meras descripciones de texto. La base tecnológica de esto son modelos de IA profundos que actúan como motores digitales para la generación de imágenes. Traducen conceptos escritos en datos visuales y generan, sobre esa base, gráficos completamente nuevos. Para controlar con precisión la generación de imágenes, los usuarios necesitan una interfaz adecuada. Ahí es donde entra en juego ComfyUI. ComfyUI es una interfaz gráfica flexible y potente, diseñada para trabajar con una amplia variedad de modelos de IA. A diferencia de otros programas que ocultan sus procesos tras menús simples, ComfyUI apuesta por un enfoque modular con nodos. Cada paso de la generación de imágenes, desde la elección del modelo hasta la imagen final, se representa como un bloque individual. El usuario conecta visualmente estos bloques y construye así todo el flujo de trabajo. Este método ofrece transparencia y control sobre todo el proceso de generación y permite a los usuarios gobernar el funcionamiento de la IA subyacente hasta el más mínimo detalle.&lt;/p&gt;</description></item><item><title>Análisis de documentos no estructurados con "Unstructured"</title><link>https://aaron.de/es/posts/analyse-strukturierter-dokumente-mit-unstructured/</link><pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/analyse-strukturierter-dokumente-mit-unstructured/</guid><description>&lt;p&gt;En el marco de esta prueba se utiliza el framework de código abierto &lt;a href="https://github.com/Unstructured-IO/unstructured"&gt;unstructured&lt;/a&gt; para evaluar el proceso de extracción de texto de documentos estructurados. El objetivo es comprobar en qué medida unstructured es adecuado para su uso práctico en sistemas de información basados en IA – especialmente con vista a la extracción de texto, el procesamiento semántico (chunking/tokenización) y la posterior generación de embeddings para sistemas de recuperación basados en vectores.&lt;/p&gt;</description></item><item><title>Lista de compras digital con React &amp; Supabase</title><link>https://aaron.de/es/posts/digitale-einkaufsliste-mit-react-supabase/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/digitale-einkaufsliste-mit-react-supabase/</guid><description>&lt;p&gt;He iniciado este proyecto para &lt;strong&gt;aprender React de forma práctica&lt;/strong&gt; – y no solo seguir tutoriales. Quería implementar un escenario de frontend realista que incluyera requisitos típicos como autenticación de usuarios, gestión de datos, interacciones de usuario y componentes de IU dinámicos.&lt;/p&gt;
&lt;p&gt;En lugar de crear un backend propio, decidí deliberadamente usar &lt;strong&gt;Supabase&lt;/strong&gt; – una plataforma Backend-as-a-Service que resulta ideal para fines de aprendizaje y prototipado. Así pude concentrarme por completo en el &lt;strong&gt;ecosistema de React&lt;/strong&gt;, incluyendo el enrutamiento, el estado, la estructura de componentes y la interfaz responsiva.&lt;/p&gt;</description></item><item><title>Evaluación emocional de música con MindsDB y GPT-4 basada en datos de Spotify</title><link>https://aaron.de/es/posts/emotionale-musikbewertung-mit-mindsdb-und-gpt-4-anhand-von-spotify-daten/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/emotionale-musikbewertung-mit-mindsdb-und-gpt-4-anhand-von-spotify-daten/</guid><description>&lt;p&gt;&lt;a href="https://mindsdb.com"&gt;MindsDB&lt;/a&gt; es una plataforma de código abierto desarrollada para permitir el aprendizaje automático, el análisis de series temporales y la integración de grandes modelos de lenguaje directamente en los flujos de trabajo tradicionales de bases de datos. La plataforma permite poner la funcionalidad de IA al alcance mediante consultas SQL sencillas, sin que sea necesaria una infraestructura de machine learning por separado.&lt;/p&gt;
&lt;p&gt;En esta entrada se presenta una de las múltiples funciones de MindsDB: la invocación de un gran modelo de lenguaje (GPT-4) a través de una plantilla predefinida que se rellena dinámicamente con valores de la base de datos. El objetivo es evaluar automáticamente la carga emocional de canciones de un conjunto de datos de Spotify existente. Para ello, se utiliza únicamente una parte del conjunto de funcionalidades de MindsDB, con el fin de conocer el funcionamiento básico y la interacción entre la base de datos y el LLM.&lt;/p&gt;</description></item><item><title>Animación facial en tiempo real para Metahumans con Live Link Face en Unreal Engine 5</title><link>https://aaron.de/es/posts/echtzeit-gesichtsanimation-fuer-metahumans-mit-live-link-face-in-unreal-engine-5/</link><pubDate>Sun, 20 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/echtzeit-gesichtsanimation-fuer-metahumans-mit-live-link-face-in-unreal-engine-5/</guid><description>&lt;p&gt;La transmisión de expresiones faciales en tiempo real a personajes digitales es un componente importante de los procesos modernos de animación y visualización. Con la aplicación Live Link Face de Epic Games y Unreal Engine 5, es posible transferir con precisión los movimientos faciales de una persona real a un personaje digital de Metahuman. Para ello se necesita un iPhone con cámara TrueDepth integrada, conectado a través de la red local al equipo donde se ejecuta Unreal Engine. En este tutorial se muestra cómo configurar la aplicación Live Link Face y conectarla con el motor, cómo preparar correctamente el Metahuman y cómo finalmente transmitir los datos faciales en vivo. El objetivo es establecer una conexión en tiempo real funcional, en la que el Metahuman se mueva de forma sincronizada con la mímica de la persona real.&lt;/p&gt;</description></item><item><title>Omniverse: Tutorial de Audio2Face</title><link>https://aaron.de/es/posts/omniverse-audio2face-tutorial/</link><pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/omniverse-audio2face-tutorial/</guid><description>&lt;p&gt;Audio2Face es una herramienta impulsada por IA dentro de NVIDIA Omniverse, diseñada específicamente para generar animaciones faciales realistas basadas únicamente en audio. Forma parte de la plataforma Omniverse, que ofrece un entorno de colaboración y simulación en tiempo real para flujos de trabajo en 3D. Audio2Face utiliza una red neuronal para convertir automáticamente el habla en expresiones faciales y movimientos vívidos. Normalmente se emplea Audio2Face para hacer hablar a personajes en juegos, películas o avatares digitales sin necesidad de animaciones de fotogramas clave complejas. Los movimientos generados pueden usarse directamente o transferirse a tus propios personajes 3D, lo que resulta especialmente interesante para producciones virtuales, gemelos digitales o aplicaciones interactivas.&lt;/p&gt;</description></item><item><title>Agente de eventos asistido por IA para eventos</title><link>https://aaron.de/es/posts/ki-gestuetzter-event-agent-fuer-veranstaltungen/</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ki-gestuetzter-event-agent-fuer-veranstaltungen/</guid><description>&lt;p&gt;En este proyecto he desarrollado un &lt;strong&gt;agente de IA&lt;/strong&gt;, que analiza automáticamente eventos de la región NRW y los filtra según criterios personales. El objetivo era filtrar, de entre una gran cantidad de eventos, solo aquellos que realmente son relevantes – basado en un prompt definido individualmente.&lt;/p&gt;
&lt;p&gt;Esta imagen muestra la lista de más de 350 eventos que tienen lugar en un solo día en Düsseldorf. En todo NRW son varios miles de eventos en un día.&lt;/p&gt;</description></item><item><title>Los LLMs no son una panacea: prueba práctica de clasificación musical basada en metadatos</title><link>https://aaron.de/es/posts/llms-sind-kein-allheilmittel-praxistest-zur-musik-klassifikation-anhand-von-metadaten/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/llms-sind-kein-allheilmittel-praxistest-zur-musik-klassifikation-anhand-von-metadaten/</guid><description>&lt;p&gt;La cuestión era si los modelos de lenguaje de gran tamaño (LLMs) actuales como GPT-4 o DeepSeek eran capaces de clasificar automáticamente y de forma fiable piezas musicales – específicamente canciones de salsa – en “Salsa Cubana” o “Salsa Línea” basándose en el título, el artista, la letra y los metadatos. Se sabía que la información disponible (metadatos, etiquetas de género, letras) era incompleta y en parte inconsistente. La prueba tenía como objetivo explícito determinar los límites prácticos de los LLM actuales en este contexto.&lt;/p&gt;</description></item><item><title>Tutorial de Omniverse</title><link>https://aaron.de/es/posts/omniverse-tutorial/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/omniverse-tutorial/</guid><description>&lt;h3 id="qué-es-omniverse"&gt;&lt;strong&gt;¿Qué es Omniverse?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Omniverse es una plataforma de NVIDIA con la que se pueden crear, conectar y simular mundos 3D virtuales – y todo en tiempo real. Omniverse es una plataforma abierta para desarrolladores, diseñadores, ingenieros, investigadores y creativos, para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conectar aplicaciones 3D entre sí (p. ej. Blender, Maya, Unreal Engine)&lt;/li&gt;
&lt;li&gt;Colaborar en una única escena – en vivo y de forma simultánea.&lt;/li&gt;
&lt;li&gt;Crear simulaciones físicamente realistas y aplicaciones impulsadas por IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="para-qué-se-utiliza-omniverse"&gt;&lt;strong&gt;¿Para qué se utiliza Omniverse?&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Diseño, visualización y simulación de objetos como, por ejemplo, vehículos en tiempo real.&lt;/li&gt;
&lt;li&gt;Gemelos digitales de fábricas para optimizar procesos.&lt;/li&gt;
&lt;li&gt;Creación de assets y simulaciones visuales.&lt;/li&gt;
&lt;li&gt;Entrenamiento con datos sintéticos, p. ej. para vehículos autónomos.&lt;/li&gt;
&lt;li&gt;Colaboración en tiempo real al animar y renderizar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="qué-es-usd"&gt;&lt;strong&gt;¿Qué es USD?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Omniverse se basa en el formato OpenUSD (Universal Scene Description) de Pixar – un formato de archivo que puede describir escenas 3D complejas.&lt;/p&gt;</description></item><item><title>Configurar localmente Wan 2.1 con ComfyUI con soporte GPU</title><link>https://aaron.de/es/posts/wan-2-1-mit-comfyui-inkl-gpu-support-lokal-einrichten/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/wan-2-1-mit-comfyui-inkl-gpu-support-lokal-einrichten/</guid><description>&lt;p&gt;ComfyUI es una interfaz gráfica basada en nodos para controlar y modificar modelos de IA para la generación de imágenes y vídeos. &lt;strong&gt;Wan 2.1&lt;/strong&gt; es un &lt;strong&gt;modelo de texto a vídeo (T2V)&lt;/strong&gt; desarrollado específicamente para la generación de vídeos a partir de entradas de texto.&lt;/p&gt;
&lt;p&gt;Esta guía describe paso a paso cómo configurar &lt;strong&gt;ComfyUI con Wan 2.1&lt;/strong&gt; de forma local. Cada sección explica los componentes necesarios, por qué son necesarios y cómo instalarlos correctamente. Esta guía requiere &lt;strong&gt;Python 10&lt;/strong&gt; y una GPU con &lt;strong&gt;soporte CUDA&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Demo del agente de IA: Detección de spam avanzada vía ChatGPT</title><link>https://aaron.de/es/posts/ki-agent-demo-erweiterte-spam-erkennung-via-chatgpt/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ki-agent-demo-erweiterte-spam-erkennung-via-chatgpt/</guid><description>&lt;p&gt;En este proyecto he desarrollado una extensión para Thunderbird que utiliza ChatGPT para la detección de spam avanzada. Los correos entrantes se analizan automáticamente y se clasifican según varios criterios. Un servidor local de Flask gestiona la comunicación con ChatGPT y evalúa si un mensaje debe clasificarse como spam. La implementación sirve como demostración para explorar las posibilidades de un filtrado asistido por IA en Thunderbird.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-9.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proceso&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Tan pronto Thunderbird recibe un nuevo correo, la extensión se activa. El mensaje se intercepta antes de que el usuario lo lea. La extensión extrae el asunto, el remitente y el texto del correo.&lt;/p&gt;</description></item><item><title>Ejecutar Ollama con modelos compatibles con GPU NVIDIA en Docker sin conexión + OpenWebUI</title><link>https://aaron.de/es/posts/ollama-inkl-modell-mit-nvidia-gpu-unterstuetzung-unter-docker-und-win-11-ausfuehren-openwebui/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ollama-inkl-modell-mit-nvidia-gpu-unterstuetzung-unter-docker-und-win-11-ausfuehren-openwebui/</guid><description>&lt;p&gt;Aquí se ejecutó Ollama con soporte de GPU NVIDIA bajo Docker en un sistema Windows 11. Se utilizó OpenWebUI como interfaz amigable para operar modelos de IA localmente. OpenWebUI ofrece la ventaja de que los usuarios pueden cambiar fácilmente entre diferentes modelos, gestionar solicitudes y controlar el uso de la IA cómodamente mediante una interfaz gráfica. Además, permite una mejor supervisión de las instancias en ejecución y facilita la prueba de distintos modelos sin cambios de configuración manuales.&lt;/p&gt;</description></item><item><title>Red neuronal con MNIST y TensorFlow</title><link>https://aaron.de/es/posts/neuronales-netzwerk-mit-mnist-und-tensorflow/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/neuronales-netzwerk-mit-mnist-und-tensorflow/</guid><description>&lt;p&gt;Este código muestra cómo se entrena una red neuronal artificial con el conjunto de datos MNIST para clasificar dígitos escritos a mano (0-9). El objetivo es que el modelo pueda predecir, a partir de los datos de imagen, qué dígito está representado.&lt;/p&gt;
&lt;p&gt;Esto se logra mediante:&lt;br&gt;
1. Carga y preprocesamiento de los datos de imagen de MNIST.&lt;br&gt;
2. Creación de una red neuronal con varias capas (capas).&lt;br&gt;
3. Entrenamiento de la red con datos de entrenamiento.&lt;br&gt;
4. Evaluación del rendimiento del modelo con datos de prueba.&lt;br&gt;
5. Prueba del modelo con nuevos datos de ejemplo.&lt;/p&gt;</description></item><item><title>Uso local de Ollama con llama3.2/3.3/DeepSeekv3 + llamada REST.</title><link>https://aaron.de/es/posts/ollama-mit-llama3-2-3-3-lokal-installieren/</link><pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ollama-mit-llama3-2-3-3-lokal-installieren/</guid><description>&lt;ol&gt;
&lt;li&gt;Descargar e instalar el entorno de ejecución LLM de Ollama (&lt;a href="https://ollama.com/"&gt;descargar&lt;/a&gt;). Tras la instalación, se puede acceder al servidor en &lt;a href="http://127.0.0.1:11434/"&gt;http://127.0.0.1:11434/&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;img src="images/grafik.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;3. Mostrar la lista de modelos instalados. La lista debería estar vacía.&lt;/p&gt;
&lt;p&gt;ollama list&lt;/p&gt;
&lt;p&gt;4. Descargar llama3.2 LLM y DeepSeekv3 (404 GB en disco duro y 413 GB de RAM).&lt;/p&gt;
&lt;p&gt;ollama pull llama3.2 ollama pull deepseek-v3&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Ollama_003.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;En la página web de Meta se pueden encontrar las versiones actuales del LLM.&lt;/p&gt;</description></item><item><title>Tutorial de Spring AI / OpenAI</title><link>https://aaron.de/es/posts/spring-ai-openai-tutorial/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/spring-ai-openai-tutorial/</guid><description>&lt;h1 id="enviar-pregunta-a-openai-vía-spring-ai-y-mostrar-la-respuesta"&gt;Enviar pregunta a OpenAI vía Spring AI y mostrar la respuesta&lt;/h1&gt;
&lt;p&gt;Crear clave OpenAI&lt;br&gt;
&lt;a href="https://platform.openai.com/settings/organization/api-keys"&gt;https://platform.openai.com/settings/organization/api-keys&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Luego, establecer la clave como variable de entorno: OPENAI_API_KEY&lt;/p&gt;
&lt;p&gt;Crear nuevo proyecto Spring Boot:&lt;br&gt;
&lt;a href="https://start.spring.io/"&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-7.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Dentro de la aplicación Spring Boot, es decir, en el archivo &amp;ldquo;application.properties&amp;rdquo;, referenciar la clave de OpenAI o la variable de entorno (OPENAI_API_KEY).&lt;/p&gt;
&lt;p&gt;Después de crear la interfaz y las clases, la estructura del proyecto debería verse así:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-9.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Después de ejecutar la prueba unitaria, la respuesta a la pregunta &amp;ldquo;Who would win in a fight between Superman and Chuck Norris?&amp;rdquo; debería mostrarse. En este caso:&lt;/p&gt;</description></item><item><title>Whisper: Transcripción automática de vídeos a texto</title><link>https://aaron.de/es/posts/whisper-automatische-transkription-von-videos-in-text/</link><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/whisper-automatische-transkription-von-videos-in-text/</guid><description>&lt;p&gt;En esta entrada te explico cómo usar &lt;strong&gt;Whisper&lt;/strong&gt;, una herramienta basada en IA de OpenAI, para la transcripción automática de vídeos. Whisper puede convertir con precisión el lenguaje hablado en varios idiomas – incluido el alemán – en texto. Por ello, es ideal para transcribir, por ejemplo, entrevistas, conferencias o vídeos personales.&lt;/p&gt;
&lt;h1 id="instalar-python-310"&gt;&lt;strong&gt;Instalar Python 3.10&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Whisper requiere el lenguaje de programación Python y necesita una versión entre la 3.7 y la 3.10. En esta guía usamos Python 3.10 para evitar problemas de compatibilidad.&lt;/p&gt;</description></item><item><title>Configurar DNS sobre HTTPS (DoH) en Firefox</title><link>https://aaron.de/es/posts/dns-ueber-https-doh-innerhalb-von-firefox-einstellen/</link><pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/dns-ueber-https-doh-innerhalb-von-firefox-einstellen/</guid><description>&lt;p&gt;Abrir la configuración avanzada de Firefox: &lt;strong&gt;about:config&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;network.trr.mode&lt;/strong&gt; cambiar de 0 a &lt;strong&gt;2&lt;/strong&gt;.&lt;br&gt;
&lt;strong&gt;network.trr.uri&lt;/strong&gt; cambiar a &lt;strong&gt;&lt;a href="https://mozilla.cloudflare-dns.com/dns-query"&gt;https://mozilla.cloudflare-dns.com/dns-query&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;network.trr.mode es una opción de configuración en Firefox que controla el uso de DNS over HTTPS (DoH). TRR significa Trusted Recursive Resolver y se refiere al uso de DoH para enviar consultas DNS a través de una conexión HTTPS cifrada, en lugar de mediante consultas DNS tradicionales sin cifrar.&lt;/p&gt;
&lt;p&gt;0 – DoH está desactivado:&lt;br&gt;
Firefox utiliza exclusivamente el DNS normal sin cifrar (vía UDP o TCP) y no envía consultas DNS por HTTPS.&lt;/p&gt;</description></item><item><title>Embedding mediante la base de datos vectorial ChromaDB</title><link>https://aaron.de/es/posts/embedding-via-chromadb-vektordatenbank/</link><pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/embedding-via-chromadb-vektordatenbank/</guid><description>&lt;p&gt;Esta entrada de blog trata el concepto de embeddings y bases de datos vectoriales. En primer lugar se explica qué son los embeddings y cómo se utilizan en el campo del Natural Language Processing (NLP). A continuación, se ofrece una explicación de los vectores en un espacio con tres coordenadas y su extensión a vectores multidimensionales. Por último, se presenta ChromaDB, una base de datos vectorial especializada.&lt;/p&gt;
&lt;h1 id="qué-es-un-embedding"&gt;¿Qué es un embedding?&lt;/h1&gt;
&lt;p&gt;Un &lt;strong&gt;embedding&lt;/strong&gt; es una técnica en el ámbito del aprendizaje automático y el procesamiento de datos que tiene como objetivo transformar objetos como palabras, frases o documentos en un espacio vectorial continuo. En este espacio vectorial, los objetos similares están representados por vectores similares, lo que significa que se encuentran próximos entre sí. Los embeddings se utilizan frecuentemente para capturar y analizar el significado semántico de los textos.&lt;/p&gt;</description></item><item><title>Interfaz de usuario de Chatbot con Streamlit</title><link>https://aaron.de/es/posts/chatbot-ui-via-streamlit/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/chatbot-ui-via-streamlit/</guid><description>&lt;p&gt;Reenviar solicitudes 1:1 a ChatGPT a través de &lt;a href="https://streamlit.io/"&gt;Streamlit&lt;/a&gt; y mostrar la respuesta.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-6.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;streamlit run ChatUI.py&lt;/p&gt;</description></item><item><title>LangChain &amp; ChatGPT</title><link>https://aaron.de/es/posts/langchain-chatgpt-tutorial/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/langchain-chatgpt-tutorial/</guid><description>&lt;h1 id="enviar-mensaje-vía-langchain-a-chatgpt"&gt;&lt;strong&gt;Enviar mensaje vía LangChain a ChatGPT&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Aquí enviamos un mensaje vía LangChain a ChatGPT y mostramos la respuesta.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="realizar-un-encadenamiento-con"&gt;&lt;strong&gt;Realizar un encadenamiento con &amp;ldquo;chain&amp;rdquo;&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Usa &amp;ldquo;chain&amp;rdquo; para encadenar el modelo y el parser.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="prompts-de-plantilla"&gt;&lt;strong&gt;Prompts de plantilla&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Preparar los prompts con una plantilla.&lt;/p&gt;
&lt;p&gt;Usa la plantilla:&lt;/p&gt;
&lt;p&gt;El idioma de destino se externaliza:&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="más-encadenamientos"&gt;&lt;strong&gt;Más encadenamientos&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Encadena la plantilla con el modelo y el parser:&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="servidor-mediante-fastapi-y-endpoint-rest"&gt;&lt;strong&gt;Servidor mediante FastAPI y endpoint REST&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Crea mediante FastAPI un servidor. El servidor carga la aplicación (app.py), recibe la petición REST y devuelve la traducción:&lt;/p&gt;</description></item><item><title>Tutorial de Elastic Stack (Filebeat, Logstash, Elasticearch, Kibana)</title><link>https://aaron.de/es/posts/filebeat-logstash-tutorial/</link><pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/filebeat-logstash-tutorial/</guid><description>&lt;p&gt;&lt;strong&gt;Logstash&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Logstash es un marco de procesamiento de eventos. Con Logstach puedes importar datos de distintos tipos de marcos y orígenes de entrada. En el siguiente paso puedes filtrar y modificar los datos y, en el paso final, puedes exportarlos a diferentes formatos y marcos. Por ejemplo, puedes leer los datos desde un marco como Beats y reenviarlos a Elasticsearch para almacenamiento y procesamiento adicional. Dentro de Logstash puedes procesar, filtrar y mapear los distintos formatos de entrada y salida:&lt;/p&gt;</description></item><item><title>Encender/apagar Elgato Key Light mediante acceso directo/botón de Windows</title><link>https://aaron.de/es/posts/turn-on-off-elgato-key-light-via-windows-shortcut-button/</link><pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/turn-on-off-elgato-key-light-via-windows-shortcut-button/</guid><description>&lt;p&gt;Busca la &lt;strong&gt;dirección IP&lt;/strong&gt; de tu Key Light mediante &lt;a href="https://www.nirsoft.net/utils/wireless_network_watcher.html"&gt;Wireless Network Watcher&lt;/a&gt; por ejemplo 192.168.2.227&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/WirelessNetworkWatcher.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Tu Key Light tiene un servidor web integrado que escucha en el puerto 9123 por ejemplo 192.168.2.227:9123&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/ElgatoWebserver.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Envía una petición &lt;strong&gt;GET&lt;/strong&gt; por ejemplo mediante &lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt; al siguiente endpoint para obtener más información sobre tu Key Light: http://192.168.2.227:9123**/elgato/lights**&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/KeyLight_Postman.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Enciende la luz usando la siguiente petición &lt;strong&gt;PUT&lt;/strong&gt;. Debes establecer el valor &amp;lsquo;on&amp;rsquo; a &amp;lsquo;1&amp;rsquo; en lugar de &amp;lsquo;0&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Fundamentos de fotografía + exposiciones de larga duración nítidas y tomas de paisaje</title><link>https://aaron.de/es/posts/fotografie-grundlagen-scharfe-langzeitbelichtungsaufnahmen-scharfe-landschaftsaufnahmen/</link><pubDate>Sat, 29 Jan 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/fotografie-grundlagen-scharfe-langzeitbelichtungsaufnahmen-scharfe-landschaftsaufnahmen/</guid><description>&lt;figure&gt;
&lt;p&gt;
&lt;img src="images/13591624245_30ba853a7f_o.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;Mejor calidad: &lt;a href="https://www.flickr.com/photos/aaron_kreis/13591624245/"&gt;https://www.flickr.com/photos/aaron_kreis/13591624245/&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="images/35959541982_b61a823d14_o.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;Mejor calidad: &lt;a href="https://www.flickr.com/photos/aaron_kreis/35959541982/"&gt;https://www.flickr.com/photos/aaron_kreis/35959541982/&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Para crear exposiciones de larga duración perfectamente nítidas, hay que conocer algunos conceptos básicos de la fotografía y ajustar o configurar la cámara en consecuencia. Primero explico los conceptos de forma superficial y más adelante abordaré la interacción entre ellos, p. ej., qué influencia tiene el valor ISO en el tiempo de exposición, etc.&lt;br&gt;
Quien quiera crear por sí mismo imágenes como las mostradas arriba, debe conocer los siguientes conceptos básicos y sus dependencias mutuas.&lt;/p&gt;</description></item><item><title>Angular &amp; plataforma IoT de Cumulocity</title><link>https://aaron.de/es/posts/angular-cumulocity-iot/</link><pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/angular-cumulocity-iot/</guid><description>&lt;p&gt;Se describen los siguientes temas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instalación de la CLI de la plataforma IoT de Cumulocity (C8Y)&lt;/li&gt;
&lt;li&gt;Creación de proyecto con la CLI de C8Y&lt;/li&gt;
&lt;li&gt;Creación de componentes&lt;/li&gt;
&lt;li&gt;Creación de una navegación (enrutamiento)&lt;/li&gt;
&lt;li&gt;Branding personalizado y uso de Bootstrap 4 en lugar de la versión 3 (predeterminado)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En primer lugar necesitamos la Angular CLI de Cumulocity (C8Y) (Command Line Interface). Podemos instalar la CLI de la siguiente manera:&lt;br&gt;
&lt;strong&gt;npm install -g @c8y/cli&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Tutorial de Angular</title><link>https://aaron.de/es/posts/angular-tutorial/</link><pubDate>Sat, 13 Apr 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/angular-tutorial/</guid><description>&lt;p&gt;Este tutorial muestra cómo se puede implementar la siguiente aplicación de libro de visitas:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/screen1.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/bootstrap_page_2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Se necesitan las siguientes aplicaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/"&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/cli"&gt;Angular CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instalación de Angular CLI&lt;br&gt;
&lt;strong&gt;npm install -g @angular/cli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Generar nuevo proyecto (libro de visitas)&lt;br&gt;
&lt;strong&gt;ng new guestbook&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/create_first_project.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/create_first_project_2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Instalación de la biblioteca Bootstrap vía gestor de paquetes &amp;rsquo;npm&amp;rsquo;:&lt;br&gt;
&lt;strong&gt;npm install &amp;ndash;save bootstrap&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Iniciar servidor de desarrollo para probar la aplicación:&lt;br&gt;
&lt;strong&gt;ng serve&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La aplicación está posteriormente disponible en la siguiente dirección:&lt;br&gt;
&lt;a href="http://localhost:4200/"&gt;http://localhost:4200/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Tutorial de MongoDB</title><link>https://aaron.de/es/posts/mongodb-tutorial/</link><pubDate>Sun, 31 Mar 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/mongodb-tutorial/</guid><description>&lt;p&gt;MongoDB (derivado del inglés humongous, „gigantesco“) es una base de datos NoSQL orientada a documentos escrita en el lenguaje de programación C++. Al ser orientada a documentos, puede gestionar colecciones de documentos similares a JSON. De este modo, muchas aplicaciones pueden modelar datos de forma más natural, ya que los datos pueden anidarse en jerarquías complejas, pero siguen siendo consultables e indexables. [Wikipedia]&lt;/p&gt;
&lt;p&gt;Con el siguiente comando se puede iniciar el servidor de MongoDB. Sin embargo, primero debe crearse la siguiente carpeta: C:\data\db. Aquí se almacenan los datos de la BD.&lt;br&gt;
mongod&lt;/p&gt;</description></item><item><title>Proceso OAuth 2.0 (alto nivel)</title><link>https://aaron.de/es/posts/oauth-2-0-prozess-high-level/</link><pubDate>Thu, 21 Mar 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/oauth-2-0-prozess-high-level/</guid><description>&lt;p&gt;La primera imagen muestra cómo un usuario con su dispositivo, a través de una aplicación móvil (por ejemplo, un cliente de correo electrónico) de una empresa desconocida, desea consultar los correos electrónicos (Resources) de, por ejemplo, un servidor de Google (Resource Server). Para llevar a cabo la operación, el usuario debe introducir dentro de la aplicación móvil sus credenciales de Google. Sin embargo, todo esto conlleva ciertos riesgos, ya que a) el cliente de correo electrónico puede guardar la contraseña y b) la aplicación puede usar la contraseña para, por ejemplo, acceder a otros servicios de Google.&lt;/p&gt;</description></item><item><title>Tutorial de JMeter - Parte 1</title><link>https://aaron.de/es/posts/jmeter-tutorial-teil-1/</link><pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/jmeter-tutorial-teil-1/</guid><description>&lt;p&gt;&lt;a href="https://jmeter.apache.org/download_jmeter.cgi"&gt;Descargar&lt;/a&gt; JMeter&lt;/p&gt;
&lt;p&gt;Iniciar JMeter:&lt;br&gt;
C:&lt;path&gt;\apache-jmeter-5.1.1\bin\ApacheJMeter.jar&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grabador de Script de Prueba HTTP(S)&lt;/strong&gt;&lt;br&gt;
Para probar el rendimiento de un sitio web con JMeter, primero debemos grabar el flujo de trabajo (petición/respuesta). La grabación del flujo de trabajo en una conexión HTTPS se realiza de la siguiente manera:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/001_test_script.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;JMeter ofrece un servidor proxy que, en la configuración predeterminada, escucha en el puerto 8888.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/003_jm_setup1.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Como no nos interesan las imágenes, archivos CSS, etc., los excluimos:&lt;/p&gt;</description></item><item><title>Alexa Skill &amp; AWS Lambda &amp; paquetes npm &amp; Cumulocity</title><link>https://aaron.de/es/posts/alexa-skill-aws-lambda/</link><pubDate>Wed, 30 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/alexa-skill-aws-lambda/</guid><description>&lt;p&gt;El siguiente ejemplo muestra la creación de una aplicación sencilla de Alexa (Skill) con ayuda de &amp;lsquo;Alexa Developer Console&amp;rsquo; y &amp;lsquo;AWS Lambda&amp;rsquo;.&lt;/p&gt;
&lt;h2 id="consola-de-desarrollador-de-alexa"&gt;Consola de Desarrollador de Alexa&lt;/h2&gt;
&lt;p&gt;
&lt;img src="images/03_overview.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;La &amp;lsquo;Alexa Developer Console&amp;rsquo; nos ayuda a crear el denominado &amp;lsquo;Interaction Model&amp;rsquo;. Este modelo sirve para describir la aplicación deseada y definir las frases y parámetros a los que Alexa debería responder más adelante. La programación de la lógica NO se realiza en la Developer Console, sino en AWS Lambda.&lt;/p&gt;</description></item><item><title>IBM Cloud &amp; Node-RED</title><link>https://aaron.de/es/posts/ibm-cloud-node-red/</link><pubDate>Sun, 27 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ibm-cloud-node-red/</guid><description>&lt;p&gt;Objetivo&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuración del editor de Node-RED dentro de IBM Cloud&lt;/li&gt;
&lt;li&gt;El envío de mensajes vía MQTT a un nodo MQTT de Node-RED&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes solicitar acceso a IBM Cloud en la siguiente URL: &lt;a href="https://www.ibm.com/cloud-computing/bluemix/de"&gt;IBM Cloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A continuación puedes crear aquí un nuevo &amp;lsquo;recurso&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/IBMCloud_01.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Dentro del catálogo se nos ofrecen diversos recursos en la nube (aplicaciones).&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/IBM-Katalog.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Seleccionamos Node-RED. Esta aplicación nos proporciona el editor de Node-RED dentro de IBM Cloud.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/IBMCloud_02.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>MQTT + Plataforma IoT Cumulocity</title><link>https://aaron.de/es/posts/mqtt-cumulocity-iot-plattform/</link><pubDate>Sat, 26 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/mqtt-cumulocity-iot-plattform/</guid><description>&lt;h2 id="resumen-de-mqtt-fuente-wikipedia"&gt;Resumen de MQTT [Fuente: &lt;a href="https://de.wikipedia.org/wiki/MQTT"&gt;Wikipedia&lt;/a&gt;]&lt;/h2&gt;
&lt;p&gt;MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería abierto para la comunicación máquina a máquina (M2M) que permite la transmisión de datos de telemetría en forma de mensajes entre dispositivos, p.ej. sensores.&lt;br&gt;
La Internet Assigned Numbers Authority (IANA) reserva para MQTT los puertos 1883 y 8883. Los mensajes MQTT se pueden cifrar con el protocolo TLS.&lt;br&gt;
La especificación MQTT distingue entre redes basadas en TCP/IP y no TCP/IP.&lt;br&gt;
MQTT es un protocolo cliente-servidor. Los clientes envían al servidor (“Broker”) tras establecer la conexión mensajes con un topic, que clasifica el mensaje jerárquicamente; por ejemplo Cocina/Nevera/Temperatura o Coche/Rueda/3/Presión. Los clientes pueden suscribir estos topics, y el servidor reenvía los mensajes recibidos a los suscriptores correspondientes.&lt;/p&gt;</description></item><item><title>Ejemplo de TestCafé</title><link>https://aaron.de/es/posts/testcafe-beispiel/</link><pubDate>Thu, 13 Dec 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/testcafe-beispiel/</guid><description>&lt;p&gt;Descargar &lt;a href="https://devexpress.github.io/testcafe/"&gt;Enlace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configuración del entorno&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/3.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/4.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/5.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Ejemplo 1:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/6.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Ejemplo 2: Uso de un page object&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/1.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Login se ha externalizado en un page object:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;npm run test:firefox -c 8 ejecuta la prueba en paralelo en 8 instancias de Firefox.&lt;/p&gt;</description></item><item><title>Descripción de Dispositivo IO-Link (alto nivel)</title><link>https://aaron.de/es/posts/io-link-device-description-high-level-2/</link><pubDate>Tue, 04 Sep 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/io-link-device-description-high-level-2/</guid><description>&lt;p&gt;Bajo la marca &lt;strong&gt;IO-Link&lt;/strong&gt; existe un &lt;a href="https://de.wikipedia.org/wiki/Kommunikationssystem" title="Kommunikationssystem"&gt;sistema de comunicación&lt;/a&gt; para conectar &lt;a href="https://de.wikipedia.org/wiki/Smart-Sensor" title="Smart-Sensor"&gt;sensores inteligentes&lt;/a&gt; y &lt;a href="https://de.wikipedia.org/wiki/Aktor" title="Aktor"&gt;actuadores&lt;/a&gt; a un sistema de automatización normalizado según la norma &lt;a href="https://de.wikipedia.org/wiki/IEC_61131" title="IEC 61131"&gt;IEC 61131-9&lt;/a&gt; bajo la designación &lt;strong&gt;S&lt;/strong&gt;ingle-drop &lt;strong&gt;d&lt;/strong&gt;igital &lt;strong&gt;c&lt;/strong&gt;ommunication &lt;strong&gt;i&lt;/strong&gt;nterface for small sensors and actuators (SDCI). La estandarización abarca tanto los datos de conexión eléctrica como un protocolo de comunicación digital mediante el cual los sensores y actuadores intercambian datos con el sistema de automatización.&lt;/p&gt;
&lt;p&gt;Un sistema IO-Link consta de un maestro IO-Link y uno o varios dispositivos IO-Link, es decir, sensores o actuadores. El maestro IO-Link proporciona la interfaz con el sistema de control superior (&lt;a href="https://de.wikipedia.org/wiki/Speicherprogrammierbare_Steuerung" title="Speicherprogrammierbare Steuerung"&gt;SPS&lt;/a&gt;) y gestiona la comunicación con los dispositivos IO-Link conectados.&lt;/p&gt;</description></item><item><title>Modbus: Resumen de la especificación (alto nivel)</title><link>https://aaron.de/es/posts/modbus-zusammenfassung-der-spezifikation-high-level/</link><pubDate>Sun, 12 Aug 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/modbus-zusammenfassung-der-spezifikation-high-level/</guid><description>&lt;p&gt;El protocolo Modbus es un protocolo de comunicación que se basa en una arquitectura Maestro/Esclavo o Cliente/Servidor. Fue creado en 1979 por Gould-Modicon para la comunicación con sus controladores lógicos programables. En la industria, Modbus se ha convertido en un estándar de facto, ya que es un protocolo abierto. Desde 2007, la versión Modbus TCP forma parte de la norma IEC 61158. [Wikipedia]&lt;/p&gt;
&lt;p&gt;Como muestra el siguiente diagrama, Modbus permite la comunicación a través de diferentes redes:&lt;/p&gt;</description></item><item><title>E.D.D.I - Instalación de la plataforma de chatbot de código abierto</title><link>https://aaron.de/es/posts/e-d-d-i-open-source-chatbot-platform-tutorial/</link><pubDate>Wed, 08 Aug 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/e-d-d-i-open-source-chatbot-platform-tutorial/</guid><description>&lt;p&gt;&lt;strong&gt;Instalación&lt;/strong&gt; E.D.D.I se puede instalar tanto desde el código fuente como en un contenedor Docker. Procederé a realizar la instalación desde las fuentes.&lt;/p&gt;
&lt;p&gt;Primero debemos instalar las siguientes aplicaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"&gt;Java SDK en la versión 8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/downloads"&gt;git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://maven.apache.org/"&gt;Maven&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/download-center?jmp=nav#community"&gt;MongoDB Community Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Establecer variables de entorno para Java y Maven:
&lt;img src="images/eddi_umgebungsvariablen.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Establecer rutas para Java, Maven y MongoDB:
&lt;img src="images/eddi_path.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Probar rutas:
&lt;img src="images/eddi_versionen.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Descargar fuentes vía git:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cd &amp;lt;carpeta_destino&amp;gt;&lt;/li&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/labsai/EDDI.git"&gt;https://github.com/labsai/EDDI.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src="images/eddi_git_clone.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Construir la aplicación con Maven:&lt;/p&gt;</description></item><item><title>CoAP: Resumen de la especificación (alto nivel)</title><link>https://aaron.de/es/posts/coap-zusammenfassung-der-spezifikation-high-level/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/coap-zusammenfassung-der-spezifikation-high-level/</guid><description>&lt;p&gt;&lt;strong&gt;Constrained Application Protocol (CoAP)&lt;/strong&gt; CoAP es un protocolo de aplicaciones de Internet, especificado en la RFC 7252. El protocolo sirve para la comunicación de dispositivos &amp;rsquo;nodos&amp;rsquo; p. ej. dispositivos embebidos que consumen poca energía (low-power) y operan en redes con pérdida de datos (lossy networks), p. ej. IPv6 sobre Low-Power Wireless Personal Area Networks (6LoWPANs). CoAP también puede utilizarse en redes basadas en Internet para comunicación móvil vía SMS. CoAP se emplea principalmente en el contexto de Internet de las Cosas (IoT) y Machine-to-Machine (M2M), ya que normalmente se transfieren datos de dispositivos/sensores de pequeño tamaño. Dado que este tipo de datos se transmite en intervalos regulares (ciclos), paquetes individuales (perdidos) no afectan significativamente a los sistemas o aplicaciones de procesamiento, como plataformas IoT que procesan y/o representan gráficamente datos de sensores (temperatura, número de revoluciones, etc.).&lt;/p&gt;</description></item><item><title>Tutorial de Wireshark</title><link>https://aaron.de/es/posts/wireshark-tutorial/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/wireshark-tutorial/</guid><description>&lt;p&gt;Wireshark es un programa libre para el análisis y la presentación gráfica de protocolos de datos (Sniffer). Tales protocolos de datos son utilizados por ordenadores en diversos medios de comunicación como la red local o USB. La captura de la comunicación puede ser útil al buscar errores o al evaluar el contenido de la comunicación. Wireshark muestra en una captura tanto las cabeceras de los protocolos como el contenido transportado. El programa se apoya en la salida de pequeños subprogramas como pcap o usbpcap para grabar el contenido de la comunicación en el medio de transmisión correspondiente. [wikipedia]&lt;/p&gt;</description></item><item><title>MQTT: Resumen de la especificación (de alto nivel)</title><link>https://aaron.de/es/posts/mqtt-spezifikation/</link><pubDate>Mon, 09 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/mqtt-spezifikation/</guid><description>&lt;p&gt;&lt;strong&gt;MQTT&lt;/strong&gt; (&lt;strong&gt;Message Queue Telemetry Transport&lt;/strong&gt;) es un protocolo de mensajería abierto para la comunicación máquina a máquina (M2M), que permite la transmisión de datos de telemetría en forma de mensajes entre dispositivos, a pesar de altas demoras o redes con recursos limitados. Los dispositivos correspondientes abarcan desde sensores y actuadores, teléfonos móviles, sistemas embebidos en vehículos o portátiles hasta ordenadores completamente desarrollados. [Wikipedia]&lt;/p&gt;
&lt;p&gt;La información que se presenta a continuación sobre la especificación proviene, entre otros, de la especificación MQTT actual de &lt;a href="http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html"&gt;IBM&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Definición de API con ayuda de Swagger y YAML</title><link>https://aaron.de/es/posts/api-definition-mit-hilfe-von-swagger-und-yaml/</link><pubDate>Sun, 03 Dec 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/api-definition-mit-hilfe-von-swagger-und-yaml/</guid><description>&lt;p&gt;&lt;strong&gt;Instalación de Swagger:&lt;/strong&gt; npm install -g swagger&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creación del proyecto:&lt;/strong&gt; swagger project create &amp;lt;project_name&amp;gt;
&lt;img src="images/new_project.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Iniciar proyecto:&lt;/strong&gt; swagger project start
&lt;img src="images/start_project.png" alt="" title="" loading="lazy" /&gt;
&lt;img src="images/curl.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Editar proyecto:&lt;/strong&gt; swagger project edit
&lt;img src="images/edit.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;La notación se define dentro de la &lt;a href="https://github.com/OAI/OpenAPI-Specification/tree/master/versions"&gt;OpenAPI Specification&lt;/a&gt;. Representación visual de la especificación de Arnaud Lauret: &lt;a href="http://openapi-specification-visual-documentation.apihandyman.io/"&gt;Link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/visual.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Definición de la API&lt;/strong&gt; (fragmento):
&lt;img src="images/code.png" alt="" title="" loading="lazy" /&gt;
&lt;a href="https://github.com/netperformance/swagger/blob/master/api/swagger/swagger.yaml"&gt;Descargar swagger.yaml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verificar código YAML&lt;/strong&gt;: swagger project verify
&lt;img src="images/verify.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Incluir archivo mock&lt;/strong&gt; En la carpeta del proyecto bajo el directorio &amp;lsquo;mocks&amp;rsquo; crear un nuevo archivo mock p.ej. getAllEntries.js .&lt;/p&gt;</description></item><item><title>Conceptos de Spring Cloud Netflix</title><link>https://aaron.de/es/posts/spring-cloud-netflix-konzepte/</link><pubDate>Wed, 25 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/spring-cloud-netflix-konzepte/</guid><description>&lt;p&gt;&lt;strong&gt;¿Qué es Spring?&lt;/strong&gt; El Spring Framework (abreviado Spring) es un framework de código abierto para la plataforma Java. El objetivo de Spring es simplificar el desarrollo con Java/Java EE y promover buenas prácticas de programación. Spring ofrece, con un amplio espectro de funcionalidades, una solución integral para el desarrollo de aplicaciones y sus lógicas de negocio; en ello, la desacoplo de los componentes de la aplicación ocupa un lugar central. [wikipedia]&lt;/p&gt;</description></item><item><title>Ejemplo de microservicio con Spring Boot y Netflix (Zuul y Eureka)</title><link>https://aaron.de/es/posts/microservices-netflix/</link><pubDate>Tue, 24 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/microservices-netflix/</guid><description>&lt;p&gt;La aplicación:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Frontend.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Se crearon los siguientes microservicios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;microservice-frontend&lt;/li&gt;
&lt;li&gt;microservice-backend&lt;/li&gt;
&lt;li&gt;microservice-proxy-zuul&lt;/li&gt;
&lt;li&gt;microservice-discovery-eureka&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Descargar: &lt;a href="Microservices.zip"&gt;Microservicios&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Salida de Eureka:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Eureka.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>BPMN 2.0: Chuleta para la notación básica</title><link>https://aaron.de/es/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/</link><pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/</guid><description>&lt;p&gt;Ya que no modelo todos los días, este diagrama BPMN, con su notación deliberadamente sencilla, me sirve como un recordatorio eficiente de los conceptos básicos más importantes.&lt;/p&gt;
&lt;p&gt;
&lt;div style="width: 100%; height: 600px; border: 1px solid #333; border-radius: 8px; overflow: hidden; background: #fff;"&gt;
&lt;object id="svg-c5a3451089a9b67138e1565d546008c9" type="image/svg+xml" data="images/KFZ-Schadenabwicklung.svg" style="width: 100%; height: 100%;"&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
document.getElementById('svg-c5a3451089a9b67138e1565d546008c9').addEventListener('load', function() {
svgPanZoom(this, {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
minZoom: 0.5,
maxZoom: 10
});
});
&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;div style="width: 100%; height: 600px; border: 1px solid #333; border-radius: 8px; overflow: hidden; background: #fff;"&gt;
&lt;object id="svg-67be2e57cdfb9e56db6ac7209b9fca66" type="image/svg+xml" data="https://aaron.de/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/images/KFZ-Schadenabwicklung.svg" style="width: 100%; height: 100%;"&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
document.getElementById('svg-67be2e57cdfb9e56db6ac7209b9fca66').addEventListener('load', function() {
svgPanZoom(this, {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
minZoom: 0.5,
maxZoom: 10
});
});
&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>DTLS (TCP vs. UDP)</title><link>https://aaron.de/es/posts/dtls/</link><pubDate>Fri, 23 Jun 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/dtls/</guid><description>&lt;p&gt;&lt;strong&gt;Transport Layer Security (TLS)&lt;/strong&gt; conocido como Secure Sockets Layer (SSL) es un protocolo de cifrado (basado en x.509) para la transmisión segura de datos.&lt;/p&gt;
&lt;p&gt;Datagram Transport Layer Security (DTLS) se basa en TLS y utiliza UDP en lugar de TCP. La diferencia entre TLS y DTLS equivale a la diferencia entre TCP y UDP.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/tcp.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/udp.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;TLS necesita, entre otras cosas, la fiabilidad de los datos para el descifrado. Si, por ejemplo, los paquetes de datos llegan en un orden incorrecto, TLS no podrá realizar ninguna verificación de integridad, ya que ésta incluye el número de secuencia de los paquetes, es decir, tras el paquete N se espera el paquete N+1.&lt;/p&gt;</description></item><item><title>Ansible: Provisionamiento de VM con Vagrant</title><link>https://aaron.de/es/posts/vagrant-vm-provisionierung-via-ansible/</link><pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/vagrant-vm-provisionierung-via-ansible/</guid><description>&lt;p&gt;// Ansible se utiliza para la configuración o provisión // de la siguiente infraestructura de VM Vagrant
&lt;img src="images/vms.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Instalación desde &amp;ldquo;Archivo de paquetes personales (PPA)&amp;rdquo; sudo -s apt-get install software-properties-common apt-add-repository ppa:ansible/ansible apt-get update apt-get install ansible&lt;/p&gt;
&lt;p&gt;// Verificación ansible &amp;ndash;version ansible-playbook &amp;ndash;version ansible-galaxy &amp;ndash;help&lt;/p&gt;
&lt;p&gt;// Creación de un archivo &amp;lsquo;hosts&amp;rsquo; o &amp;lsquo;inventory&amp;rsquo; propio // para la configuración del entorno &amp;lsquo;dev&amp;rsquo; cd ~ mkdir ansible cd ansible vi dev
&lt;img src="images/skeleton-2.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>Vagrant: Fundamentos</title><link>https://aaron.de/es/posts/vagrant/</link><pubDate>Thu, 09 Mar 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/vagrant/</guid><description>&lt;h1 id="vm-management"&gt;&lt;strong&gt;VM-Management&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;// Ayuda vagrant help vagrant help init&lt;/p&gt;
&lt;p&gt;// Inicializar carpeta para Vagrant o, en su caso, creación de &amp;lsquo;Vagrantfile&amp;rsquo; vagrant init hashicorp/precise64
&lt;img src="images/Initialisierung.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Creación y configuración de un entorno (Vagrant-Box) vagrant up
&lt;img src="images/vagrant_up.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Listado de las boxes instaladas
&lt;img src="images/boxes_list.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Carpeta de Windows
&lt;img src="images/boxes_folder.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Acceso via SSH vagrant ssh
&lt;img src="images/ssh.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Modo de suspensión de la VM vagrant suspend
&lt;img src="images/suspend.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Apagar la VM (shutdown) vagrant halt
&lt;img src="images/halt.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>IPv4 vs. IPv6 (nivel alto)</title><link>https://aaron.de/es/posts/ipv4-vs-ipv6-high-level/</link><pubDate>Tue, 25 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/ipv4-vs-ipv6-high-level/</guid><description>&lt;p&gt;&lt;strong&gt;Repaso IPv4&lt;/strong&gt;
&lt;img src="images/example.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encabezado IPv4&lt;/strong&gt;
&lt;img src="images/v4Header.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Version: 4&lt;/li&gt;
&lt;li&gt;IHL (Internet Header Length): Longitud del encabezado en incrementos de 32 bits. Valor 5 = 5 filas x 32 bits&lt;/li&gt;
&lt;li&gt;TOS (Type of Service): Se utiliza para la priorización del paquete IP (QoS)&lt;/li&gt;
&lt;li&gt;Longitud total: 65535 bytes&lt;/li&gt;
&lt;li&gt;Identification, Flags &amp;amp; Fragment Offset. Control de la fragmentación&lt;/li&gt;
&lt;li&gt;Flags: El bit 0 está reservado. Si el bit 1 está en 0, se permite fragmentar. Si está en 1, no. Si el bit 2 está en 0, se trata del último fragmento. Si está en 1, siguen más fragmentos.&lt;/li&gt;
&lt;li&gt;Time to Live: Tiempo de vida del paquete. Cada router reduce el valor en 1&lt;/li&gt;
&lt;li&gt;Protocol: p. ej. TCP, UDP, ICMP, etc.&lt;/li&gt;
&lt;li&gt;Header Checksum: Suma de verificación. Se usa raramente.&lt;/li&gt;
&lt;li&gt;Source / Destination: Dirección de destino y de origen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Diferencia entre encabezado IPv4 &amp;amp; IPv6&lt;/strong&gt;
&lt;img src="images/v4_vs_v6_Header.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>Programación en R: Análisis de los datos del Titanic de Kaggle</title><link>https://aaron.de/es/posts/r-programmierung-auswertung-der-titanic-daten-von-kaggle/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/r-programmierung-auswertung-der-titanic-daten-von-kaggle/</guid><description>&lt;h4 id="leer-el-conjunto-de-datos-del-titanic"&gt;Leer el conjunto de datos del Titanic&lt;/h4&gt;
&lt;p&gt;[codesyntax lang=&amp;ldquo;php&amp;rdquo;]train &amp;lt;- read.csv(&amp;ldquo;C:/[PFAD]/train.csv&amp;rdquo;, header = TRUE)[/codesyntax]&lt;/p&gt;
&lt;h4 id="información-sobre-la-estructura-de-los-datos"&gt;Información sobre la estructura de los datos&lt;/h4&gt;
&lt;p&gt;[codesyntax lang=&amp;ldquo;php&amp;rdquo;]str (train)[/codesyntax]&lt;/p&gt;
&lt;p&gt;Resultado: &amp;rsquo;train.frame&amp;rsquo;: 891 obs. of 11 variables: $ survived: int 0 1 1 1 0 0 0 0 1 1 &amp;hellip; $ pclass : int 3 1 3 1 3 3 1 3 3 2 &amp;hellip; $ name : Factor w/ 891 levels &amp;ldquo;Abbing, Mr. Anthony&amp;rdquo;,..: 109 191 358 277 16 559 520 629 417 581 &amp;hellip; $ sex : Factor w/ 2 levels &amp;ldquo;female&amp;rdquo;,&amp;ldquo;male&amp;rdquo;: 2 1 1 1 2 2 2 2 1 1 &amp;hellip; $ age : num 22 38 26 35 35 NA 54 2 27 14 &amp;hellip; $ sibsp : int 1 1 0 1 0 0 0 3 0 1 &amp;hellip; $ parch : int 0 0 0 0 0 0 0 1 2 0 &amp;hellip; $ ticket : Factor w/ 681 levels &amp;ldquo;110152&amp;rdquo;,&amp;ldquo;110413&amp;rdquo;,..: 524 597 670 50 473 276 86 396 345 133 &amp;hellip; $ fare : num 7.25 71.28 7.92 53.1 8.05 &amp;hellip; $ cabin : Factor w/ 148 levels &amp;ldquo;&amp;rdquo;,&amp;ldquo;A10&amp;rdquo;,&amp;ldquo;A14&amp;rdquo;,..: 1 83 1 57 1 1 131 1 1 1 &amp;hellip; $ embarked: Factor w/ 4 levels &amp;ldquo;&amp;rdquo;,&amp;ldquo;C&amp;rdquo;,&amp;ldquo;Q&amp;rdquo;,&amp;ldquo;S&amp;rdquo;: 4 2 4 4 4 3 4 4 4 2 &amp;hellip;&lt;/p&gt;</description></item><item><title>Programación en R: Colección de comandos de R</title><link>https://aaron.de/es/posts/r-programmierung-r-befehle-sammlung/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/r-programmierung-r-befehle-sammlung/</guid><description>&lt;h2 id="comentario"&gt;Comentario&lt;/h2&gt;
&lt;h1 id="soy-un-comentario"&gt;Soy un comentario&lt;/h1&gt;
&lt;h2 id="salida"&gt;Salida&lt;/h2&gt;
&lt;p&gt;• print(&amp;ldquo;Hello World&amp;rdquo;) • cat(&amp;ldquo;Hello&amp;rdquo;, &amp;ldquo;World&amp;rdquo;)&lt;/p&gt;
&lt;h2 id="información-sobre-comandos-de-r"&gt;Información sobre comandos de R&lt;/h2&gt;
&lt;p&gt;# Información sobre un comando específico p.ej. &amp;lsquo;which&amp;rsquo; • apropos(&amp;ldquo;which&amp;rdquo;) • help(which) • ?which • RSiteSearch(&amp;ldquo;which&amp;rdquo;)&lt;/p&gt;
&lt;h2 id="historial-de-comandos-y-salida"&gt;Historial de comandos y salida&lt;/h2&gt;
&lt;p&gt;# Mostrar comandos anteriores history()&lt;/p&gt;
&lt;p&gt;# Salir de RStudio q()&lt;/p&gt;
&lt;h2 id="directorio-de-trabajo"&gt;Directorio de trabajo&lt;/h2&gt;
&lt;p&gt;# Mostrar mi directorio de trabajo en R getwd()&lt;/p&gt;
&lt;h2 id="-cambiar-el-directorio-de-trabajo"&gt;# Cambiar el directorio de trabajo&lt;/h2&gt;
&lt;p&gt;# Indicar un nuevo directorio de trabajo&lt;/p&gt;</description></item><item><title>Windows: Recomendaciones de aplicaciones OpenSource y Freeware</title><link>https://aaron.de/es/posts/windows-empfehlenswerte-opensource-und-freeware-anwendungen/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/es/posts/windows-empfehlenswerte-opensource-und-freeware-anwendungen/</guid><description>&lt;p&gt;&lt;strong&gt;Oficina – Escritorio – Pequeños ayudantes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;( &lt;a href="https://atom.io/"&gt;Atom&lt;/a&gt; ) - Editor de texto ( &lt;a href="http://notepad-plus.sourceforge.net/"&gt;Notepad++&lt;/a&gt; ) - Editor de texto ( &lt;a href="http://www.izarc.org/"&gt;IZArc&lt;/a&gt; ) - Programa de compresión ( &lt;a href="http://www.mythicsoft.com/"&gt;Agent Ransack&lt;/a&gt; ) - Búsqueda local ( &lt;a href="http://de.openoffice.org/"&gt;OpenOffice&lt;/a&gt; ) - Suite ofimática ( &lt;a href="http://dia-installer.de/"&gt;Dia&lt;/a&gt; ) - Editor de diagramas ( &lt;a href="http://kdiff3.sourceforge.net"&gt;KDiff3&lt;/a&gt; ) - Compara dos archivos o directorios entre sí ( &lt;a href="http://sourceforge.net/projects/winmerge"&gt;WinMerge&lt;/a&gt; ) - Compara dos archivos o directorios entre sí ( &lt;a href="http://www.dschensky.de/Software/Staff/tailme.htm"&gt;TailMe&lt;/a&gt; ) - Supervisa el crecimiento de archivos ( &lt;a href="http://www.baremetalsoft.com/baretail/index.php"&gt;BareTail&lt;/a&gt; ) - Supervisa el crecimiento de archivos ( &lt;a href="http://www.cygwin.com"&gt;Cygwin&lt;/a&gt; ) - Emulador de API Unix ( &lt;a href="http://www.inforapid.de/html/suchenersetzen.htm"&gt;InfoRapid&lt;/a&gt; ) - Programas de búsqueda de texto completo ( &lt;a href="http://www.ego4u.de/de/lingopad"&gt;LingoPad&lt;/a&gt;) - Diccionario multilingüe ( &lt;a href="http://home.snafu.de/tilman/xenulink.html"&gt;Xenu&amp;rsquo;sLink Sleuth&lt;/a&gt; ) - Detecta enlaces muertos ( &lt;a href="http://www.spadixbd.com/freetools/jruler.htm"&gt;JR Screen Ruler&lt;/a&gt; ) - Regla de escritorio ( &lt;a href="http://freemind.sourceforge.net"&gt;FreeMind&lt;/a&gt;) - Herramienta de mapas mentales ( &lt;a href="http://dm2.sourceforge.net"&gt;DM2&lt;/a&gt; ) - Control de ventanas (transparencia, traer ventanas al frente, etc.) ( &lt;a href="http://www.pdfforge.org"&gt;PDFCreator&lt;/a&gt; ) - Programa para crear archivos PDF ( &lt;a href="http://sourceforge.net/projects/renameit/"&gt;Renamer-It!&lt;/a&gt; ) - Para renombrar archivos ( &lt;a href="http://sourceforge.net/projects/win32diskimager/"&gt;Win32 Disk Imager&lt;/a&gt; ) - Para copiar una imagen a la tarjeta SD ( &lt;a href="http://google-calendar-sync.softonic.de/"&gt;GoogleCalendarSync&lt;/a&gt; ) - Para sincronizar el calendario de Google con Outlook ( QTranslate ) - Programa de traducción ( &lt;a href="https://calibre-ebook.com/"&gt;Calibre&lt;/a&gt; ) - Gestor de ebooks (lector) ( &lt;a href="https://deskpins.en.softonic.com/"&gt;DeskPins&lt;/a&gt; ) - Fijar ventanas en primer plano&lt;/p&gt;</description></item></channel></rss>