Tool.Yun
Herramientas practicas para desarrolladores
CSV a datos
Codificador/decodificador de cadenas Base64
Codificador/decodificador de matriz hexadecimal Base64
Consumo y gasto de energía en la computadora
Conversor de caracteres Unicode a entidades Java
Conversor de coordenadas geográficas
Conversor de formato de variables de entorno
Conversor de propiedades
Convertidor dBm mW
Convertidor de archivos Base64
Convertidor de base entera
Convertidor de muchas unidades
Convertidor de números romanos
Convertidor de unidades de almacenamiento de datos
Excel a datos
Generador de ULID
Normalizador de correo electrónico
Texto a Unicode
Texto a binario UTF-8
Torrente a Magnet
Analizador JWT
Analizador SAML
Analizador de certificados/claves
Bcrypt
Bytes de Niceware a frase de contraseña
Calculadora de CRC
Cifrado PGP
Cifrado RSA
Cifrado de archivos PGP
Cifrado de cadenas Jasypt
Cifrar/descifrar texto
Codificador/decodificador Bech32
Conversor de certificados SSL
Criptografía AGE
Descifrado de Ansible Vault Crypt
El secreto compartido de Shamir
Firmante y verificador RSA/DSA/ECDSA
Generador JWT
Generador de HMAC
Generador de RSE
Generador de certificados X509
Generador de claves PGP
Generador de pares de claves ECDSA
Generador de pares de claves Ed25519
Generador de pares de claves RSA
Hasher Argon2
Hasher de archivos
Paseto/PASERK Local
Paseto/PASERK Público/Privado
Texto hash
Decodificador de código QR
Generador de códigos QR
Generador de códigos QR de WiFi
Generador de códigos de barras
Generador de información de contacto QR
Lector de código de barras
Validador de GTIN
tools.epc-qrcode-generator.name
Analizador y formateador de teléfonos
Buscador ISO 639
Buscador de códigos de país ISO 3166
Búsqueda Unicode
Calculadora de IMC
Calculadora de SLA
Calculadora de ritmo de carrera
Compatibilidad de licencias de software
Comprobador de tarjetas de crédito
Conversor de RMB a mayúsculas
Conversor de divisas
Convertidor de calendario
Diccionario en línea
Directrices de iluminación del IES
Explicar el comando Shell
Validador de Luhn
Validador de números de IVA
Validador y analizador IBAN
Validador y analizador ISBN
Conversor de cotizaciones
Convertidor de archivos HEX
Convertidor de rizos
Descompresor/desempaquetador de Javascript
Divisor de archivos
Embellecedor de Javascript
Embellecer y formatear SQL
Embellecimiento y minimización de CSS/JS
Escaper de cuerdas
Falsificador de datos
Generador de GitIgnore
Generador de atributos de Gita
Generador de cadenas de conexión a bases de datos
Generador de correo electrónico
Generador de creación de bases de datos
Generador de faviconos
Generador de metagráficos abiertos
Generador de parámetros SQL
Generador de scripts para pruebas de carga K6
Generador de secretos de Django
Generador de tablas de bases de datos
INSERTAR JSON a SQL
Json a Protobuf
Json a Typescript
Minificador de SQL
Ofuscador de Javascript
Probador de Picomatch
Probador de escape ANSI
Probador de interfaz de usuario Swagger
Pruebas de API
Resaltador de código/scripts
Stacktrace más bonito
Temporizador Pomodoro
editor de comandos CLI
Conversor de Docker Compose a Docker Run
Conversor de Docker Run a Docker Compose
Conversor de formato de Docker Compose
Creador de Traefik Docker Compose
Descargador de imágenes de Docker
Docker Compose a Quadlets
Docker Compose a archivo .env
Docker Compose para Kubernetes
Ejecución de Docker en Kubernetes
Ejecución de Docker en Quadlets
Etiquetas de Docker Pangolin
Generador de RBAC para Kubernetes
Generador de etiquetas de Dockerfile
Inspeccionar Docker para ejecutar Docker
Validador de Docker Compose
Alarma de crono/día laborable
Alarma de tiempo
Analizador de archivos ICAL
Calculadora TTL
Calculadora de ETA
Calculadora de duración
Calculadora de días
Calculadora de fechas y duraciones
Conversor de fecha y hora
Conversor de números de semana
Conversor de zona horaria
Cronómetro
Cuenta atrás
Fusión de iCal
Generador ICAL
¿Que día?
Calculadora de amortización
Analizador de URL
Analizador de cookies
Analizador de correo electrónico
Analizador de correo electrónico rebotado
Analizador de informes DMARC
Analizador de mensajes de Outlook
Buscador de propiedades LDAP de ActiveDirectory
Calculadora de resistencias
Codificador/decodificador hexadecimal
Consola de puerto serie
Convertidor GZip/Deflate
Convertidor SMART Raw
Convertidor de ObjectId de MongoDB
Convertidor de codificación MIME
Convertidor de números de punto flotante
Convertidor de orden medio-endian
Decodificador EMV TLV
Decodificador de URL compartidas de SharePoint
Decodificador de transacciones ETH
Descodificador de Outlook Safelink
Detector de tipo de archivo
Detector/decodificador de juegos de caracteres de texto
Enmascarador de datos sensibles
Expansor de URL cortas
Extractor de ID de copos de nieve
Generador de TCPDump
Generador de URL
Generador de comandos de Nmap
Hoja de trucos para el cableado RJ45 Cat6
Información del código clave
Lector de archivos de Parquet
Probador HTTPS
Probador de DNS
Probador de propagación DNS
Probador de píxeles muertos
键盘测试器
Conversor de unidades de volumen
Convertidor de aceleración
Convertidor de caudal volumétrico
Convertidor de energía alimentaria
Convertidor de frecuencia
Convertidor de iluminancia
Convertidor de potencia
Convertidor de prefijos del SI
Convertidor de temperatura
Convertidor de unidades angulares
Convertidor de unidades de energía
Convertidor de unidades de fuerza
Convertidor de unidades de longitud
Convertidor de unidades de masa
Convertidor de unidades de presión
Convertidor de unidades de área
Convertidor de velocidad
Ordenador de fitness
Convertidor UUID
Generador de UUID
Generador de contraseñas
Generador de contraseñas BIP39
Generador de contraseñas de Diceware
Generador de código PIN
Generador de códigos OTP
Generador de nanoIDs
Generador de numerónimos
Generador de tokens
generador de números aleatorios
Hoja de referencia de Docker
Hoja de referencia de Docker Compose
Hoja de referencia de Dockerfile
Hoja de referencia de confirmación semántica de Git
Hoja de referencia de expresiones regulares comunes
Hoja de referencia de selectores CSS
Hoja de referencia de sintaxis XPath
Hoja de referencia de sintaxis de JSONPath
Hoja de trucos de Bash
Hoja de trucos de Docker SWARM
Hoja de trucos de Git
Hoja de trucos de Jq
Hoja de trucos de Markdown
Hoja de trucos de Nano
Hoja de trucos de Nginx
Hoja de trucos de PowerShell
Hoja de trucos de Sed
Hoja de trucos de VIM
Hoja de trucos de comandos de pantalla
Hoja de trucos de expresiones regulares
Hoja de trucos del comando TMUX
Hoja de trucos del comando Zellij
Hoja de trucos del comando chmod
Hoja de trucos para K8
Comparación de imágenes
Conversor de formatos de imagen
Convertidor HEIC
Convertidor ICO/PNG
Eliminar EXIF
Eliminar el fondo de la imagen
GIF a MP4
Grabadora de cámara
Imagen a SVG (potrace)
Inversor de color de imagen
Lector de calidad de imágenes EXIF/Metadatos/GPS/JPEG
Marcador de agua
OCRizar imágenes y PDF
Recortar imagen
Redimensionador de imágenes
Vista previa de SVG
Analizador de tamaño JSON
Aplanador/desplanificador de JSON
CSV a JSON
Consulta JSON
Convertidor de JS a JSON
Convertidor de JSON a JS
Convertidor de JSON a YAML
Convertidor de cadenas JSON
Código JSON a PHP
DDL de JSON a SQL
Diferencia JSON
Editor JSON
Embellecer y formatear JSON
Entidad JSON a Java
Escaper/Unescaper de JSON
Fusión JSON
JSON Linter
JSON a .env
JSON a C#
JSON a CSV
JSON a MessagePack
JSON a TOML
JSON a TS
JSON a XML
JSON a datos
JSON a objeto
JSON para llevar
Json a PHP-Array
Json a Python
Json a esquema
Maestro de clasificación JSON
Minificar JSON
ObjGen a JSON
PHP-Array a JSON
Paquete de mensajes a JSON
Probador de rutas Jq/JSON
tools.json-patch.name
Lanzador de monedas
Rueda de la fortuna
Selector de tarjetas
Tirador de dados
Calculadora binaria
Calculadora de propinas
Conversor de formatos matemáticos
Evaluador de matemáticas
OCR matemático
Visualizador de curvas trigonométricas/de ecuaciones
Calculadora de distancia geográfica
Calculadora de porcentajes
Calculadora de relación de aspecto
Constructor de puntos de referencia
Cifrado de PDF
Compresor de PDF
Comprobador de firmas PDF
Concatenador de PDF
Descifrar y desbloquear PDF
Extractor de páginas PDF
Extractor de texto PDF
HTML a PDF
Linealización de PDF/FastWeb
Generador de expresiones Cron
Analizador de la fortaleza de las contraseñas
Autorización SIP
Búsqueda de dirección MAC
Calculadora Chmod
Calculadora RAID
Calculadora RAID ZPOOL
Calculadora de HDD
Calculadora de confiabilidad RAID
Calculadora de exclusión de subredes IP
Calculadora de rango de CIDR a IPv4/6
Calculadora de rango de IPv4/6 a CIDR(s)
Calculadora de subredes IPv4
Calculadora de subredes IPv6
Calculadora de velocidad de transferencia de datos
Calculadora visual de subredes
Comprobador DNSBL
Comprobador de Whois
Comprobador de puertos TCP/UDP
Consultas DNS
Consultas DNS/RDAP de Cloudflare
Convertidor de Punycode
Convertidor de direcciones IPv4
Convertidor de direcciones IPv6
Convertidor de direcciones MAC
Decodificador ARPA
Decodificador de causa de spam X-VR
Descargador de enlaces múltiples
Desinfectante HAS
Enteros a IPv4/IPv6
Expansor de rango IPv4
Formateador de Nginx
Formateador de comandos de shell
Fuerza de la contraseña de Zxcvbn
Generador Apache LogRotate
Generador FStab
Generador Option43
Generador Rsync
Generador WPA PSK
Generador de DNS BIMI
Generador de DNS DKIM
Generador de DNS DMARC
Generador de DNS PTR
Generador de DNS SPF
Generador de HTAccess
Generador de ULA de IPv6
Generador de autenticación básica
Generador de comandos Curl
Generador de comandos UFW
Generador de comandos de apagado
Generador de configuraciones de Wireguard
Generador de crontab
Generador de htpasswd/htaccess
Generador de iptables
Generador de puertos aleatorios
Hoja de trucos de ZPool
IPv4-6/IPRange/CIDR en IPRange/CIDR/IPMask
Linealizador de comandos de shell
Listador de subredes IPv4
Mi dirección IP
Números de puerto
Probador de micrófonos
Pruebas de WebSocket
Silbido
Ubicación geográfica de IP
generador de direcciones MAC
generador de línea de comandos de firewalld
tools.restic-command-generator.name
tools.url-redirection-checker.name
De Epub a Markdown
Diferencia de Markdown
Editor de Markdown
Embellecedor de tablas de Markdown
Generador de tablas Markdown
Generador de índice de Markdown
HTML a Markdown
Lorem Ipsum de rebajas
Markdown a DOCX
Markdown a HTML
Markdown a datos
Markdown a texto
Pegar como Markdown
Vista previa de Markdown
tools.markdown-format-converter.name
Linter TOML
TOML a JSON
TOML a YAML
Buscador de líneas duplicadas
Calculadora de Levenshtein
Codificador/decodificador de tokens GPT
Comparación de fuentes
Compartidor de enlaces sociales
Comprobador de I y L
Conversor de distribución de teclado
Conversor de mayúsculas y minúsculas
Convertidor de código Morse
Convertidor de listas
Convertidor de runas
Diagrama de estructura de carpetas
Diferencia de texto
Divisor de indicaciones de IA
Estadísticas de texto
Estimador de tokens GPT
Exportador de sirenas
Extraer texto de HTML
Formateador Unicode
Generador de citas
Generador de comandos Sed
Generador de texto artístico ASCII
Generador/Banner de Zalgo
Hola, generador.
Imagen a arte ASCII
JSON a TOON
Lector de RSVP
Listas Comparar
Ofuscador de cadenas
Palabras distintas
Paquete de archivos para IA
Probador de expresiones regulares
Reemplazador de texto inteligente y separador de línea
Selector de emojis
Selector de líneas aleatorias
TOON a JSON
Tabulador a espacios
Texto a nombres Unicode
Texto al alfabeto de la OTAN
Traductor de texto
Unicode a GSM-7
Analizador de agente de usuario
Cadena Slugify
Capturador de URL
Codificar/decodificar cadenas con formato URL
Comprobador de contraste de color
Conversor de colores
Convertidor CSS XPath
Convertidor de píxeles REM
Convertidor de unidades CSS
Creador de fragmentos de búsqueda de texto de URL
Códigos de estado HTTP
Editor HTML WYSIWYG
Embellecedor de CSS
Embellecedor de HTML
Escapar entidades HTML
Generador de URL UTM
Generador de degradados CSS
Generador de marcadores de posición SVG
HTML a XHTML
HTML a datos
Imagen a CSS
Información del dispositivo
Limpiador de HTML
Limpiador de URL
Minificador de HTML
Rueda de colores
Tipos MIME
Formateador XML
Linter XML
ObjGen a HTML
Probador XPath
Probador XSLT
XML a JSON
Aplanador/desaplanador de YAML
Convertidor de YAML a JSON
Embellecer y formatear YAML
Fusión de YAML
YAML a TOML

