Error en MySQL: Can’t create table ‘xxx’ (errno: 150)

Soy de los que piensa que MySQL (o MariaDB si queréis algo no dependiente de Oracle) es una gran base de datos incluso para desarrollos serios y lo pongo en negrita porque todavía hoy me encuentro con muchos que defienden alternativas como Oracle DB o PostgreSQL para aplicaciones más complejas y MySQL para aplicaciones más sencillas. read more

Leer más » 3 Comentarios

Reproduce o descarga videos de Youtube por linea de comandos

El otro dia estaba tratando de instalar un cliente de terminal para Spotify, el reproductor de musica online.
Se trataba de despotify, no lo conseguí ya que esta obsoleto y además resulta que solo es para cuentas premium.

Pero buscando me encontré con un cliente para terminal llamado Poor man’s Spotify, que traducido seria “el spotify de los pobres”. La verdad que es una joya en bruto, porque reproduce y descarga vídeos online de youtube a traves de la linea de comandos. Entre sus características: read more

Leer más » 1 Comentario

Resolver un sistema de ecuaciones lineales en Octave

Queremos resolver el siguiente sistema de ecuaciones lineales:

sel

En Octave es muy sencillo gracias a la función linsolve.

Éste sería el código para resolverlo:

A = [3 1; 4 -3];
B = [22; -1];
X = linsolve(A, B);
disp(['x = ' num2str(X(1)) ', y = ' num2str(X(2))]);

Si todo ha ido bien las soluciones son 5 y 7 respectivamente.

Leer más » 7 Comentarios

Borrado seguro de ficheros con SHRED

En ocasiones necesitamos eliminar definitivamente ficheros o particiones que contienen información sensible como ficheros con contraseñas, datos de la empresa, información personal, cuentas bancarias, si se va a tirar/vender un viejo disco duro o simplemente si uno es un paranoico de la seguridad (y no tiene encriptados sus datos).

A través del comando rm podemos borrar ficheros, pero este borrado solo destruye un índice con la ubicación del fichero, no se borra el registro de donde se ubica físicamente ese archivo. read more

Leer más » 4 Comentarios

QRencode, creando códigos QR desde la terminal

QRencode es una aplicación para la creación de códigos QR. Al ser escaneados por un teléfono móvil, podemos aplicarlos para agregar contactos a la libreta de direcciones (Vcard), enlazar a webs, vídeos, mapas, textos, etc.

– Comenzamos con la instalación:

[code]sudo apt-get install qrencode -y
[/code]

El comando básico es qrencode -o [parámetros]  y la dirección del enlace [cadena]

La opción – o especifica el archivo de salida, que siempre es un archivo .png.

– Utilización  para redirecciones a webs, vídeos, etc. read more

Leer más » 2 Comentarios

Akismet no conecta. Configurar Akismet detrás de un proxy

Si Akismet, el archiconocido plugin de WordPress para evitar SPAM, no es capaz de conectar con sus servidores puede ser por dos motivos, o porque sus servidores están caído (esto no suele pasar), o porque la red donde nos encontramos está bajo un firewall. ¿Qué hacemos en este caso? posiblemente los administradores de esa red provean un salida opcional mediante proxy.

proxy_akismet_linux_hispano

Este fue nuestro caso en uno de nuestro últimos proyecto con Codection. No citaré el nombre de la organización, pero si diré que tiene un volumen bastante grande, y la opción de abrirnos puertos o pasarelas para un servicio determinado no suele ser una opción que se ofrezca. ¿Entonces? Lo que os adelantaba arriba, la instalación de WordPress saldrá por un proxy. read more

Leer más » 1 Comentario

Calcular el máximo y el mínimo en C++

Siempre resulta útil conocer las funciones de la librería estándar para calcular el máximo y el mínimo, por ejemplo en un vector, en C++. Aquí os paso dos ejemplos claros.

Aquí os

Ejemplo para calcular el máximo:

#include 
#include 
#include 
 
int main()
{
  std::vector v{3, 1, 4, 1, 5, 9};

  std::vector::iterator result = std::max_element(std::begin(v), std::end(v));
  std::cout << "Maximo en la posicion: " << std::distance(std::begin(v), result);
}

Ejemplo para calcular el mínimo:

#include #include #include int main() { std::vector v{3, 1, 4, 1, 5, 9}; std::vector::iterator result = std::min_element(std::begin(v), std::end(v)); std::cout << "Minimo en la posicion: " << std::distance(std::begin(v), result); } read more

Leer más » 3 Comentarios

Obtener nombre, dirección y otros detalles de un blog dentro una red de blogs WordPress

Las redes de blogs WordPress, los antiguos WordPress Multisite, son una alternativa muy funcional para poder mantener multitud de sitios, en una sola instalación. No tienen por qué ser blogs, ni formar parte de una red como tal, sino pertenecer a una misma instalación para ahorrar en recursos y en mantenimiento. read more

Leer más » 2 Comentarios

Nuevos bucles ‘for’ basados en ‘range’ gracias a C++11

Una de las ventajas del nuevo C++11 son los bucles. Sólo hay que comprobar con este ejemplo la simplicidad de esta nueva versión del lenguaje:

#include #include int main(int argc, char *argv[]) { std::vector v = {0, 1, 2, 3, 4, 5}; for (int i : v) // acceso por valor. std::cout << i << ' '; std::cout << std::endl; for (auto i : v) // acceso por valor usando 'auto' std::cout << i << ' '; std::cout << std::endl; for (int &i : v) // acceso por referencia (puedes usar 'const') std::cout << i << ' '; std::cout << std::endl; } read more

Leer más » 1 Comentario

Comprobar en PHP si una URL contiene una cadena

phpMuchas veces tenemos que tomar decisiones en función de lo que contenga la URL. No suele ser el método más elegante y en una buena arquitectura con un modelo vista controlador no es lo frecuente, sin embargo, sí es algo que pasa y es algo que nos puede sacar de más de un problema si sabemos cómo hacerlo. read more

Leer más » 3 Comentarios