lunes, 21 de septiembre de 2026

Mail muestra el texto en blanco y símbolos ? tras actualizar macOS: la culpa es de tus fuentes

Actualizas macOS, abres Mail y los correos llegan sin texto: solo se ven los subrayados azules de los enlaces y unos cuadritos con una interrogación. Parece un problema de codificación, pero no lo es. Te cuento qué pasa de verdad, cómo se arregla en dos minutos y cómo revisar tu biblioteca de fuentes para que no vuelva a ocurrir.

Apple Mail mostrando un correo sin texto: solo se ven los subrayados de los enlaces y cuadros con interrogación
Así llegan los correos: enlaces subrayados sin texto y cuadros con ? donde debería haber iconos. Pulsa para ampliar.

🧩 El síntoma

Después de actualizar a una versión mayor de macOS, algunos correos (sobre todo los que vienen de Outlook, con fuentes como Calibri o Arial) se muestran así:

❌ El cuerpo del mensaje está vacío, pero los enlaces conservan su subrayado azul.
❌ Aparecen cuadrados con un ? donde debería haber iconos o viñetas.
❌ Las imágenes y los banners se ven perfectamente.
✅ El mismo correo se lee bien en el iPhone o en la web.

Ese último punto es la pista definitiva: el correo está bien. Es tu Mac el que no sabe dibujar las letras.

🔎 Por qué pasa

Mail usa WebKit (el motor de Safari) para pintar los correos HTML. Cuando WebKit necesita una fuente y el sistema le devuelve un registro corrupto o vacío, no la sustituye por otra: simplemente no dibuja nada, y los caracteres especiales salen como un ? en un recuadro. Por eso los subrayados sí se ven (los pinta CSS) y las letras no (las pintaría la fuente).

¿Y por qué justo tras actualizar? Porque una actualización mayor reconstruye la base de datos de fuentes del sistema. Si usas un gestor de fuentes (RightFont, FontExplorer, Suitcase, FontBase…) y en tu biblioteca hay fuentes obsoletas o ficheros vacíos, el gestor las vuelve a registrar al arrancar y deja la caché en un estado que rompe el renderizado.

💡 En mi caso el culpable era RightFont con una biblioteca guardada en iCloud Drive que venía de una importación antigua de FontExplorer X. Pero el procedimiento vale para cualquier gestor de fuentes.

⚡ Solución rápida: limpiar la caché de fuentes

Antes de nada, cierra tu gestor de fuentes del todo (con ⌘Q, no solo la ventana). Después abre Terminal y pega esto:

📋 Copiar
TERMINAL MAC
sudo atsutil databases -remove

Te pedirá tu contraseña. Verás una línea Removing: …/com.apple.FontRegistry y es posible que aparezca algún error diciendo que no puede borrar un fichero que "no existe": es normal, significa que esa caché ya estaba vacía.

⚠️ Si ves el mensaje "ATS is not supported starting macOS 14", ignóralo. Desde macOS Sonoma los subcomandos atsutil server están obsoletos, pero databases -remove sigue funcionando y es el único que necesitas.

Ahora reinicia el Mac. Al arrancar, macOS regenera la caché limpia. Abre Mail sin abrir aún el gestor de fuentes y comprueba que el texto ha vuelto. Si es así, ya sabes de dónde viene el problema y toca revisar la biblioteca.

💡 ¿No puedes reiniciar ahora? Reinicia solo el servicio de fuentes y Mail con sudo killall -9 fontd seguido de killall Mail. Funciona en la mayoría de casos, pero el reinicio completo es más fiable.

🕵️ Diagnóstico de tu biblioteca de fuentes

Vamos a buscar en tu biblioteca cuatro tipos de problemas. Todos los comandos son de solo lectura: no borran ni mueven nada, solo listan.

Escribe abajo la ruta de la carpeta donde tu gestor guarda las fuentes y los comandos de esta página se rellenarán solos con ella. Si usas RightFont con la biblioteca en iCloud Drive, pulsa el botón y listo.

Usar la ruta de RightFont (iCloud)
Limpiar
Puedes usar ~ para tu carpeta de usuario. Las comillas ya van incluidas en los comandos, no las pongas tú. Para averiguar la ruta de RightFont: RightFont → Ajustes → Biblioteca.

1. Fuentes en formatos obsoletos (PostScript Type 1 y maletas de Mac OS 9)

macOS dejó de soportar las fuentes PostScript Type 1 hace años, y las maletas .suit son aún más antiguas. Un gestor que intente activarlas puede romper la caché.

📋 Copiar
TERMINAL MAC

Si no devuelve nada, perfecto. Si aparece alguna, apúntala: la retiraremos más abajo.

2. Ficheros que dicen ser fuentes pero no lo son

Un OTF o TTF truncado, o una descarga fallida guardada con extensión de fuente, también es veneno para la caché. Este comando revisa cada fichero con la utilidad file y solo imprime los que no son fuentes válidas.