Hoja de referencia de Dockerfile

Hoja de referencia de sintaxis y compilación de Dockerfile

A Dockerfile is the recipe for an image: each instruction runs in order and most of them add a layer. Layers are cached, so the order you write them in decides how fast your rebuilds are.

# syntax=docker/dockerfile:1
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["node", "server.js"]

💡 Start the file with # syntax=docker/dockerfile:1 to get the current BuildKit frontend — that is what enables heredocs, cache mounts and build secrets.

📋 Instruction Reference

InstructionPurpose
FROMThe base image, and the start of a build stage
ARGA build-time variable (--build-arg)
ENVAn environment variable, kept in the final image
WORKDIRThe working directory for the instructions that follow
COPYCopy files from the context (or another stage) into the image
ADDLike COPY, but also fetches URLs and unpacks archives
RUNExecute a command at build time and commit the result
CMDDefault command, easily overridden at docker run
ENTRYPOINTThe executable the container always runs
EXPOSEDocument the port the app listens on
USERThe user the following instructions and the container run as
VOLUMEDeclare a path that should be a mount point
HEALTHCHECKHow Docker decides the container is healthy
LABELImage metadata
SHELLChange the shell used by the shell form of RUN/CMD
STOPSIGNALThe signal sent to stop the container
ONBUILDAn instruction that runs when this image is used as a base

