decodigo.com
Código que funciona, explicado paso a paso
Ejemplos de Java, Python, Go, Rust y otros lenguajes que puedes copiar y adaptar, además de noticias de tecnología: espacio, robótica e inteligencia artificial.
Herramienta gratuita
Validador de CFDI
Revisa el sello, los catálogos y los totales de tu factura CFDI 4.0 y obtén su PDF. Sin registro.
¿Sabías que…?
El 9 de septiembre de 1947, el equipo del ordenador Harvard Mark II encontró una polilla atrapada en un relé y la pegó en su cuaderno con una nota: «primer caso real de bug encontrado».
Descubre más datos curiosos del desarrollo de software →Últimas noticias
Ver todas → Noticia principal
El satélite de IA de Google ya funciona en órbita, y su primera respuesta fue un haiku
El prototipo de Project Suncatcher, el centro de datos espacial de Google, terminó sus pruebas y ya ejecuta IA en órbita: lleva cuatro TPU, aunque solo puede usar una a la vez y durante unos 20 minutos. Su primera tarea fue escribir un haiku con Gemma 4. En 2027 llegarán dos satélites más.

OpenAI, Google, Microsoft y Anthropic respetarán una sola línea de robots.txt para no entrenar su IA con tu web
Las cuatro grandes de la IA apoyan un borrador del IETF que permite negarse al entrenamiento de modelos de IA generativa con una sola regla…

Qué es Rufus, la herramienta gratuita para crear USB de arranque, y qué traen sus últimas versiones
Rufus convierte una memoria USB en un instalador de Windows o Linux en un par de minutos. Es gratuito, de código abierto y no se…

Apple lanza su primer MacBook Pro con pantalla táctil: OLED, Dynamic Island y desde $2,899 USD, junto al iMac y el MacBook Pro con M6
En su evento del 28 de octubre, Apple presentó el primer Mac con pantalla táctil: un MacBook Pro de 14 y 16 pulgadas con panel…

195 versiones en diez días: la ola de juegos recompilados ya llega a Zelda, Smash y Bayonetta de Switch
Entre el 20 y el 30 de octubre se publicaron 195 versiones de ports recompilados de juegos de consola, según el registro de Recomp Haven.…

P.T., la demo maldita de Silent Hills, ya funciona de forma nativa en PC gracias a un programador de 21 años
Un desarrollador reconstruyó en C++ la demo de terror que Konami retiró de la PlayStation Store en 2015. El port no es un emulador ni…

WordPress 7.1.4 corrige 22 fallos de seguridad, entre ellos uno que permitía ejecutar código durante las actualizaciones
WordPress publicó el 28 de octubre la versión 7.1.4, una actualización de seguridad que corrige 22 fallos, con arreglos llevados hasta la rama 4.7. El…

PHP2Shell ya tiene víctimas confirmadas: atacaron cortafuegos de Palo Alto encadenándolo con un fallo del kernel de Linux
Palo Alto Networks confirma ataques con éxito contra la interfaz de gestión de sus cortafuegos a través de PHP2Shell y ya tiene parches para PAN-OS.…

¿Quién es Xavier, el «programador» de los memes? Existe, pero no es quien crees
El hombre del bigote que responde con sarcasmo en los comentarios no es un desarrollador ni se llama Xavier. Es un personaje de internet que…

Los grandes bancos de EE. UU. empiezan a cerrar la puerta a los agentes de IA que entran en las cuentas con la contraseña del cliente
Morgan Stanley bloquea a los agentes de IA de terceros y JPMorgan, Bank of America y Citi los restringen, tras detectar agentes que entran con…

El observatorio Vera Rubin encuentra su primer posible planeta enano: 2026 ED138, un mundo helado de 600 a 1,500 km más allá de Plutón
2026 ED138 está a unas 46 unidades astronómicas del Sol, tarda unos 283 años en dar la vuelta y es uno de los diez objetos…

