Ir al contenido principal
Blog de Alex Astudillo

Diseñar sistemas. Entender el negocio.

Artículos sobre arquitectura de software, automatización y finanzas para tomar mejores decisiones técnicas y de negocio.

Destacado Arquitectura

Pruebas de integración de una API Quarkus con PostgreSQL y Testcontainers

Pruebas de integración de una API Quarkus con PostgreSQL y Testcontainers La prueba recorre la API por HTTP y comprueba la escritura y recuperación de datos en PostgreSQL. Una prueba de integración puede recorrer una API Quarkus por HTTP y comprobar que los datos escritos en PostgreSQL se pueden recuperar. Dev Services ofrece un punto de partida para preparar la base de datos; Testcontainers también permite gestionar un contenedor de PostgreSQL de forma explícita. Preparar el entorno de prueba La guía Dev Services for databases describe el arranque automático de una base de datos y su configuración para la aplicación cuando se cumplen las condiciones indicadas en la guía. Antes de aplicarlo, consulta sus apartados sobre activación y selección de imagen, y comprueba la configuración y las dependencias de tu proyecto. Como alternativa para un control explícito, consulta el módulo PostgreSQL de Testcontainers y el ejemplo de recurso de prueba de la guía de pruebas de Quarkus . La invest...
Leer el artículo

Últimos artículos

Ver todos
Conciliación contable

Conciliar datos operativos y contables: un método reproducible para investigar diferencias

La conciliación conecta las fuentes, las reglas de comparación y la investigación de diferencias con la evidencia que permite revisar el resultado. Conciliar datos operativos y contables: un método reproducible para investigar diferencias Una conciliación útil compara datos definidos de la misma forma, identifica las partidas que explican la diferencia y conserva evidencia de cómo se investigaron. El método siguiente es una propuesta general que debe adaptarse al proceso, al marco contable y a las políticas aplicables. Las fuentes citadas ofrecen ejemplos y antecedentes de auditorías del sector público estadounidense. Las reglas concretas de este artículo son recomendaciones prácticas, salvo que se indique lo contrario. 1. Definir qué se compara Documenta el proceso, la entidad, las cuentas, el periodo y la fecha de corte. Precisa si compararás saldos o movimientos, así como la moneda, la convención de signos y el nivel de detalle. Describe cómo llegan los eventos operativos al mayor c...
Dev Services

Pruebas de integración en Quarkus y PostgreSQL: una guía para resultados repetibles

La repetibilidad comienza con una imagen identificable, un esquema conocido y datos preparados para cada escenario. Pruebas de integración en Quarkus y PostgreSQL: una guía para resultados repetibles Una suite repetible necesita una base de datos identificable, un esquema conocido y datos que cada prueba pueda preparar y aislar. Las decisiones siguientes ofrecen un punto de partida para Quarkus y PostgreSQL; deben adaptarse a las versiones y a la configuración del proyecto. 1. Controla la imagen de PostgreSQL Elige una imagen compatible con la versión y las capacidades que necesita la aplicación, y registra cuándo cambia. La guía de Quarkus documenta la selección de imágenes de Dev Services y afirma que configurar el nombre explícitamente tiene prioridad sobre la selección automática. Si eliges una imagen explícita, comprueba que incluya las extensiones necesarias. Una etiqueta de versión ayuda a identificar la imagen elegida, aunque Docker advierte que las etiquetas son mutables . La...
finanzas personales

Cómo medir si tu salario realmente gana poder adquisitivo frente a la inflación

El poder adquisitivo depende de cómo evoluciona el salario frente al coste de vida. Cómo medir si tu salario realmente gana poder adquisitivo frente a la inflación Para saber si tu sueldo compra más que antes, compara su evolución con la inflación acumulada durante el mismo periodo. Si el salario crece más que los precios, gana poder adquisitivo; si crece menos, lo pierde. La fórmula del salario real Calcula primero la subida salarial dividiendo el salario final entre el inicial y restando 1. Después introduce esa subida y la inflación como decimales: por ejemplo, el 5 % se escribe 0,05. Variación del salario real = [(1 + subida salarial) / (1 + inflación) − 1] × 100 La fórmula compara el salario ajustado por la variación de precios con el salario inicial. Un resultado positivo indica una ganancia de poder adquisitivo; uno negativo, una pérdida; y cero significa que se ha mantenido según el índice elegido. El Bureau of Labor Statistics de Estados Unidos (BLS) expresa el ajuste en su s...
finanzas para negocios