🏗 Base Image & Metadata

# pin the base image — 'latest' makes builds irreproducible
FROM node:22-alpine

# name a stage so later stages can copy from it
FROM golang:1.23 AS build

# an ARG before the first FROM can parameterise the base image itself
ARG NODE_VERSION=22
FROM node:${NODE_VERSION}-alpine

# metadata; the OCI keys are the conventional ones
LABEL org.opencontainers.image.source="https://github.com/acme/app"
LABEL org.opencontainers.image.description="Acme API"

📂 Files & Working Directory

# always set an absolute working directory
WORKDIR /app

# copy from the build context
COPY package*.json ./
COPY . .

# copy and set ownership in one step, no extra layer for chown
COPY --chown=node:node . .

# copy with explicit permissions
COPY --chmod=755 entrypoint.sh /usr/local/bin/

# copy from another stage, or straight from another image
COPY --from=build /src/app /usr/local/bin/app
COPY --from=nginx:alpine /etc/nginx/nginx.conf /etc/nginx/nginx.conf

# ADD unpacks archives and fetches URLs — prefer COPY unless you need that
ADD archive.tar.gz /opt/
ADD https://example.com/file.tar.gz /tmp/

# declare a mount point for data that should not live in the image
VOLUME ["/data"]

⚙️ Build Steps

