Javier Valencia Javier Valencia
PostgreSQL desde cero (III): CTEs, window functions y consultas avanzadas

PostgreSQL desde cero (III): CTEs, window functions y consultas avanzadas

8 de mayo de 2026 · 3 min de lectura · 0 visitas

Tercera entrega de la serie PostgreSQL desde cero a pro. Tiempo de lectura estimado: 13 minutos. Ya sabes instalar PostgreSQL (I) y diseñar un buen esquema con tipos y restricciones (II). Ahora toca la parte divertida: las partes del lenguaje SQL que separan a alguien que "sabe SQL" de alguien que de verdad saca partido a PostgreSQL. Si ya tienes algo de experiencia, partes de este post te sonarán del post PostgreSQL: 10 consultas que todo desarrollador debería conocer. Lo que hago aquí es sistematizar y ampliar. CTEs (Common Table Expressions) Una CTE es una subquery con nombre. La sintaxis...

Leer más →
Terminal con los comandos git bisect, git blame y git log --graph

Git avanzado II: detective — bisect, blame y reflog

8 de mayo de 2026 · 4 min de lectura · 1 visita

Segunda entrega de la serie Git avanzado. La anterior fue sobre reescribir la historia con rebase, cherry-pick y amend. Tiempo de lectura estimado: 5 minutos. La parte menos glamurosa pero más salvavidas de git: los comandos para investigar. No los escribes a diario, pero el día que los necesitas, te ahorran horas. Tres: git bisect para cazar el commit que introdujo un bug, git blame para saber quién escribió qué línea y cuándo, y git reflog para recuperar lo que parecía perdido para siempre. git bisect: búsqueda binaria de bugs El escenario: ayer funcionaba, hoy no. Entre ayer y hoy...

Terminal con los comandos git rebase, git cherry-pick y git commit --amend

Git avanzado I: reescribir la historia

7 de mayo de 2026 · 5 min de lectura · 8 visitas

Primera entrega de la serie Git avanzado. Si vienes saltado desde el nivel intermedio o básico, aquí entramos en el terreno donde git deja de ser sistema de control de versiones y empieza a ser editor de historia. Tiempo de lectura estimado: 5 minutos. Los tres comandos de hoy permiten modificar commits que ya existen: combinarlos, reordenarlos, cambiarles el mensaje, sacarlos de una rama y meterlos en otra. Son potentes y razonablemente peligrosos: si la historia que estás reescribiendo ya la han visto otros, les vas a desordenar el mundo. La regla general, antes de empezar: reescribe historia local todo...

PostgreSQL desde cero (II): tipos, restricciones y relaciones

PostgreSQL desde cero (II): tipos, restricciones y relaciones

6 de mayo de 2026 · 5 min de lectura · 5 visitas

Segunda entrega de la serie PostgreSQL desde cero a pro. Tiempo de lectura estimado: 11 minutos. En la entrega anterior levantamos PostgreSQL, creamos una base de datos y metimos las primeras filas. En este post nos centramos en lo que convierte PostgreSQL en una base de datos seria: tipos ricos y restricciones que garantizan que los datos sean correctos desde la base de datos, no desde la capa de aplicación. El principio subyacente: si puedes hacer que un dato imposible sea imposible de insertar, hazlo. Las validaciones en la aplicación están muy bien; las restricciones en la base de datos...

Terminal con los comandos git stash, git tag y git fetch

Git intermedio III: stash, tags y fetch

6 de mayo de 2026 · 4 min de lectura · 16 visitas

Tercera entrega de la serie Git intermedio. Las anteriores: ramas y deshacer con cabeza. Tiempo de lectura estimado: 5 minutos. Para cerrar el nivel intermedio, tres comandos que resuelven situaciones muy concretas pero frecuentes: guardar trabajo en curso cuando algo urgente te interrumpe (git stash), marcar un punto importante de la historia (git tag) y mirar el estado del remoto sin traerte nada (git fetch). No son glamurosos, pero hacen el día a día más tranquilo. git stash: guardar trabajo a medias El escenario: estás en medio de algo, con cambios en el working tree que aún no quieres commitear,...