📋 Copiar
TERMINAL MAC
⏳ Este comando tarda: lanza un análisis por cada fuente, y si tienes miles puede irse a varios minutos. Que Terminal parezca "colgado" sin escribir nada es buena señal: solo imprime cuando encuentra una no válida. Déjalo terminar.

3. Ficheros vacíos o sin descargar de iCloud

Este es el gran clásico si tu biblioteca vive en iCloud Drive. Las fuentes antiguas de Mac guardaban todo en el resource fork, que iCloud no conserva: llegan al otro lado como ficheros de 0 bytes. Y con "Optimizar almacenamiento" activado, cualquier fuente puede quedarse en la nube como un marcador .icloud que el gestor intenta activar sin éxito.

📋 Copiar
TERMINAL MAC

Si ves parejas de nombres tipo TelegramPlain y TelegPla (uno largo y otro abreviado), son fuentes PostScript Type 1 de Mac OS 9 que se quedaron vacías al pasar por iCloud. No hay nada que recuperar ahí.

4. Copias de fuentes del sistema

Helvetica, Arial, Times, Calibri… ya vienen con macOS u Office. Si tu gestor activa una segunda copia, macOS tiene dos registros para el mismo nombre y puede acabar usando el peor.

📋 Copiar
TERMINAL MAC

🧹 Qué hacer con lo que encuentres

Nada de borrar: lo movemos a una carpeta Fuentes-retiradas en tu carpeta de usuario, conservando la estructura original por si quieres revisarlo después. Cuando estés seguro de que todo va bien, la borras entera.

Retirar formatos obsoletos (resultado del paso 1)

📋 Copiar
TERMINAL MAC

Retirar ficheros vacíos (resultado del paso 3)

📋 Copiar
TERMINAL MAC
⚠️ Si el paso 3 te devolvió ficheros .icloud (no vacíos, sino sin descargar), no los muevas. Haz clic derecho sobre la carpeta de la biblioteca en Finder → Descargar ahora, espera a que baje todo y repite el paso 3.

Retirar copias de fuentes del sistema (resultado del paso 4)

Aquí no hay comando genérico: revisa la lista a mano, porque una fuente llamada "Helvetica Neue LT Pro" puede ser una compra legítima que sí quieres conservar. Lo que no quieres son copias exactas de las que ya trae macOS. Desactívalas desde el propio gestor y, si se repiten en Catálogo Tipográfico con el triángulo amarillo, usa Edición → Resolver duplicados conservando siempre la copia del sistema.

Limpiar carpetas vacías y comprobar

📋 Copiar
TERMINAL MAC

La segunda línea debe devolver 0. Después, en tu gestor de fuentes, fuerza un reescaneo de la biblioteca (en RightFont: Ajustes → Biblioteca) para que olvide las entradas retiradas.

🛡️ Para que no vuelva a pasar

  • Biblioteca en iCloud Drive: clic derecho sobre la carpeta → Mantener descargado. O desactiva "Optimizar almacenamiento del Mac" en Ajustes del Sistema → iCloud → iCloud Drive.
  • Nunca actives desde el gestor fuentes que ya trae macOS (Helvetica, Arial, Times, Verdana, Georgia, Courier, Menlo, SF Pro) ni las de Office (Calibri, Cambria).
  • Antes de una actualización mayor de macOS, cierra el gestor de fuentes y quítalo de los ítems de inicio. Actualiza, comprueba que Mail y Safari van bien, y solo entonces vuelve a abrirlo.
  • Si importas una biblioteca antigua (FontExplorer, Suitcase…), pasa estos cuatro comandos antes de activar nada.
  • Las fuentes de Catálogo Tipográfico → Archivo → Validar fuentes con aviso rojo o amarillo, fuera.

✅ Resumen rápido

💡 Lo mínimo que necesitas recordar
Texto en blanco y ? en Mail tras actualizar = caché de fuentes rota, no codificación.
Cierra el gestor de fuentes, sudo atsutil databases -remove, reinicia.
Revisa la biblioteca: formatos obsoletos, ficheros no válidos, vacíos de iCloud y duplicados del sistema. Retíralos y reescanea.

En mi biblioteca aparecieron una maleta .suit de Mac OS 9 y unos 140 ficheros de 0 bytes de fuentes Type 1 que iCloud había dejado huecas. Fuera todo, caché limpia, reinicio… y Mail volvió a mostrar los correos como si nada. Si te bloqueas en algún paso, déjame un comentario y te echo una mano. 👋

viernes, 11 de septiembre de 2026

LightBurn: The system time is incorrect or has been tampered with …

LightBurn dice que la hora del sistema está mal: cómo arreglarlo desde CMD

Abres LightBurn y, antes de poder hacer nada, te suelta una ventana de error sobre la hora del sistema. Miras el reloj de Windows, está bien… y aun así no arranca. Te cuento qué pasa y cómo se arregla en dos minutos el error.

