Nos encontramos ante una biblioteca de decenas de miles de archivos fotográficos, de los cuales un porcentaje considerable está corrupto.
Objetivo
Depurar las imágenes corruptas a fin de organizar como es debido nuestra biblioteca.
Solución
Nota: sólo aplicable a sistemas linux
Vamos a necesitar la aplicación ImageMagick:
$sudo apt-get install imagemagick
y rsync, que debería venir instalado por defecto en tu distribución linux.
Primer paso:
Identificamos los archivos corruptos y los volcamos a un fichero.
IFS=$'\n';forfin$(find/directorio/con/fotos-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||echo$f>>/tmp/fail;done;cat/tmp/fotos_corruptas
Este comando recorre de manera recursiva todos los ficheros con extensión .jpg y, en caso encontrar uno corrupto, inserta una nueva línea en el fichero fotos_corruptas con la ruta del fichero corrupto. Por último, muestra por pantalla el contenido de dicho fichero.
Este paso nos sirve para comprobar que, efectivamente, estamos detectando ficheros inválidos.
Segundo paso:
Movemos todos los ficheros corruptos a un directorio para su posterior borrado:
IFS=$'\n';forfin$(find/home/yolanda/Imágenes-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||rsync-avR$f/tmp/imagenes_corruptos;done;ls/tmp/imagenes_corruptas
De esta manera moveríamos todos los ficheros corruptos a la carpeta ficheros_corruptos. El inconveniente de esta comando es que, en caso de que dos ficheros tuvieran el mismo nombre, se sobrescribirían. De ahí que sea más pertinente usar rsync.
Versión definitiva::
IFS=$'\n';forfin$(find/home/yolanda/Imágenes-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||rsync-avR$f/tmp/imagenes_corruptas;done;ls/tmp/imagenes_corruptas
Este comando mueve todos los ficheros corruptos a /tmp/imagenes_corruptas, respetando el árbol de ficheros.
Escenario Hemos contratado un servidor dedicado en 1and1 (ubuntu 14.04) y al acceder por ssh constatamos que no disponemos de todo el espacio en disco disponible:
$df-hFilesystem Size Used Avail Use%Mounted onudev3.9G4.0K3.9G1%/devtmpfs798M592K797M1%/run/dev/md14.0G990M3.0G25%/none4.0K04.0K0%/sys/fs/cgroupnone5.0M05.0M0%/run/locknone3.9G03.9G0%/run/shmnone100M0100M0%/run/user/dev/mapper/vg00-usr4.8G1.3G3.3G28%/usr/dev/mapper/vg00-var4.8G812M3.8G18%/var/dev/mapper/vg00-home4.8G10M4.6G1%/home Objetivo Aumentar el espacio disponible para dar cabida a nuestros recursos. Solución Nota: sólo aplicable a sistemas linux Primer paso Comprobamos el espacio en disco real:
~$sudo fdisk-lDisk/dev/sda:240.1GB,240057409536bytes255 heads,63sectors/track,29185cylinders,total468862128sectorsUnits=sectors of1*512=512bytesSector size(logical/physical):512bytes/4096bytesI/Osize(minimum/optimal):4096bytes/4096bytesDisk identifier:0x24e3fc12Device Boot Start EndBlocks Id System/dev/sda1204883906554194304fd Linux raid autodetect/dev/sda2839065612584959209715282Linux swap/Solaris/dev/sda312584960468862127228138584fd Linux raid autodetect Segundo…
Escenario En una aplicación Spring Boot v2.3.4 hay dos entidades
Balance y
Shop. Una tienda (shop) puede tener varios saldos y un saldo (Balance) ha de estar relacionado con una tienda. Además existen panaderías (Bakery) y sastrerías (TailorShop) que extienden la clase
Shop:
Si utilizas Codeigniter te habrás dado cuenta que, por defecto, index.php va estar incluido en tu URL, lo cual no queda muy bonito. Afortunadamente se puede quitar fácilmente de modo que la URL de Codeigniter quede de este modo: http://predatum.com/edit/contact
Escenario Tenemos montado un acceso remoto al escritorio de una máquina de la oficina usando el protocolo VNC y el cliente web Guacamole. Queremos permitir que los usuarios puedan pegar contenido en el portapapeles del escritorio remoto, pero no puedan llevarse el contenido del portapapeles remoto a su propia máquina. O, dicho de otra manera,…
Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:
Escenario Tienes una web con un certificado de un vendedor que va a expirar, o no tienes certificado y, por la razón que sea, quieres uno de pago. Objetivo Necesitas instalar o renovar un certificado SSL proporcionado por uno de los vendedores tradiciones, Comodo, Symantec, Geotrust, etc… Usaremos a modo de ejemplo el subdominio ssl.technoage.net….