Ir al contenido principal

Entradas

Anatomía de un archivo .ovpn: Entendiendo la configuración de OpenVPN

  Anatomía de un archivo .ovpn: Desglosando una configuración real de AWS Client VPN Los archivos .ovpn contienen toda la configuración necesaria para establecer una conexión VPN segura. En esta guía analizaremos línea por línea un archivo real de AWS Client VPN para entender exactamente cómo funciona. El archivo .ovpn completo Aquí está el archivo de configuración que analizaremos, evidentemente con datos ficticios. client dev tun proto udp remote cvpn-endpoint-a1b2c3d4e5f6789a.prod.clientvpn.us-east-1.amazonaws.com 443 remote-random-hostname resolv-retry infinite nobind remote-cert-tls server cipher AES-256-GCM verb 3 <ca> -----BEGIN CERTIFICATE----- [Múltiples certificados de la cadena de confianza] -----END CERTIFICATE----- </ca> auth-user-pass auth-federate auth-retry interact auth-nocache reneg-sec 0 verify-x509-name vpn-enterprise.example-corp.com name Configuración básica del cliente Parámetros fundamentales client dev tun proto udp ¿Qué significan? cl...
Entradas recientes

Conectarse a BD de Postgress / RDS mediante VPN AWS

  Cómo Conectarse a Amazon RDS mediante VPN con Autenticación IAM La conexión a bases de datos Amazon RDS ubicadas en redes privadas requiere una configuración específica que incluye conectividad VPN y autenticación mediante tokens IAM. En esta guía te explico paso a paso cómo configurar y solucionar problemas comunes en este proceso. Requisitos Previos Conexión VPN establecida a la red corporativa Recuerda que para configurar la VPN te deben proporcionar un archivo OVPN como este. En el que hablo mas a detalle aqui:  Anatomía de un archivo .ovpn: Entendiendo la configuración de OpenVPN Credenciales AWS válidas con permisos de RDS Cliente de base de datos compatible (psql, pgAdmin, etc.) AWS CLI Instalado y configurado, depende tus configuraciones y demas en AWS lo puedes ver de la siguiente manera: Paso 1: Verificar la Conectividad VPN Primero, confirma que tu VPN esté funcionando correctamente y que puedas resolver el hostname de la base de datos. # Verificar reso...

Evitando NullPointerException en Aplicaciones Java Spring Boot

En el desarrollo de aplicaciones Java, especialmente aquellas basadas en Spring Boot, uno de los errores más comunes y frustrantes es la famosa NullPointerException . Este artículo explora qué es esta excepción, por qué ocurre, y las mejores prácticas para evitarla, basándonos en casos reales que enfrentamos recientemente en una aplicación de gestión de datos. ¿Qué es un NullPointerException? Un NullPointerException (NPE) ocurre cuando intentamos utilizar una referencia que apunta a null como si fuera un objeto real. En otras palabras, intentamos acceder a métodos o propiedades de un objeto que en realidad no existe. En Java, null es un valor literal que representa la ausencia de un objeto. Cuando intentamos hacer algo como: String name = null ; int length = name . length ( ) ; // ¡NullPointerException! Java lanza una NullPointerException porque estamos intentando llamar al método length() en una referencia null , lo cual es imposible. ¿Cuándo Ocurre Típicamente? Los ...

S3 Resumen de los tipos y sus usos de caso

Hoy vamos a explorar una de las herramientas más versátiles de la nube de AWS: las diferentes clases de almacenamiento de Amazon S3. Amazon S3 (Simple Storage Service) ofrece diversas opciones de almacenamiento diseñadas para adaptarse a diferentes necesidades de negocio, patrones de acceso y presupuestos. Desde aplicaciones que requieren acceso frecuente a datos críticos, hasta el archivado a largo plazo de información raramente consultada, S3 tiene una solución específica para cada caso. En esta publicación analizaremos las siete clases principales de almacenamiento de S3, comparando sus niveles de disponibilidad, durabilidad, distribución en zonas de disponibilidad, casos de uso recomendados y períodos mínimos de almacenamiento. Esta información es esencial no solo para quienes preparan certificaciones AWS, sino también para arquitectos y administradores que buscan optimizar costos sin comprometer el rendimiento o la seguridad de sus datos. Entender las diferencias entre S3 Stand...

¿Cuándo empezó C# a optimizar mejor su código en el CLR? Y comparación con JAVA

  Históricamente, el CLR ha evolucionado en varias fases: 📌 .NET Framework (2002-2019) Desde su inicio en .NET 1.0 (2002) , el CLR tenía un JIT sencillo , pero sin profiling dinámico avanzado como la JVM. El rendimiento dependía mucho de la primera compilación JIT y no cambiaba mucho en ejecución. No había recompilación en caliente ni optimización adaptativa. 📌 .NET Core (2016-2020) Introdujo RyuJIT , un nuevo compilador JIT más rápido y eficiente. .NET Core 2.1 (2018): Se introdujo Tiered Compilation , similar a la estrategia de HotSpot de Java. Primera compilación: Rápida y sin optimizaciones. Segunda compilación: Más optimizada con profiling en ejecución. .NET Core 3.0 (2019): Mejoró aún más el JIT con más optimizaciones. 📌 .NET 5 y superiores (2020 - Presente) Tiered Compilation mejoró aún más y ahora es habilitada por defecto . Dynamic PGO (Profile-Guided Optimization) en .NET 6 (2021) : El CLR analiza el uso del código en ejecución y lo optimiza dinámicamente (pareci...

Filtros dinámicos en JPA: Búsqueda por campos nulos y valores específicos

¿Alguna vez has necesitado implementar una búsqueda que maneje tanto valores específicos como campos nulos en tu base de datos? En este artículo te mostraré cómo hacerlo de manera elegante usando JPA y Spring Boot. El Escenario Imaginemos que tenemos una tabla de empleados ( Employee ) y queremos buscar por dos criterios: Departamento (que puede ser null) Salario (que también puede ser null) La Solución Aquí está la consulta JPA que resuelve este problema: SELECT e . * FROM Employee e WHERE ( ( : #{#filters.departmentId} IS NULL AND e.department_id IS NULL) OR ( : #{#filters.departmentId} IS NOT NULL AND e.department_id = :#{#filters.departmentId}) ) AND ( ( : #{#filters.salary} IS NULL AND e.salary IS NULL) OR ( : #{#filters.salary} IS NOT NULL AND e.salary >= :#{#filters.salary}) ) ¿Cómo funciona? Vamos a desglosarlo por partes: 1. Filtro por Departamento ( : #{#filters.departmentId} IS NULL AND e.department_id IS NULL) OR ( : #...

Sintaxis fácil de entender JAVA SQL/JPQL paso a paso

Desglose de consulta de JPQL para entender su sintaxis fácil, analicemos la siguiente consulta:  SELECT e . * FROM Employee e WHERE ( ( : #{#filters.departmentId} IS NULL -- ¿No se especificó departamento? AND e . department_id IS NULL -- ¿El empleado no tiene departamento? ) OR ( : #{#filters.departmentId} IS NOT NULL -- ¿Se especificó un departamento? AND e . department_id = : #{#filters.departmentId} -- ¿Coincide con el departamento del empleado? ) ) AND ( ( : #{#filters.salary} IS NULL -- ¿No se especificó salario? AND e . salary IS NULL -- ¿El empleado no tiene salario registrado? ) OR ( : #{#filters.salary} IS NOT NULL -- ¿Se especificó un salario? AND e . salary >= : #{#filters.salary} -- ¿El salario del empleado es mayor o igual? ) ) Dond...