# shell form: runs through /bin/sh -c
RUN apt-get update && apt-get install -y --no-install-recommends curl \
    && rm -rf /var/lib/apt/lists/*

# exec form: no shell, so no globbing or variable expansion
RUN ["npm", "ci", "--omit=dev"]

# heredoc: a readable multi-line script (BuildKit)
RUN <<EOF
set -eux
apk add --no-cache curl
adduser -D appuser
EOF

# cache mount: keep the package cache between builds
RUN --mount=type=cache,target=/root/.npm npm ci

# secret mount: use a credential without baking it into a layer
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci

# bind mount: read from the context without copying it in
RUN --mount=type=bind,source=package.json,target=package.json npm ci

🚀 Runtime Configuration

# environment variables are visible to the running container
ENV NODE_ENV=production
ENV PATH="/app/bin:$PATH"

# document the port — this does not publish it, -p does
EXPOSE 3000

# drop root as early as you can
RUN adduser -D appuser
USER appuser

# tell Docker how to check the app is alive
HEALTHCHECK --interval=30s --timeout=3s --start-period=20s --retries=3 \
  CMD wget -qO- http://localhost:3000/health || exit 1

# the signal that stops the process cleanly
STOPSIGNAL SIGTERM

# the command the container runs
CMD ["node", "server.js"]

⚔️ CMD vs ENTRYPOINT

CMDENTRYPOINT
PurposeDefault arguments, or the whole default commandThe executable the image is built around
docker run <image> other-cmdReplaced entirelyStill runs; the argument is appended
Override flag—--entrypoint
Typical useCMD ["node", "server.js"]ENTRYPOINT ["python", "app.py"]
# together: ENTRYPOINT is the binary, CMD holds the default arguments
ENTRYPOINT ["python", "app.py"]
CMD ["--port", "8000"]

# docker run image                 → python app.py --port 8000
# docker run image --port 9000     → python app.py --port 9000

⚠️ Prefer the exec form (["cmd", "arg"]). The shell form wraps your process in /bin/sh -c, which swallows SIGTERM and turns graceful shutdown into a ten-second kill.

🧱 Multi-Stage Builds

Several FROM instructions in one file: build with a fat toolchain, ship only the artifact.

# stage 1 — build
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# stage 2 — the image that actually ships
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
# a compiled binary on a near-empty base
FROM golang:1.23 AS build
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build -o /out/app ./cmd/app

FROM gcr.io/distroless/static-debian12
COPY --from=build /out/app /app
USER nonroot:nonroot
ENTRYPOINT ["/app"]
# build only up to a named stage — handy for a test or lint stage
docker build --target build -t app:build .

📁 .dockerignore

Everything in the build context is sent to the daemon and busts the cache. Exclude what the build does not need:

.git
node_modules
dist
*.log
.env
Dockerfile
.dockerignore

🧠 Best Practices

  • Order by how often things change: base image, then dependency manifests, then npm ci/pip install, then the source. A source edit should not reinstall dependencies.
  • Pin versions — node:22.11-alpine, not node:latest.
  • One RUN per logical step, chaining installs and cleanup in the same layer (rm -rf /var/lib/apt/lists/*), or the deleted files still weigh on the image.
  • Never bake secrets in. A deleted file stays in the layer below; use --mount=type=secret or build arguments that never reach the final stage.
  • Run as a non-root user and keep the final stage as small as you can (alpine, distroless, scratch).
  • Use COPY, not ADD, unless you specifically want URL fetching or archive extraction.
  • Combine with --platform for multi-arch: docker buildx build --platform linux/amd64,linux/arm64.

🛠 Building & Running

# build from the Dockerfile in this directory
docker build -t my-app .

# build without the cache
docker build --no-cache -t my-app .

# a Dockerfile somewhere else
docker build -f docker/Dockerfile.prod -t my-app .

# pass a build argument
docker build --build-arg NODE_VERSION=20 -t my-app .

# pass a secret (never becomes a layer)
docker build --secret id=npmrc,src=$HOME/.npmrc -t my-app .

# build for another architecture
docker buildx build --platform linux/arm64 -t my-app .

# inspect the layers of the result
docker history my-app

# run it
docker run -p 3000:3000 my-app

📄 Full Example

# syntax=docker/dockerfile:1
FROM node:22-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm npm ci

FROM node:22-alpine AS build
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM node:22-alpine
LABEL org.opencontainers.image.source="https://github.com/acme/app"
ENV NODE_ENV=production
WORKDIR /app
COPY --from=deps --chown=node:node /app/node_modules ./node_modules
COPY --from=build --chown=node:node /app/dist ./dist
USER node
EXPOSE 3000
HEALTHCHECK --interval=30s CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "dist/server.js"]

📚 Resources

  • Dockerfile reference
  • Building best practices
  • BuildKit mounts (cache, secret, bind)
  • Multi-stage builds