Ingeniero informático, estudiante de matemáticas y filosofía. Le interesa todo lo que pueda entenderse y todo lo que pueda hacerse; construye lo que no encuentra hecho.
Escribe en este blog desde 2008: primero sobre programación, trastear y lo que iba encontrando; ahora, sobre todo, reflexiones en voz alta sobre tecnología y lo que nos hace humanos.
Es autor de «El Código Humano. Ensayo sobre la reorganización inevitable» (2026), su primer ensayo.
Obras
- El Código Humano. Ensayo sobre la reorganización inevitable (2026)
Escribe sobre
- Programación y sistemas
- Increíble pero cierto
- Ciencia
- Reflexiones
- MySQL
- Inteligencia artificial
- Ficción
- PHP
90 posts
Cómo comprobar si una extensión de PHP está habilitada
Fácil, sencillo y para toda la familia:
<?php
echo "GD: ", extension_loaded('gd') ? 'OK' : 'MISSING', '<br>';
echo "XML: ", extension_loaded('xml') ? 'OK' : 'MISSING', '<br>';
echo "zip: ", extension_loaded('zip') ? 'OK' : 'MISSING', '<br>';
?>
Crea un...
tar y untar en línea de comandos de Linux
Esto en realidad no es más que un recordatorio para mí mismo, porque nunca me acuerdo del comando para tar y untar en la línea de comandos de Linux utilizando también compresión gzip, con lo que obtendríamos un archivo.tar.gz
Ejemplo para comprimir con gzip:
# cd /ruta/carpeta/
# tar -cvzf nombre_archivo_final.tar.gz nombreCarpeta
Ejemplo para descomprimir con gzip Accedemos a la carpeta y ejecutamos:
# tar -xvf nombre_archivo_final.tar.gz
UPDATE from table: recuperar backup de datos MySQL
Antes de hacer algún UPDATE general en una tabla que modificará todo su contenido, es importante hacer un backup de esta en otra tabla. phpMyAdmin permite hacerlo muy fácilmente con Operaciones > copiar la tabla a (con estructura y datos).
Una vez hecho el cambio, si queremos restaurar el backup
MySQL - SQL standard
UPDATE tabla1 t1, tabla_backup b
SET t1.campo1=b.campo1
WHERE t1.id=b.id
Simple y sencillo: tendremos de vuelta nuestros datos.
Cómo utilizar la función LAST() y FIRST() en MySQL
FIRST() y LAST() no existen en MySQL, pero se puede sacar el primer y el último valor de cada grupo con GROUP_CONCAT y SUBSTRING_INDEX, junto a MIN, MAX y AVG.
Cómo resolver el problema de acceso a la API de Google
Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }
Uno de los posibles casos de este error, si has comprobado que todo lo demás está correcto, es que la fecha del ordenador o servidor donde estás haciendo la petición no sea la correcta; hay un pequeño margen en el que no importa, pero a partir de ahí falla.
Reposamuñecas para teclado calefactado
Desde luego, si no existe tendría que existir. La idea la doy gratis, y si alguien la quiere ejecutar por 1 céntimo de euro por cada teclado que venda, la idea es suya.
Consistiría en el típico reposamuñecas para teclado, tanto sólido como de gel, pero con la peculiaridad de estar calefactado.
¿En qué me afecta Colibrí?
La respuesta a esta pregunta es muy gallega: pues depende.
¿Tus artículos responden a preguntas o te dedicas a juntar palabras para tener un buen número de palabras clave en tu texto?
Si la respuesta es la segunda opción, estás jodido fastidiado, porque esa clase de SEO se ha terminado.
¿Qué hago ahora con mis posts viejos?
Comprobar redirecciones masivas automáticamente
Cuando tenemos un cambio de software o un cambio en el tipo de urls de tu dominio o incluso un cambio de dominio, es importante saber adónde van a ir las páginas que tenías antes y redireccionarlas a sus nuevos nombres, sobre todo para aprovechar posibles posicionamientos en buscadores, enlaces de otras páginas y todas esas cosas tan importantes para poder seguir manteniendo el tráfico de tu web.
Para ello tendremos que tener un listado en el que tendremos las URL antiguas y las nuevas. Podemos hacer las redirecciones de varias maneras: .htaccess (Apache), redirección por PHP...
Pero el problema gordo viene después de hacer todas estas redirecciones...