Diccionario de Programación
Conceptos técnicos de desarrollo web, backend, devops y arquitectura.
A
Que una web pueda usarla cualquiera, con o sin discapacidad. En España es además una obligación legal para muchas empresas.
Serie de pasos definidos para resolver un problema. Lo que separa uno bueno de uno malo es cómo aguanta cuando crecen los datos.
Interfaz que permite a dos aplicaciones comunicarse entre sí mediante peticiones estructuradas, sin necesidad de conocer su funcionamiento interno.
Exigir dos pruebas de identidad de tipos distintos. Convierte una contraseña robada en un problema mucho menor.
B
Pieza que reparte las peticiones entre varios servidores. Da capacidad y, sobre todo, permite que caiga uno sin que caiga el servicio.
Base de datos que guarda la información en tablas con filas y columnas, y que relaciona unas tablas con otras mediante claves para no repetir datos.
C
Copia temporal de un dato guardada en un sitio más rápido para no tener que volver a calcularlo o pedirlo cada vez que hace falta.
Red de servidores repartidos por el mundo que guardan copias de los ficheros de tu web y los sirven desde el punto más cercano a cada visitante.
Conjunto de prácticas que automatizan la integración, prueba y despliegue del software, permitiendo entregar cambios a producción con frecuencia, rapidez y seguridad.
Transformar datos para que solo quien tenga la clave pueda leerlos. Es reversible, y en eso se distingue del hash.
El campo que identifica de forma única cada fila de una tabla. Elegirla mal es de los errores más caros de corregir.
Lista de tareas pendientes que un proceso aparte va consumiendo. Separa el «lo recibo» del «lo hago».
Varias cosas ocurriendo a la vez en un sistema. Genera los errores más difíciles de reproducir que existen.
Hacer una consulta para obtener una lista y otra por cada elemento. Va bien en pruebas y se hunde en producción.
Dato pequeño que un sitio guarda en tu navegador y le devuelves en cada visita. Sirve para recordarte, y por eso está regulada.
Copia de tus datos guardada aparte para poder recuperarlos. No cuenta como copia hasta que has probado a restaurarla.
Mecanismo del navegador que controla qué dominios pueden hacer peticiones a tu API desde JavaScript. Causa frecuente del error 'Access-Control-Allow-Origin' en desarrollo.
Ataque que engaña al navegador de un usuario con sesión abierta para que ejecute una acción en otra web sin que él lo sepa ni lo quiera.
Lenguaje que define el aspecto de una página web: colores, tipografías, espaciados y cómo se coloca cada elemento según el tamaño de la pantalla.
Fichero de texto con datos separados por comas. El formato de intercambio más universal y el que más sorpresas da.
D
Proceso de llevar una versión del código al servidor donde lo usan los clientes. Cuanto más automático y repetible, menos disgustos da.
Coste futuro de haber elegido una solución rápida en vez de la correcta. Como una deuda, se puede asumir a propósito, pero genera intereses.
Forma de construir una web para que se adapte a cualquier tamaño de pantalla con un solo diseño, en lugar de mantener una versión distinta para móvil.
Sistema que traduce un nombre de dominio a la dirección IP del servidor que lo aloja. Es la guía telefónica de internet.
Herramienta que empaqueta una aplicación con todo lo que necesita para funcionar en un contenedor, de modo que corra igual en cualquier máquina.
Lo que hay que saber para trabajar en un sistema y no está en el código. Su valor está en el porqué, no en el qué.
Representación en memoria que hace el navegador de una página web, en forma de árbol de objetos que JavaScript puede leer y modificar en vivo.
E
Cada una de las URLs concretas que expone una API y que reciben peticiones HTTP para devolver respuestas o ejecutar acciones.
Cada una de las copias donde vive una aplicación —local, pruebas y producción— con su propia configuración y sus propios datos, separadas entre sí.
Capacidad de un sistema para absorber más carga sin degradarse. Casi siempre el cuello de botella está donde no se mira.
Forma de organizar datos en memoria. Elegir la correcta suele hacer más por el rendimiento que optimizar el código que los recorre.
Patrón para buscar y extraer texto. Potentísima para tareas puntuales y mala idea para validar cosas complejas.
F
G
Cómo guardas claves de API, contraseñas y credenciales fuera del código. El fallo más común y más fácil de evitar.
Sistema de control de versiones que guarda el historial completo de un proyecto y permite trabajar en paralelo sin pisarse ni perder trabajo.
Lenguaje de consulta y runtime para APIs donde el cliente define exactamente qué datos quiere recibir. Alternativa moderna a REST creada por Facebook en 2015.
H
Huella digital de longitud fija que se calcula a partir de un dato. El mismo dato da siempre el mismo hash, y del hash no se puede volver al dato.
Servicio que mantiene tu web o aplicación accesible en internet. Cambiar de proveedor es fácil hasta que te has atado a él sin querer.
Lenguaje de marcado que estructura el contenido de una página web y le dice al navegador qué es cada cosa: un título, un párrafo, una tabla o un botón.
Protocolo de comunicación que define cómo cliente (navegador, app) y servidor intercambian información sobre la web. La base de internet moderno.
HTTP cifrado con TLS. Garantiza que nadie lee ni modifica lo que viaja, y que hablas con el servidor que dice ser.
I
Propiedad por la que repetir una operación produce el mismo resultado que hacerla una vez. Es lo que evita pedidos y cobros duplicados.
Ataque que aprovecha que una aplicación mete texto del usuario dentro de una consulta a la base de datos, permitiendo alterar lo que esa consulta hace.
J
Lenguaje de programación que da comportamiento a las páginas web y que también corre en el servidor con Node.js. Es el único que entienden los navegadores.
Formato de intercambio de datos basado en texto, ligero y legible por humanos y máquinas. Estándar de facto en APIs web modernas.
Estándar para representar credenciales de autenticación como un token firmado y autocontenido. Forma habitual de proteger APIs modernas sin sesiones en servidor.
L
Tiempo que tarda una petición en ir y volver. No es lo mismo que ancho de banda, y casi siempre importa más.
Cargar algo solo cuando hace falta. Acelera mucho la primera pantalla si se aplica donde toca, y la empeora si no.
Conjunto de código ya escrito que resuelve un problema concreto y que tú llamas cuando lo necesitas, sin que imponga cómo organizar tu proyecto.
M
Estilo arquitectónico que divide una aplicación en servicios pequeños e independientes, cada uno responsable de una capacidad de negocio concreta y desplegable por separado.
Cambio versionado del esquema de una base de datos que se aplica una sola vez y queda registrado, para que todos los entornos tengan la misma estructura.
Reducir el tamaño de CSS y JavaScript quitando lo que el navegador no necesita. Automático y con beneficio inmediato.
Aplicación construida como una sola pieza desplegable. No es una mala palabra: para la mayoría de proyectos es la elección correcta.
N
O
Protocolo estándar que permite a una aplicación acceder a datos de un usuario en otro servicio sin necesidad de conocer su contraseña.
Poder entender qué está pasando dentro de un sistema desde fuera, sin tener que añadirle código nuevo cada vez que algo falla.
Capa de software que traduce entre objetos de tu código y tablas de la base de datos. Permite escribir consultas con sintaxis del lenguaje en lugar de SQL crudo.
P
Dar a cada usuario y cada sistema solo los permisos que necesita. Limita el daño cuando algo sale mal, y algo sale mal.
Web que se comporta como una aplicación: se instala en el móvil, funciona sin conexión y puede enviar notificaciones, sin pasar por las tiendas de apps.
R
Línea de trabajo paralela dentro de un repositorio. Permite hacer cambios sin tocar lo que está en producción.
Limitar cuántas peticiones puede hacer alguien en un tiempo dado. Protege de abusos y también de tus propios errores.
Reescribir código para que sea más claro o más fácil de mantener sin cambiar en absoluto lo que hace visto desde fuera.
Estilo arquitectónico para diseñar APIs sobre HTTP basado en recursos identificados por URL y operados con verbos HTTP. El estándar de facto en la web moderna.
Que otra persona lea un cambio antes de que entre. Sirve más para repartir conocimiento que para cazar errores.
S
Conjunto de herramientas, librerías y documentación que un proveedor entrega para que los desarrolladores integren su servicio o plataforma con menos esfuerzo.
Ordenador que atiende peticiones de otros. No es una caja mágica: es un equipo encendido esperando que alguien le pida algo.
Estado que recuerda quién eres entre peticiones. Es lo que hace que no tengas que identificarte en cada página.
Aplicación web que carga una sola página y va sustituyendo su contenido con JavaScript al navegar, sin volver a pedir el documento completo al servidor.
Lenguaje para consultar y modificar bases de datos relacionales. Se le pide qué datos se quieren, no cómo buscarlos: de eso se encarga el motor.
Generación estática: todas las páginas se construyen una vez al compilar y el servidor solo entrega ficheros HTML ya hechos, sin calcular nada.
Renderizado en el servidor: el HTML llega ya montado con su contenido, y el JavaScript solo lo activa después para que responda a la interacción.
T
Proceso que se ejecuta solo a una hora fija. Lo difícil no es programarlo: es enterarse el día que deja de ejecutarse.
Prueba automática que comprueba una pieza pequeña de código de forma aislada, y que se ejecuta en segundos cada vez que cambias algo.
Grupo de operaciones sobre la base de datos que se ejecutan como una sola: o se aplican todas, o no se aplica ninguna. Nunca se queda a medias.
Extensión de JavaScript que añade tipos comprobados antes de ejecutar, de modo que muchos errores aparecen mientras escribes y no delante del cliente.
V
W
Mecanismo en el que un servidor avisa automáticamente a otro mediante una petición HTTP cuando ocurre un evento, sin que el receptor tenga que preguntar.
Protocolo de comunicación bidireccional en tiempo real entre cliente y servidor a través de una única conexión persistente. La base de chats, notificaciones live y colaboración en tiempo real.