LightBurn, tal como arranca, muestra una ventana con este error:

⚠️ The system time is incorrect or has been tampered with. Ensure your date and time settings are correct, and synchronized with network time.

Que Windows muestre la hora correcta no significa necesariamente que LightBurn la considere válida. LightBurn utiliza Cryptlex para la licencia, y ese sistema puede detectar que el reloj fue modificado anteriormente aunque ahora vuelva a mostrar la hora correcta.

💡 Para repararlo forzaremos la sincronización desde CMD, sin entrar en Configuración de Windows. Abre el Símbolo del sistema como administrador (botón derecho sobre CMD → «Ejecutar como administrador»): los comandos del servicio de hora lo necesitan.

🔧 Los cinco pasos

Empezamos. Pulsa 📋 Copiar en cada bloque, pégalo en CMD y dale a Intro.

1. Detener el servicio de Hora de Windows

📋 Copiar
CMD WINDOWS (ADMINISTRADOR)
net stop w32time

Detiene Windows Time para reiniciar su estado antes de volver a configurarlo.

2. Volver a iniciar el servicio

📋 Copiar
CMD WINDOWS (ADMINISTRADOR)
net start w32time

Arranca de nuevo el servicio. Esto es importante porque w32tm /config … /update necesita que esté funcionando.

3. Configurar time.windows.com como fuente de hora

📋 Copiar
CMD WINDOWS (ADMINISTRADOR)
w32tm /config /manualpeerlist:"time.windows.com,0x8" /syncfromflags:manual /update

Indica a Windows que utilice el servidor NTP de Microsoft y aplica la configuración.

4. Forzar la sincronización

📋 Copiar
CMD WINDOWS (ADMINISTRADOR)
w32tm /resync /force

Hace que Windows sincronice inmediatamente su reloj con el servidor configurado.

5. Comprobar el resultado

📋 Copiar
CMD WINDOWS (ADMINISTRADOR)
w32tm /query /status

Permite verificar la fuente de hora y la última sincronización correcta. En mi caso terminó mostrando:

Origen: time.windows.com,0x8
Última sincronización correcta: 11/09/2026 11:43:18
Indicador de salto: 0 (ninguna advertencia)

Con eso, vuelve a abrir LightBurn. La ventana de error ya no aparece y la licencia se valida con normalidad.

Sin tocar Configuración de Windows, sin reinstalar LightBurn, sin historias.

martes, 7 de julio de 2026

Cómo instalar el plugin de WordPress para conectar Claude (Mac y Windows).

Imagina pedirle a Claude “créame un borrador sobre X” y que aparezca solo en tu WordPress. Se puede, y se monta en un rato 😊

La pieza que lo hace posible se llama MCP (Model Context Protocol). Es como un enchufe estándar que conecta Claude con tu web para que pueda leer, crear y editar contenido hablándole en lenguaje normal. Para eso hay que instalar un pequeño plugin en WordPress y conectar Claude Desktop a él.

💡 Necesitas un WordPress self-hosted (donde puedas subir plugins) y la app Claude Desktop. Abajo tienes la guía entera para Mac y, a continuación, la de Windows. Ve directo a la tuya.

🧩 Lo que necesitas

  • Un WordPress donde seas administrador
  • Claude Desktop instalado
  • Node.js (lo instalamos en el paso 1)

🍎 Guía completa para Mac

1. Instala Node.js

Es el “motor” que usa Claude para hablar con tu WordPress. En Mac, con Homebrew instalado, abre Terminal y pega:

📋 Copiar
TERMINAL MAC
brew install node

Comprueba que quedó bien:

📋 Copiar
TERMINAL MAC
node --version

Si te devuelve un número de versión, listo 👍

2. Descarga el plugin

Usaremos WordPress MCP de Automattic. Ojo: no descargues el código con el botón verde “Code”. Ve a la sección Releases del proyecto en GitHub y baja el archivo wordpress-mcp.zip (viene ya listo para instalar).

💡 No descomprimas el .zip. WordPress lo necesita tal cual.

3. Instálalo y actívalo en WordPress

En tu panel: Plugins → Añadir nuevo → Subir plugin, elige el wordpress-mcp.zip, Instalar ahora y luego Activar. Después ve a Ajustes → MCP y activa Enable MCP functionality (sin esto no hay conexión). Para crear y editar contenido, activa también Enable Create Tools y Enable Update Tools. Deja apagado Delete Tools por seguridad.

4. Crea una contraseña de aplicación

Es una clave especial y revocable, distinta de tu contraseña de acceso. Ve a Usuarios → Perfil, baja hasta Contraseñas de aplicación, ponle un nombre (“Claude Desktop”) y pulsa Añadir nueva. Cópiala: se muestra una sola vez.

⚠️ No uses tu contraseña de acceso normal, y no la pegues en ningún chat: solo va en el archivo de configuración de tu Mac.