Mistral libera Large 4, «Le Chonk»: un modelo europeo de un billón de parámetros que cualquiera puede descargar
Mistral AI ha publicado en Hugging Face los pesos de Mistral Large 4, un modelo de mezcla de expertos con un billón de parámetros, 49,000…
Cursos y guías
Para leer en orden, no para consultarAprende Python
Entornos virtuales desde el primer día, tipos, colecciones, comprensiones, funciones, dataclasses, excepciones y pathlib, hasta un paquete instalable con pruebas.
Abrir →Aprende Java
Del primer programa —que en Java 25 ocupa tres líneas— a un proyecto con paquetes, pruebas y un jar: records, interfaces selladas, colecciones, excepciones y streams.
Abrir →Aprende Rust
Propiedad, préstamos y tiempos de vida explicados desde cero, con el compilador como profesor. Cada ejemplo se compiló antes de publicarlo, incluidos los que no compilan.
Abrir →Aprende Go
De «hola mundo» a goroutines y canales. Lecciones cortas, pensadas para leerse en orden, con esquemas y la salida real de cada programa.
Abrir →Aprende JavaScript
Del primer programa a los módulos y las pruebas: tipos y conversiones, closures, copias que no copian, this, promesas y el bucle de eventos. Con esquemas y todo ejecutado con Node.js 24.
Abrir →Aprende TypeScript
Para quien ya sabe JavaScript: qué revisa el compilador, uniones y estrechamiento, genéricos, tipos avanzados y un proyecto real migrado paso a paso. Con el mensaje real de tsc en cada error.
Abrir →Aprende SQL
Desde el primer SELECT hasta JOIN, subconsultas, índices medidos y funciones de ventana, con una base de ejemplo y un editor en el navegador. Cada consulta, ejecutada de verdad.
Abrir →Aprende C#
Desde cero con .NET 10: dotnet run con un solo archivo, tipos y null, colecciones, clases y records, LINQ, async y un proyecto con pruebas. Con el mensaje real del compilador en cada error.
Abrir →Aprende PHP
Desde cero con PHP 8.5: tipos y strict_types, arrays, clases y enums, Composer y pruebas, formularios, sesiones y bases de datos, y un proyecto. Con la seguridad en cada lección.
Abrir →Aprende C
Desde cero con C23 y GCC 15: tipos y desbordamientos, punteros, struct y memoria dinámica, archivos y make, y un proyecto con pruebas. Con los sanitizadores y la seguridad en cada lección.
Abrir →Aprende C++
Desde cero con C++23 y GCC 15: contenedores y algoritmos, clases y RAII, punteros inteligentes y movimiento, plantillas y un proyecto con CMake. Con los sanitizadores y la seguridad en cada lección.
Abrir →Aprende Bash
Desde cero con Bash 5.3: variables y comillas, condiciones y bucles, tuberías, grep, sed y awk, scripts robustos y un proyecto con pruebas. Con ShellCheck y la seguridad en cada lección.
Abrir →Comandos de Linux
Las órdenes que se usan a diario, agrupadas por lo que quieres hacer y no por orden alfabético, con la salida de verdad de cada una.
Abrir →Qué es SSH
Conectarte a otro equipo, entrar con clave en lugar de contraseña, copiar archivos y abrir túneles, con los errores más comunes resueltos.
Abrir →Órdenes de Git
El trabajo diario con Git explicado a partir de las cuatro zonas por las que pasa un cambio. Incluye cómo deshacer cada cosa.
Abrir →Aprende Docker
Imágenes y contenedores, el Dockerfile a fondo, volúmenes, Compose y cómo promover la misma imagen de QA a producción.
Abrir →Kubernetes y Docker
En qué se diferencia de Docker y cómo trabajan juntos, con un clúster de pruebas real: desplegar, escalar, actualizar sin cortes y deshacer.
Abrir →REA con tu agente de IA
Pon a Claude Code, Codex o Cursor a desarmar programas: instalación, primeros análisis y cómo mantenerlo al día.
Abrir →Ghidra, paso a paso
Instalar el descompilador de la NSA, abrir un programa compilado y entender lo que reconstruye, con capturas reales.
Abrir →Redes básicas
Direcciones IP y el /24, puertos, TCP y UDP, 127.0.0.1 frente a 0.0.0.0, y cómo comparte tu router una sola IP con NAT.
Abrir →Qué es el DNS
Cómo un nombre se convierte en una dirección IP: el viaje de una consulta, los registros, la caché y los errores típicos, con dig.
Abrir →Los métodos HTTP
GET, POST, PUT y DELETE, cómo es una petición por dentro y qué significa cada código de respuesta, con ejemplos en curl.
Abrir →HTTPS por dentro
Del clic al candado: el apretón de manos de TLS 1.3, cómo se acuerda una clave sin enviarla y qué demuestra un certificado.
Abrir →Certificados de confianza
Cómo decide tu navegador en qué certificados confiar: autoridades, registros públicos y la lista que llega a tu equipo.
Abrir →Qué es la AGI
La inteligencia artificial general: en qué se diferencia de la IA de hoy, sus niveles, cómo se mide y cuándo podría llegar.
Abrir →¿Atacaron tu WordPress?
Encuentra los registros del servidor, cuenta quién te manda peticiones y descubre si alguien entró, con órdenes probadas.
Abrir →Qué es MCP
El estándar para conectar asistentes de IA con tus datos y herramientas: cómo funciona y cómo conectar un servidor.
Abrir →Qué es descompilar
Qué se pierde al compilar y qué herramientas sirven en cada lenguaje, con el mismo programa descompilado en siete.
Abrir →Cómo se bloquea una web
Sigue en una animación el viaje de una consulta DNS y mira cómo la bloquean un resolvedor, tu proveedor o un juez.
Abrir →Seguridad en PHP
Inyección SQL, XSS, CSRF, subidas, deserialización y más: el patrón que hay que evitar, la forma segura y cómo encontrarlo en tu código.
Abrir →Logs y configuración
Qué es un log y qué es un archivo de configuración, y cuáles usan Java, Spring, Python, Django, Node, PHP, Laravel, .NET, Go, Rust y Rails.
Abrir →Cómo empezar con COBOL
Instalar GnuCOBOL en Windows, macOS y Linux, el primer programa, las columnas, PIC, leer un archivo y los errores típicos al compilar.
Abrir →jadx-headless-mcp
Qué archivo descargar (el -all.jar), cómo comprobar que es el bueno y cómo usarlo con REA o con Claude Code para analizar una app de Android.
Abrir →Crear una app con IA
Para quien no sabe programar: claves a la vista, bases de datos abiertas, facturas disparadas y paquetes inventados, y cómo evitarlos.
Abrir →Seguridad en C
Desbordamientos de búfer, uso tras liberar, enteros, cadenas de formato y más: el patrón que hay que evitar, cómo lo detectan los sanitizadores y la forma segura.
Abrir →Seguridad en C++
Iteradores invalidados, uso tras liberar o mover, referencias colgantes, enteros y carreras de datos: el patrón que hay que evitar, cómo lo detectan los sanitizadores y la forma segura.
Abrir →Seguridad en Bash
Variables sin comillas, eval, archivos temporales, rm -rf con rutas vacías y secretos a la vista: el patrón que hay que evitar, lo que avisa ShellCheck y la forma segura.
Abrir →Pon a prueba lo que sabes
Corrección al instante y explicación de cada respuestaTest de Python
Entornos virtuales, tipos, comprensiones, dataclasses, excepciones y pathlib: ¿qué imprime cada fragmento?
Hacer el test →Test de Java
Records, interfaces selladas, colecciones y streams en Java 25. Cada respuesta se comprobó compilando el código.
Hacer el test →Test de Rust
Propiedad, préstamos y tiempos de vida: adivina qué compila y qué no antes de que te lo diga el compilador.
Hacer el test →Test de Go
Slices, mapas, interfaces, errores, goroutines y canales, con la salida real de cada programa.
Hacer el test →Test de JavaScript
Conversiones, ==, closures, copias, this y el orden del bucle de eventos: ¿qué imprime cada fragmento?
Hacer el test →Test de TypeScript
Veinticuatro fragmentos de código y una sola pregunta: ¿los acepta tsc en modo estricto? Con el mensaje real del compilador.
Hacer el test →Test de SQL
Veinticuatro consultas sobre la base de una tienda y cuatro resultados posibles para cada una. Con la explicación de cada respuesta.
Hacer el test →Test de C#
Veinticuatro fragmentos de C#: ¿compilan y qué escriben? Con tu nota por lección y el mensaje real del compilador de .NET 10.
Hacer el test →Test de PHP
Un test de 24 preguntas de opción múltiple sobre el curso de PHP de decodigo.com, con la nota, los aciertos por lección y la explicación de cada respuesta.
Hacer el test →Test de C
Un test de 24 preguntas de opción múltiple sobre el curso de C de decodigo.com, con la nota, los aciertos por lección y la explicación de cada respuesta.
Hacer el test →Test de C++
Un test de 24 preguntas de opción múltiple sobre el curso de C++ de decodigo.com, con la nota, los aciertos por lección y la explicación de cada respuesta.
Hacer el test →Test de Bash
Un test de 24 preguntas de opción múltiple sobre el curso de Bash de decodigo.com, con la nota, los aciertos por lección y la explicación de cada respuesta.
Hacer el test →Ejemplos de código
173 ejemplos listos para copiarJava
- Argumentos de la línea de órdenes
- Peticiones HTTP: GET y POST
- Leer y escribir CSV
- Fechas y horas
- Ordenar y buscar en listas
- Configuración con variables de entorno
- Tareas en paralelo con hilos virtuales
- Medir el rendimiento
- Base de datos SQLite
- Un servidor web sin dependencias
- Una herramienta CLI completa
- Crear archivo de texto
- Leer una archivo de texto
- Crear un archivo XML
- Obtener información de un archivo
- Leer archivo XML
- Leer un archivo XML con SAX Parser
- Crear un PDF con Apache FOP
- Crear archivo Excel con Apache POI
- Leer archivo Excel con Apache POI
- Conexión a Base de Datos con JDBC
- Extraer archivos de un ZIP
- Crear archivos ZIP
- Copiar archivo
- Renombrar un archivo
- Crear un directorio o carpeta
- Listar y Filtrar Archivos con FileFilter
- Borrar un archivo
- Json con Google Gson
- reCAPTCHAv2
- FileUtils de Apache Commons-IO
- Crear una Interfaz Gráfica con JavaFX
- Visualizar Imagen en JavaFX
- Codificación y Decodificación en Base64
- Expresiones regulares
Python
- Argumentos con argparse
- Peticiones HTTP sin dependencias
- Leer y escribir CSV
- Leer y escribir JSON
- Fechas y horas con datetime
- Ordenar y buscar en listas
- Configuración con variables de entorno
- Hilos, procesos y asyncio
- Medir el rendimiento
- Base de datos SQLite
- Una herramienta CLI completa
- Crear un Web Server
- Cliente de FTP
- Crear archivo de texto
- Leer un archivo de texto
- Crear un archivo XML
- Obtener información de un archivo
- Leer archivo XML
- Crear un PDF con ReportLab
- Crear un archivo Excel
- Leer un archivo Excel
- Conexión a base de datos MariaDB
- Extraer archivos de un ZIP
- Crear archivo ZIP
- Copiar archivo
- Verificar si existen carpetas y archivos
- Crear directorios o carpetas
- Renombrar un archivo
- Borrar un archivo
- Crear Una Ventana o Interfaz Gráfica GUI
- Crear una interfaz con PySimpleGUI
- Expresiones Regulares
- Detección de rostros con OpenCV
- Mapeo de rostros con Dlib
- Conexión a base de datos PostgreSQL
Golang
- Hola Mundo
- Crear archivo de texto
- Leer archivo de texto
- Argumentos de la línea de órdenes
- Peticiones HTTP: GET y POST
- Leer y escribir CSV
- Fechas y horas
- Expresiones regulares
- Copiar, renombrar y borrar archivos
- Crear y listar directorios
- Información de un archivo
- Crear y extraer un ZIP
- Ordenar y buscar en slices
- Configuración con variables de entorno
- Grupo de trabajadores en paralelo
- Medir el rendimiento con benchmarks
- Base de datos SQLite
- Una herramienta CLI completa
- Convertir un struct a JSON
- Leer un archivo XML
- Crear un archivo XML
- Crear un servidor web
- Conectar con MariaDB
Rust
- Crear y escribir un archivo de texto
- Leer un archivo de texto
- Leer y escribir JSON
- Argumentos de la línea de órdenes
- Peticiones HTTP: GET y POST
- Leer y escribir CSV
- Fechas y horas
- Expresiones regulares
- Copiar, renombrar y borrar archivos
- Crear y listar directorios
- Información de un archivo
- Crear y extraer un ZIP
- Leer y escribir XML
- Base de datos SQLite
- Paralelizar un bucle con rayon
- Servidor web con rutas y JSON
- Redimensionar imágenes por lotes
- Medir el rendimiento
- Una herramienta de línea de órdenes completa
JavaScript
- Leer y escribir archivos de texto (Node.js)
- Leer y escribir JSON
- Argumentos de la línea de órdenes en Node.js
- Peticiones HTTP con fetch: GET, POST y errores
- Un servidor web, sin frameworks
- Fechas y horas: Date e Intl
- Expresiones regulares
- Ordenar y buscar en arrays de JavaScript
- Copiar, renombrar y borrar archivos y carpetas
- La etiqueta script
- Modificar la página: el DOM
- Eventos: clics, formularios y delegación
- Guardar datos en el navegador con localStorage
- Dibujar con canvas: formas, texto y animación
TypeScript
- Uniones discriminadas: estados sin errores imposibles
- Genéricos: funciones, restricciones y clases
- Tipos utilitarios: Partial, Pick, Omit y Record
- enum y sus alternativas
- Validar la respuesta de fetch con Zod
- Leer JSON con tipos
- Errores como valores: el tipo Result
- tsconfig.json explicado
- Un servidor HTTP sin frameworks
- Argumentos de línea de órdenes con parseArgs
- Leer y escribir archivos de texto
- Eventos del DOM: querySelector y addEventListener
SQL
- Los N primeros de cada grupo
- Totales acumulados y medias móviles
- Tabla dinámica: filas a columnas
- Fechas: agrupar por mes y contar días
- Buscar y borrar duplicados
- Insertar o actualizar (upsert)
- Paginación: OFFSET frente a cursor
- Jerarquías con WITH RECURSIVE
- JSON en SQL
- Importar un CSV
- SQLite desde Python
- SQLite desde Node.js
C#
- Leer y escribir JSON con System.Text.Json
- Leer y escribir CSV
- Fechas y horas: DateTime, DateOnly y zonas horarias
- Expresiones regulares
- Ordenar y buscar en listas con LINQ
- Peticiones HTTP con HttpClient
- Un servidor web mínimo con ASP.NET Core
- Base de datos SQLite
- Argumentos de la línea de órdenes
- Configuración con variables de entorno
- Tareas en paralelo con Task y Parallel
- Crear un archivo de texto
- Leer un archivo de texto
- Crear, copiar y borrar archivos
- Renombrar un archivo
- Borrar un archivo o una carpeta
- Crear un directorio
- Crear y extraer un archivo ZIP
- Crear un archivo XML
- Leer un archivo XML
PHP
- Leer y escribir JSON
- Leer y escribir CSV
- Fechas y horas con DateTimeImmutable
- Expresiones regulares
- Leer un archivo XML
- Base de datos SQLite con PDO
- Peticiones HTTP con cURL
- Una API REST mínima
- Un inicio de sesión seguro
- Subir archivos de forma segura
- Argumentos de la línea de órdenes
- Configuración con variables de entorno
C
- Leer un archivo línea a línea
- Leer y escribir CSV
- Cadenas: trim, split y unir
- Fechas y horas
- Ordenar y buscar con qsort y bsearch
- Una lista enlazada
- Pila y cola con un búfer circular
- Números aleatorios
- Argumentos de la línea de órdenes
- Variables de entorno
- Procesos: fork y exec
- Hilos con pthreads
C++
- Leer un archivo de texto
- Crear y escribir un archivo de texto
- Renombrar y mover archivos
- Leer y escribir CSV
- Cadenas: trim, split y format
- Fechas y horas con chrono
- Ordenar y buscar
- Contar palabras
- Números aleatorios
- Argumentos de la línea de órdenes
- El sistema de archivos
- Hilos y concurrencia
Herramientas en línea
Ver todas →Formateador de JSON
Encuentra el error con su línea y columna, te dice cómo arreglarlo y formatea sin cambiar los números.
Abrir →Decodificador de JWT
Lee la cabecera y el contenido, dice si el token caducó y verifica la firma en tu navegador.
Abrir →Conversor de fecha Unix
De timestamp a fecha y hora en cualquier zona horaria, y al revés, en segundos o milisegundos.
Abrir →Traductor de cron
Explica en español cuándo se ejecuta una expresión cron y calcula sus próximas ejecuciones.
Abrir →Calculadora de subredes
Red, máscara, difusión y rango de equipos de una dirección IPv4 o IPv6, y su división en subredes.
Abrir →Validador de RFC
Estructura, fecha y dígito verificador de un RFC de persona física o moral, y RFC de prueba.
Abrir →Validador de CURP
Fecha, sexo, entidad y dígito verificador, posición por posición, y CURP de prueba.
Abrir →Validador de CLABE
Dígito de control y banco, según la lista de participantes de SPEI de Banxico.
Abrir →Validador de NSS
Dígito verificador del número de seguridad social del IMSS y qué significa cada cifra.
Abrir →Calculadora de IVA
Suma o desglosa el IVA del 16 % o del 8 % y calcula las retenciones de una factura.
Abrir →Cantidad con letra
Convierte un importe a texto para facturas y cheques: MIL PESOS 00/100 M.N.
Abrir →Imagen a ASCII
Convierte una foto en arte con caracteres, en blanco y negro o en color, sin subirla a ningún servidor.
Abrir →