VAN para una decisión cotidiana: ¿conviene comprar equipo para el negocio?

Evaluar una máquina implica comparar su coste inicial con el efectivo adicional que podría aportar al negocio. VAN para una decisión cotidiana: ¿conviene comprar equipo para el negocio? Una máquina nueva puede ahorrar tiempo o permitir más ventas, pero su precio inicial no cuenta toda la historia. El valor actual neto (VAN) ayuda a comparar el desembolso de la compra con el efectivo adicional que se espera obtener a lo largo del tiempo, expresado en dinero de hoy. Para una compra concreta hacen falta datos del equipo y del negocio. Sin ellos, no se puede concluir si conviene comprar. ¿Qué indica el VAN? En el apartado Net Present Value (NPV) Calculation , OpenStax define el VAN como la diferencia entre el valor presente de las entradas y el de las salidas de efectivo. Para calcularlo, se descuentan los flujos futuros con una tasa elegida para evaluar la inversión. VAN positivo: según los flujos estimados y la tasa elegida, la compra supera el rendimiento exigido. VAN negativo: no al...
evaluación de inversiones

VAN y TIR con un ejemplo: evaluar una inversión antes de comprometer capital

El VAN y la TIR permiten analizar los mismos flujos previstos desde dos perspectivas: valor actual y tasa de retorno. VAN y TIR con un ejemplo: evaluar una inversión antes de comprometer capital El valor actual neto (VAN) y la tasa interna de retorno (TIR) ayudan a evaluar una inversión a partir de sus flujos de caja previstos. El VAN expresa el resultado estimado en dinero de hoy; la TIR expresa una tasa implícita en esos flujos. Ambos dependen de los supuestos utilizados. Qué es el VAN y cómo se calcula El VAN descuenta los flujos de caja futuros y los compara con la inversión inicial. En la sección 11.4, OpenStax describe el descuento de los flujos a su valor presente y la resta de la inversión inicial. La fórmula es: VAN = −I₀ + Σ desde t = 1 hasta n de [FCₜ / (1 + r)ᵗ] I₀: inversión inicial. FCₜ: flujo neto de caja del periodo t. r: tasa de descuento por periodo. t: periodo en que se recibe o paga cada flujo. n: número de periodos evaluados. Un VAN positivo indica que, según...
Finanzas

VAN y TIR en la compra de un equipo: cómo tomar una decisión

El VAN y la TIR ayudan a evaluar el desembolso inicial de un equipo frente a sus flujos futuros. VAN y TIR en la compra de un equipo: cómo tomar una decisión Comprar un equipo exige comparar su costo inicial con el dinero adicional que se espera obtener o ahorrar durante su vida útil. El valor actual neto (VAN) y la tasa interna de retorno (TIR) ayudan a ordenar esa decisión, siempre que los flujos y la tasa de descuento reflejen las condiciones de la empresa. El siguiente caso es hipotético: no se han proporcionado datos suficientes para recomendar la compra de un equipo concreto. Qué indican el VAN y la TIR El VAN expresa en dinero de hoy el valor estimado que añade una inversión después de descontar sus flujos futuros a una tasa exigida. Para una inversión inicial seguida de flujos anuales, se calcula así: VAN = −inversión inicial + suma de [flujo neto del año t / (1 + tasa de descuento) elevado a t] Un VAN positivo indica que los flujos proyectados superan la inversión inicial des...
costes

Antes de subir precios: calcula el efecto en tu margen y punto de equilibrio