5. Configura Claude Desktop

Abre este archivo con un editor de texto:

📋 Copiar
RUTA (MAC)
~/Library/Application Support/Claude/claude_desktop_config.json

Y pega esta configuración (cambia el dominio, el usuario y la contraseña de aplicación por los tuyos):

📋 Copiar
claude_desktop_config.json (MAC)
{
  "mcpServers": {
    "wordpress-mcp": {
      "command": "/opt/homebrew/bin/npx",
      "args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
      "env": {
        "WP_API_URL": "https://tudominio.com",
        "WP_API_USERNAME": "tu-usuario",
        "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}
💡 En Mac se usa la ruta completa /opt/homebrew/bin/npx a propósito: las apps de Mac no “ven” los comandos de Homebrew si pones solo “npx”.

6. Reinicia y prueba

Cierra Claude Desktop del todo con Cmd + Q y vuelve a abrirlo. La primera vez tarda unos segundos de más (descarga el conector). Luego pídele algo como “Lista mis últimas entradas de WordPress”. Si responde con tus datos, ¡conectado! 🎉

🪟 Guía completa para Windows

1. Instala Node.js

Entra en nodejs.org, descarga el instalador LTS y ejecútalo con “Siguiente, Siguiente, Finalizar”. Deja marcada la opción de añadirlo al PATH (viene marcada por defecto). Luego abre PowerShell y comprueba:

📋 Copiar
POWERSHELL (WINDOWS)
node --version

Si te devuelve un número de versión, listo 👍

2. Descarga el plugin

Igual que en Mac: WordPress MCP de Automattic. No uses el botón verde “Code”; ve a Releases en GitHub y baja wordpress-mcp.zip.

💡 No descomprimas el .zip. WordPress lo necesita tal cual.

3. Instálalo y actívalo en WordPress

En tu panel: Plugins → Añadir nuevo → Subir plugin, elige el wordpress-mcp.zip, Instalar ahora y Activar. Después, en Ajustes → MCP, activa Enable MCP functionality (imprescindible), más Enable Create Tools y Enable Update Tools. Deja Delete Tools apagado.

4. Crea una contraseña de aplicación

En Usuarios → Perfil, baja hasta Contraseñas de aplicación, ponle un nombre (“Claude Desktop”) y Añadir nueva. Cópiala: se muestra una sola vez.

⚠️ No uses tu contraseña de acceso normal, y no la pegues en ningún chat: solo va en el archivo de configuración de tu PC.

5. Configura Claude Desktop

Abre este archivo con el Bloc de notas (pega la ruta en la barra del Explorador de archivos). Si no existe, créalo:

📋 Copiar
RUTA (WINDOWS)
%APPDATA%\Claude\claude_desktop_config.json

Y pega esta configuración (cambia el dominio, el usuario y la contraseña de aplicación por los tuyos):

📋 Copiar
claude_desktop_config.json (WINDOWS)
{
  "mcpServers": {
    "wordpress-mcp": {
      "command": "npx",
      "args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
      "env": {
        "WP_API_URL": "https://tudominio.com",
        "WP_API_USERNAME": "tu-usuario",
        "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}
💡 En Windows basta con poner "npx", porque el instalador de Node ya lo deja en el PATH del sistema.

6. Reinicia y prueba

Cierra Claude Desktop por completo (ciérralo también desde la bandeja del sistema, junto al reloj) y vuelve a abrirlo. La primera vez tarda unos segundos de más. Luego pídele “Lista mis últimas entradas de WordPress”. Si responde con tus datos, ¡conectado! 🎉

💡 Un par de cosas más

  • ¿No aparecen las herramientas? Repasa que el MCP esté en ON en Ajustes → MCP y reinicia Claude.
  • Para cortar el acceso en cualquier momento, borra la contraseña de aplicación “Claude Desktop” en Usuarios → Perfil. Tu contraseña normal no se toca.
  • Deja “Delete Tools” apagado: así Claude puede crear y editar, pero no borrar nada por error.

sábado, 25 de abril de 2026

Servidor local en macOS: Python vs PHP

Si estás desarrollando una web en tu Mac, antes o después necesitas verla funcionando como si estuviera en internet. Abrir el HTML con doble clic muchas veces no basta: ni se cargan los JSON, ni los formularios, ni las imágenes que vienen por fetch. Aquí te explico, paso a paso, cómo levantar un servidor local en macOS usando Python (para webs estáticas) o PHP (cuando necesitas algo más). Sin programas raros, sin entornos complicados — solo Terminal y dos comandos.

🧐 ¿Por qué necesitas un servidor local?

Cuando abres un archivo HTML haciendo doble clic, el navegador lo carga con el protocolo file://. Eso funciona para HTML simple, pero se rompe en cuanto tu web empieza a hacer cosas modernas:

  • Si tu JavaScript usa fetch() para cargar un JSON → error de CORS, el navegador lo bloquea.
  • Si tienes módulos ES (import / export) → tampoco se cargan.
  • Si quieres probar formularios con PHP → directamente no se ejecutan.
  • Si trabajas con rutas absolutas (/css/style.css) → no funcionan correctamente.

La solución es levantar un servidor HTTP en tu propia máquina, que sirva los archivos como lo haría un hosting real. Todo desde la línea de comandos. Empezamos.

⚡ Opción 1: Servidor con Python (lo más rápido)

Python viene preinstalado en macOS, así que no necesitas instalar nada. Abre Terminal y comprueba que lo tienes:

TERMINAL MAC
$ python3 --version
Python 3.x.x

Si te devuelve una versión, perfecto. Ahora navega hasta la carpeta de tu proyecto y arranca el servidor:

TERMINAL MAC
# Ve a la carpeta de tu proyecto
$ cd ~/Documentos/mi-web

# Arranca el servidor en el puerto 8000
$ python3 -m http.server 8000

Ahora abre tu navegador y entra en http://localhost:8000. Si en la carpeta hay un index.html, lo verás directamente. Si no, te aparecerá un listado de archivos.

💡 Cambiar el puerto

Si el puerto 8000 te lo está usando otra app, prueba con otro: python3 -m http.server 3000. Cualquier número entre 3000 y 9999 te vale.

🛑 Cómo parar el servidor

Mientras el servidor está activo, la Terminal queda "ocupada" mostrándote las peticiones que llegan. Para detenerlo, pulsa Ctrl + C en esa ventana.

🐘 Opción 2: Servidor con PHP (cuando necesitas más)

El servidor de Python es perfecto para webs estáticas (HTML + CSS + JavaScript + JSON), pero no ejecuta código PHP. Si abres un archivo .php con el servidor de Python, el navegador te descargará el código fuente como si fuera un texto. No es lo que queremos.

Para que PHP funcione necesitas… bueno, PHP. Y aquí viene el problema:

⚠️ macOS ya no incluye PHP

Desde macOS Monterey (2021), Apple eliminó PHP del sistema. Si pruebas php -v y te sale command not found: php, es completamente normal. Hay que instalarlo a mano.

📦 Paso previo: instalar Homebrew

Homebrew es el gestor de paquetes estándar en macOS. Sirve para instalar herramientas de desarrollo de forma limpia (sin tener que ir buscando instaladores por internet). Si no lo tienes, este es el momento.

Comprueba primero si ya está instalado:

TERMINAL MAC
$ brew --version

Si te dice Homebrew 4.x.x → pasa al siguiente paso. Si te dice command not found: brew → instálalo con este comando oficial:

TERMINAL MAC
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Te pedirá tu contraseña de Mac (la misma que usas para iniciar sesión). El proceso tarda unos minutos. Cuando acabe, léete el final del mensaje con atención: te dirá que añadas dos líneas a tu archivo ~/.zprofile para que el comando brew esté disponible. Algo así:

TERMINAL MAC
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"

Cierra y abre Terminal de nuevo, y comprueba que brew --version ya te responde.

📥 Instalar PHP

Una vez tengas Homebrew funcionando, instalar PHP es un solo comando:

TERMINAL MAC
$ brew install php

Tarda entre 1 y 3 minutos. Cuando termine, comprueba que está bien:

TERMINAL MAC
$ php -v
PHP 8.4.x (cli) (built: ...)

🚀 Arrancar el servidor PHP

El comando es prácticamente igual de sencillo que el de Python. Ve a tu carpeta y lánzalo:

TERMINAL MAC
$ cd ~/Documentos/mi-web
$ php -S localhost:8000

Abre http://localhost:8000 y ya tienes un servidor que sirve HTML, CSS, JS y JSON exactamente igual que el de Python, pero además ejecuta archivos PHP.

🆚 ¿Cuál uso, Python o PHP?

Depende de lo que tenga tu proyecto. Esta es la regla simple:

Servidor HTML / CSS / JS / JSON / imágenes Ejecuta PHP
python3 -m http.server 8000 ✓ Sí ✗ No
php -S localhost:8000 ✓ Sí ✓ Sí
📌 Aclaración importante sobre JSON

"Ejecutar JSON" no existe. JSON es solo un formato de texto plano. Cualquier servidor HTTP lo sirve sin problema, da igual que sea Python, PHP, Node o Apache. Quien lo procesa es tu JavaScript, en el navegador, cuando hace fetch('data/archivo.json').

🧪 Caso real: por qué el JSON no carga al hacer doble clic

Esto es lo que le pasa a casi todo el mundo la primera vez: tienes una web bonita con un archivo resenas.json que se carga con JavaScript. Al abrir el HTML con doble clic ves el diseño pero la sección donde deberían aparecer las reseñas está vacía. Si abres la consola del navegador (Cmd + Option + I), ves un error como este:

CONSOLA NAVEGADOR
Access to fetch at 'file:///.../data/resenas.json'
from origin 'null' has been blocked by CORS policy

Eso es exactamente lo que evitas levantando un servidor local. En cuanto sirvas tu web por http://localhost:8000, el JSON se carga sin problemas. No hay que cambiar ni una línea del código: es exactamente el mismo código que funcionará luego en producción.

⚙️ Detalles que conviene saber

🔁 ¿Tengo que parar y arrancar cada vez que cambio un archivo?

No. Los cambios en HTML, CSS, JS o JSON se reflejan automáticamente al recargar la página (Cmd + R). Solo necesitas reiniciar el servidor si cambias algo de la propia configuración (puerto, carpeta raíz, etc.).

🚫 "Ya hay algo usando el puerto 8000"

Si te aparece un error tipo Address already in use, es que tienes otro servidor levantado. Cambia el número del puerto y listo:

TERMINAL MAC
$ php -S localhost:3000
# o cualquier otro puerto libre: 3001, 5500, 8080, etc.

📱 ¿Puedo verlo desde el móvil?

Sí, y es muy útil para probar el responsive. En lugar de localhost, arranca el servidor escuchando en todas las interfaces de red, y luego conéctate desde el móvil usando la IP local de tu Mac:

TERMINAL MAC
# Para Python — escucha en todas las interfaces
$ python3 -m http.server 8000 --bind 0.0.0.0

# Para PHP — sustituye 0.0.0.0 por la IP que quieras exponer
$ php -S 0.0.0.0:8000

# Y para saber tu IP local en macOS:
$ ipconfig getifaddr en0
192.168.1.45

Con ese resultado, desde el móvil entrarías en http://192.168.1.45:8000. Eso sí, el móvil tiene que estar en la misma red WiFi que el Mac.

🚦 ¿Y si quiero algo más profesional?

Lo que hemos visto es perfecto para desarrollo rápido. Pero si trabajas con WordPress, Laravel u otros proyectos que necesitan base de datos MySQL, el servidor PHP integrado se queda corto. Para esos casos hay alternativas más completas:

  • Laravel Herd — gratis, ligero, moderno. Detecta tus carpetas automáticamente y las sirve en proyecto.test. La opción más recomendable hoy en día.
  • MAMP — clásico, gratis. Entorno completo Apache + PHP + MySQL con interfaz gráfica.
  • Docker — para los que quieran replicar exactamente el entorno de producción.

Pero esto ya es harina de otro costal — lo dejamos para una próxima entrada.

✅ Resumen rápido

💡 Lo mínimo que necesitas recordar

Para una web estática (HTML, CSS, JS, JSON, imágenes): python3 -m http.server 8000.
Si tu proyecto incluye PHP: instala Homebrew, luego brew install php, y arranca con php -S localhost:8000.
En ambos casos, abre http://localhost:8000 en el navegador y a programar.

Espero que te haya servido. Si te bloqueas en algún paso, déjame un comentario y te echo una mano. 👋

• • •

viernes, 10 de abril de 2026

Cómo programar el apagado en Mac (comandos fáciles)

Cómo programar el apagado de tu Mac (aunque Apple ya no lo ponga fácil)

Si llevas tiempo con Mac, seguro que recuerdas la opción de programar el apagado. Pues bien… Apple la ha ido escondiendo hasta prácticamente hacerla desaparecer.

Pero tranquilo, sigue existiendo. Solo que ahora toca hacerlo desde Terminal 😅

💡 Te voy a enseñar varios comandos para apagar tu Mac automáticamente cuando quieras.

⚡ Apagar el Mac en X minutos

Por ejemplo, apagar en 30 minutos:

📋 Copiar
 TERMINAL MAC
sudo shutdown -h +30

👉 Cambia el número por los minutos que quieras.

🕒 Apagar el Mac a una hora concreta

Ejemplo: apagar a las 23:00

📋 Copiar
 TERMINAL MAC
sudo shutdown -h 23:00

❌ Cancelar un apagado programado

📋 Copiar
 TERMINAL MAC
sudo killall shutdown

👉 Esto cancela cualquier apagado que hayas programado antes.

🚀 Truco PRO: crear tu propio comando

Igual que con otros comandos, puedes dejarlo preparado para usarlo rápido.

1. Crear script

📋 Copiar
 TERMINAL MAC
nano ~/apagar.sh

2. Pegar esto

📋 Copiar
 TERMINAL MAC
#!/bin/bash
echo "⏳ Apagando en 30 minutos..."
sudo shutdown -h +30

3. Permisos

📋 Copiar
 TERMINAL MAC
chmod +x ~/apagar.sh

4. Convertir en comando

📋 Copiar
 TERMINAL MAC
sudo mv ~/apagar.sh /usr/local/bin/apagar30

🎯 Uso

📋 Copiar
 TERMINAL MAC
apagar30

Y listo. Sin menús ocultos ni historias raras.

💡 Consejo

  • Perfecto si dejas descargas o renders por la noche
  • Útil para ahorrar batería o energía
  • También puedes crear varios comandos: apagar15, apagar60, etc.

Fallo Captura de Pantalla en Mac

¿CMD + Shift + 4 no funciona en tu Mac? Te explico cómo arreglarlo en 10 segundos

Si usas Mac a diario, seguro que tiras mucho de las capturas de pantalla. Y sí… cuando deja de funcionar, desespera bastante 😅

A veces no hace nada, otras veces la captura sale rara o directamente no responde. No es tu teclado. Es macOS que se queda “pillado”.

💡 Tranquilo, se arregla en segundos sin reiniciar el Mac.

⚡ Solución rápida

Abre Terminal y pega esto:

📋 Copiar
 TERMINAL MAC
killall SystemUIServer
killall Finder

Verás que la barra de arriba “parpadea” un momento. Eso es buena señal 👍 Prueba otra vez CMD + Shift + 4 y debería ir perfecto.

🚀 Yo me hice un comando para no escribir esto cada vez

Como esto pasa de vez en cuando, lo mejor es dejarlo preparado como comando rápido.

1. Crear el script

📋 Copiar
 TERMINAL MAC
nano ~/fixscreen.sh

2. Pega esto dentro

📋 Copiar
 TERMINAL MAC
#!/bin/bash
echo "🔧 Arreglando capturas..."
killall SystemUIServer 2>/dev/null
killall Finder 2>/dev/null
echo "✅ Listo"

3. Dale permisos

📋 Copiar
 TERMINAL MAC
chmod +x ~/fixscreen.sh

4. Hazlo comando real

📋 Copiar
 TERMINAL MAC
sudo mv ~/fixscreen.sh /usr/local/bin/fixscreen

🎯 Y ahora lo bueno

A partir de ahora, cuando falle:

📋 Copiar
 TERMINAL MAC
fixscreen

Y listo. Sin pensar, sin reiniciar, sin historias.

💡 Un par de cosas más

  • Si usas apps tipo CleanShot o similares, pueden interferir
  • CMD + Shift + 5 suele seguir funcionando aunque el otro falle
  • Si el Mac lleva días encendido… reiniciar también ayuda 😅

sábado, 24 de enero de 2026

Cómo instalar una firma HTML en Mail (macOS) paso a paso

 APPLE MAIL · FIRMA HTML

Descarga e instala una firma HTML moderna en Mail (macOS)

En este tutorial te explicamos cómo instalar una firma en Apple Mail en macOS, partiendo de un archivo descargado y de forma sencilla, sin necesidad de conocimientos técnicos.

Partiremos de un archivo ya preparado (firma DEMO) que podrás editar con tus propios datos y convertir en una firma 100% funcional para tu correo.

⬇️ Descargar firma DEMO
Descargar archivo (ZIP)
Compatible con macOS · Apple Mail · Diseño moderno y editable
Importante: Mail no permite importar firmas directamente desde archivos. Una vez descargada la firma, será necesario copiar el bloque HTML correcto y pegarlo en Mail → Ajustes/Preferencias → Firmas.

1) Firma demo moderna: qué es y cómo usarla

El archivo que has descargado es una firma DEMO moderna, diseñada con un estilo actual, limpio y profesional. No contiene datos reales y está pensada para que puedas personalizarla fácilmente.

Para aprender el proceso, puedes utilizar esta firma directamente tal cual está. Más adelante podrás personalizarla con calma sustituyendo los datos de ejemplo por tus datos reales.

Ejemplo de firma de correo moderna en Apple Mail

Puedes abrir esta firma en cualquier aplicación de edición (TextEdit, VS Code, Sublime, Bloc de notas, Dreamweaver etc.) y convertirla en una firma 100% funcional simplemente:

  • Sustituyendo el nombre y los datos de contacto
  • Cambiando el logotipo por el de tu empresa
  • Editando textos, enlaces e imágenes
  • Adaptándola a tu marca o estilo visual
👉 No necesitas conocimientos técnicos. La firma ya funciona: solo tienes que reemplazar los datos de ejemplo por tus datos reales.

Tanto si ya la has personalizado como si no, el proceso de instalación en Mail es siempre el mismo. En el siguiente paso veremos cómo instalarla.

Firma_DEMO_2026.html

2) Cambia la extensión del archivo a .txt

Para abrir el contenido como texto, renombra el archivo: clic derecho → Renombrar → cambia .html por .txt.

Firma_DEMO_2026.txt
macOS te preguntará si quieres cambiar la extensión. Pulsa “Usar .txt”. Esto no estropea el archivo: solo facilita abrirlo y copiar el código.

3) Abre el .txt y copia solo la parte correcta

Cuando abras el archivo verás un HTML completo con <head> y <body>. Mail ignora el encabezado, así que debes copiar solo lo que está dentro de <body>.

❌ No copies esto (cabecera)

<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Firma demo — Apple Mail</title>
</head>
<body>

✅ Copia esto (la firma)

⬇️ EMPIEZA AQUÍ

<table cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif; font-size:13px; line-height:1.35; color:#111;">
  ...
</table>
  
TERMINA AQUÍ ⬆️

❌ No copies esto (cierre)

</body>
</html>
Tip: En la mayoría de firmas, basta con copiar desde el primer <table ...> hasta el último </table>.

4) Crea una firma nueva en Mail

Antes de pegar el HTML, necesitamos que Mail cree el archivo de firma en el sistema. Para ello, vamos a crear una firma “vacía”.

  1. Abre Mail
  2. Ve a Mail → Ajustes/Preferencias → Firmas
  3. Selecciona tu cuenta de correo en la columna izquierda
  4. Pulsa el botón + para crear una firma nueva
  5. Escribe cualquier texto provisional (por ejemplo: firma)
  6. Cierra Mail completamente
Es importante cerrar Mail para que el archivo de firma se guarde en el sistema y podamos editarlo manualmente.

5) Sustituye el contenido del archivo de firma

Ahora vamos a modificar el archivo de la firma que ha creado Mail, sustituyendo únicamente el contenido de la firma por el HTML de la firma DEMO.

  1. En Finder, pulsa ⌘ + Mayúsculas + G (Ir a la carpeta)
  2. Pega esta ruta y pulsa Enter:
~/Library/Mail/

Dentro de esa carpeta, accede a V10 / V9 / V8 (según tu versión de macOS) y después a MailData → Signatures.

Localiza el archivo correspondiente a la firma que acabas de crear (normalmente con un nombre similar a Signature-XXXX.mailsignature). Para identificarlo fácilmente, ordena los archivos por fecha de modificación y abre el más reciente con TextEdit u otro editor de texto.

⚠️ Importante: qué parte debes modificar

Al abrir el archivo verás que no contiene solo HTML, sino también cabeceras internas de Apple Mail. No debes modificar ni eliminar esas líneas.

Para que la firma funcione correctamente, no borres ni modifiques las etiquetas <body> y </body>. Reemplaza únicamente el contenido que hay entre ellas y pega ahí exactamente el HTML de la firma que copiaste en el paso 3. Todo lo demás del archivo debe permanecer intacto.


<body>
  
</body>
    
Resumen: no toques nada fuera del <body>. Sustituye únicamente el contenido que hay dentro del <body> por el HTML de la firma DEMO.
Al guardar el archivo, asegúrate de hacerlo en texto sin formato (TextEdit → Formato → Convertir en texto sin formato).

🔒 Bloquea el archivo de la firma

Para evitar que Mail sobrescriba o regenere la firma automáticamente, es recomendable bloquear el archivo una vez guardados los cambios.

  1. Cierra TextEdit y asegúrate de que el archivo está guardado
  2. Haz clic derecho sobre el archivo Signature-XXXX.mailsignature
  3. Selecciona Obtener información
  4. Marca la opción Bloqueado
Al bloquear el archivo, impides que Mail modifique el contenido de la firma. Si más adelante quieres hacer cambios, solo tendrás que desbloquearlo, editarlo y volver a bloquearlo.

6) Abre Mail y comprueba la firma

Vuelve a abrir Mail y redacta un correo nuevo. Si la firma no aparece automáticamente, selecciónala desde: Firma → tu firma.

Si ves las imágenes, enlaces y el diseño correctamente alineados, la firma está instalada con éxito ✅
Algunos clientes de correo bloquean imágenes por defecto hasta que el destinatario las permite.

🎉 Enhorabuena por llegar hasta aquí

Si has llegado hasta aquí leyendo, enhorabuena. Ya sabes cómo instalar correctamente una firma HTML en Mail y, lo más importante, entiendes cómo funciona por dentro.

Un apunte importante para terminar: las firmas no profesionales hacen que los correos pesen mucho más. Esto ocurre cuando las imágenes o elementos gráficos se incrustan directamente dentro del email.

❗ Cuando una firma incorpora imágenes “pegadas” en el propio correo, cada mensaje aumenta su tamaño innecesariamente, lo que puede afectar al envío, a la entrega y a la experiencia del destinatario.

En cambio, una firma HTML bien construida carga las imágenes desde un servidor externo, manteniendo el correo ligero, limpio y profesional, sin penalizar el peso del mensaje.

Y no te preocupes si no dispones de un servidor propio. Puedes utilizar imágenes alojadas en tus redes sociales (Instagram, Facebook, LinkedIn) o en cualquier otro servicio online que permita obtener una URL pública de la imagen.

💡 Lo importante es que las imágenes no vayan incrustadas dentro del email. Mientras se carguen desde una URL externa, la firma seguirá siendo ligera, funcional y profesional.
📺 Ver el vídeo tutorial en YouTube
(el enlace estará disponible próximamente)