Mostrando entradas con la etiqueta imagen. Mostrar todas las entradas
Mostrando entradas con la etiqueta imagen. Mostrar todas las entradas

jueves, 25 de agosto de 2011

Borrando imágenes no usadas en un proyecto Rails

Para acabar el rediseño de un proyecto, estoy en la fase final de limpieza de código y me he encontrado que habían muchísimas imágenes antiguas que ya no se utilizan

En lugar de ir buscando una por una si se usaba, que me iba a llevar demasiado tiempo, he hecho un script en ruby que busca las imágenes no usadas y las borra de subversión:


images = Dir.glob('public/images/*')

images.each do |image|
  unless File.directory?(image)
    puts "Checking #{image}..."
    if IO.popen("ack-grep -1 -G '(app|public)' --ruby --html --css #{File.basename(image)}").eof?
      IO.popen("svn delete #{image}")
      puts " Deleted"
    end
  end
end

Es tan simple como buscar todas las imágenes del directorio images y aplicar sobre cada una de ellas un ack-grep que me busca en ficheros de ruby (.rb, .erb), html y css de los directorios app y public. El párametro -1 hace que al encontrar el primer resultado deje de buscar, con lo que conseguimos que vaya un poco más rápido.

Luego, sobre cada una de las imágenes no usadas hace un svn delete y ya solo nos queda revisar la lista de borrados para asegurarnos de todo ha ido bien y un commit al repo.

La modificación para que busque tambien en subdirectorios de images sería  usar 'public/images/**' como parametro en Dir.glob y igual de simple sería cambiarlo para que use git, cambiando la llamada del segundo IO.popen

Pues nada, aquí dejo el gist con el script para quien le pueda ser de utilidad.



jueves, 30 de abril de 2009

Centrar verticalmente una imagen en un div

Aparentemente una cosa tan trivial como esa tiene un poco más de miga de lo que parece, y buscando soluciones se encuentran muchas divagaciones y ejemplos interminables.

La primera idea es usar el atributo vertical-align, pero sólo es válido para alinear la imagen con el texto adjacente. Sin embargo, se puede usar una solución simple basada ese atributo.

Si definimos el line-height del div igual a su altura y le ponemos un espacio en blanco delante de la imagen para que tenga una referencia donde alinearse, ya lo tenemos:

<div style="border: 1px solid #AA0000; text-align: center; line-height: 100px; width: 100px; height: 100px;">
&nbsp;<img style="vertical-align: middle;" src="http://www.blogger.com/logo.gif" />
</div>




Actualizacion 04/05/2009: Fer propone en los comentarios posibles alternativas a mi solución. Gracias!


Actualización 12/06/2009: He probado en Browsershots esta solución y los resultados son que funciona en

- Navegadores basados en Gecko (todas las versiones probadas de Firefox, Seamonkey, ...)
- Navegadores baseados en KHTML/Webkit (todas las versiones probadas de Konqueror, Safari, Chrome, ...)
- Todas las versiones de Opera a partir de la 7.54 incluida la 10 beta
- Internet Explorer 8.0

Y no funciona en:
- Versiones de IE inferiores a la 8.0 (7.0, 6.0, 5.5)
- Avant
- Dillo


Actualización 7/10/2009: En CodeProject dan una solución basada en javascript

Actualización 4/5/2011: 2 años después sigue dando guerra el mismo problema y en los comentarios apuntan un enlace que resuelve un caso particular. Gracias

http://www.jakpsatweb.cz/css/css-vertical-center-solution.html