Antes de subir el precio, conviene comparar el margen por venta, los costes y distintos niveles de demanda. Antes de subir precios: calcula el efecto en tu margen y punto de equilibrio Una subida de precios puede aumentar la contribución de cada venta y reducir las unidades necesarias para cubrir costes. Pero, si vendes menos, el beneficio total también puede bajar. Antes de decidir, compara el precio actual y el propuesto para un mismo periodo y revisa si cambiará alguno de tus costes. Calcula el margen de contribución El margen de contribución unitario es el precio de venta menos el coste variable por unidad. Ese importe ayuda a cubrir los costes fijos y, una vez cubiertos, contribuye al beneficio. OpenStax, sección 3.1 , lo describe como el exceso del precio de venta sobre el coste variable unitario: «selling price exceeds its total variable cost per unit» . Margen unitario = precio de venta − coste variable por unidad. Margen porcentual de contribución = margen unitario ÷ precio ...
Análisis de datos

Ventas por mes en PostgreSQL: una consulta útil para tu primer tablero

La consulta transforma las filas de ventas en un resumen mensual para alimentar el tablero. Ventas por mes en PostgreSQL: una consulta útil para tu primer tablero Una consulta mensual puede preparar dos medidas para un primer tablero: la cantidad de filas de ventas y la suma de sus importes. El siguiente ejemplo es una adaptación propia basada en componentes documentados de PostgreSQL. La consulta mensual El ejemplo supone que cada fila de ventas representa una venta, que monto es numérico y que fecha_venta es una fecha o marca de tiempo compatible. Copia esta consulta y adapta los nombres a tu esquema: SELECT date_trunc('month', fecha_venta)::date AS mes, COUNT(*) AS cantidad_ventas, SUM(monto) AS total_ventas FROM ventas WHERE fecha_venta IS NOT NULL GROUP BY 1 ORDER BY 1; date_trunc lleva cada fecha al inicio de su mes y conserva el año. La sección 9.9.2 de la documentación indica que los campos menos significativos se fijan en “zero (or one, for day and month)” . En el...
Calidad de datos

Cómo encontrar clientes duplicados en PostgreSQL con SQL

GROUP BY resume los correos repetidos; una función de ventana permite conservar las filas de cada grupo. Cómo encontrar clientes duplicados en PostgreSQL con SQL Para localizar posibles clientes duplicados, empieza por decidir qué campos deben coincidir. Los ejemplos usan una tabla clientes con las columnas id y email . Dos filas que comparten correo no necesariamente representan a la misma persona: adapta la comparación a tu regla de negocio y revisa las coincidencias. Contar los correos repetidos Esta consulta muestra cada correo no nulo que aparece más de una vez y su número de registros: SELECT email, COUNT(*) AS cantidad FROM clientes WHERE email IS NOT NULL GROUP BY email HAVING COUNT(*) > 1 ORDER BY cantidad DESC; La sección 7.2.3 de PostgreSQL 18 explica que HAVING elimina grupos. La consulta agrupa por correo, conserva los grupos con más de una fila y excluye previamente los valores nulos. Ver todas las filas de cada grupo duplicado Una función de ventana permite contar...
Consultas SQL

Cómo diagnosticar una consulta lenta en PostgreSQL con EXPLAIN

Leer el plan desde los accesos a datos hacia las operaciones superiores ayuda a localizar dónde se concentra el trabajo. Cómo diagnosticar una consulta lenta en PostgreSQL con EXPLAIN Un plan de ejecución ayuda a localizar dónde se concentra el trabajo de una consulta y a comparar lo que PostgreSQL esperaba con lo que ocurrió. Esta guía se basa en la documentación de PostgreSQL 18; comprueba los detalles correspondientes a tu versión. 1. Captura un plan representativo Para investigar una consulta de lectura, puedes empezar con EXPLAIN (ANALYZE, BUFFERS) SELECT ...; . Como recomendación práctica, usa parámetros y volúmenes representativos y elige con cuidado dónde y cuándo medir. La referencia de EXPLAIN, sección Description e indicación Important , advierte que con ANALYZE «the statement is actually executed»: la sentencia se ejecuta realmente. Se descarta la salida de SELECT, pero ocurren sus demás efectos. Revisa la sentencia y las funciones que invoque antes de ejecutarla. Para sent...

Buscar este blog