miércoles, diciembre 02, 2015

Configurando virtualenv para Django en Ubuntu

Procedemos a su instalación:
sudo apt-get install python-virtualenv 

Configuramos virtualenv en el directorio django1.7, pues vamos a crear una instalación de Django con la versión 1.7 para nuestro proyecto. Accediendo al directorio que genera virtualenv podremos activar nuestro entorno:

virtualenv django1.7
cd django1.7/
source bin/activate

Este directorio contendrá todas las librería para la configuración de python con los paquetes que nosotros deseemos, no es necesario meter nuestro proyecto dentro de dicha carpeta.

Ahora podemos instalar Django y todas las librerías que necesitemos para nuestro proyecto, ojo tenemos que ver que el prompt ha cambiado y muestra que estamos trabajando con el entorno virtualenv que hemos activado:

(django1.7)$ pip install django==1.7

(django1.7)$pip install django_tables2
(django1.7)$pip install django_filter
(django1.7)$pip install xhtml2pdf

La instalación de mysql para utilizarlo con Django requiere de instalar el paquete de desarrollo de mysql y el compilador gcc:

(django1.7)$sudo apt-get install libmysqlclient-dev
(django1.7)$sudo apt-get install gcc
(django1.7)$pip install MySQL-python


Si el proyecto se va lanzar desde apache con WSGI, tendremos que añadir al path de python el directorio del virtualenv:

WSGIDaemonProcess hammam python-path=/home/usuario/miproyecto:/home/usuario/django1.7/lib/python2.7/site-packages

martes, diciembre 01, 2015

Comandos útiles de la shell en Linux


    • Listar los ficheros de un directorio en duplicado en la misma línea y guardarlos en un fichero. Esto puede ser útil para manipular los fichero. Por ejemplo suponiendo que se tratan de ficheros de audio y queremos un fragmento de 30 segundos de cada pista:
      ls *.flac | awk '{ print "ffmpeg -i " $0 " -t 30 fragmento-" $0 }' > fichero-destino
      bash fichero-destino


      Renombrar ficheros de imágenes a un nombre + un número:
      ls *.jpg | awk '{ print "mv \"" $0  "\"imagen" x++ ".jpg" }' > fichero-destino

      bash fichero-destino
      Renombrar las extensiones de algunos ficheros:
      ls *JPG* | awk '{a=$0;gsub(".JPG",".jpg",a); print "mv " $0 " " a }' > fichero-destino
      bash fichero-destino

    • Ficheros inmodificables. lsattr muestra los atributos de un fichero y chattr los cambia:
      chattr +i fichero/directorio (lo hace inmodificable)
      chattr -i fichero/directorio (permite la modificación)

    • Borrando ficheros para una fechada dada:
      ls -ld */*/* | grep "jul 10" | cut -c 47-80| xargs rm

    • Cambiar de png a jpg.
      ls *.png | awk '{a=$0;gsub(".png",".jpg",a); print "convert " $0 " " a}' > kk.sh
      bash kk.sh
    • Cambiar la resolución a 300 dpi de una imagen:
      convert -units PixelsPerInch imagen -resample 300 imagenresultanteVarios ficheros, convertirlos a jpg, 300 dpi y renombrarlos como una secuencia numérica:
      ls * | awk '{print "convert -units PixelsPerInch " $0 " -resample 300 " NR ".jpg" }' > fichero-destino

    • Matar todos los procesos de un usuario:
      pkill -u usuario
      sudo pkill -u usuario


    • Indicar clave con sshpass. Esto nos ahorra esperar para meter la clave en conexiones lentas.
      sshpass -p clave ssh ususaro@servidor -p puerto
    • Sincronizar una carpeta, copiando solo los ficheros que falten o que sean diferentes del original (verficado mediante hash):
      rsync -avuc carpeta_origen/ carpeta_destino/ El parámetro -a hace la copia recursiva y preserva los tiempos de modificación, copia los vínculos simbólicos, preserva los permisos, preserva la información de el dueño y el grupo del archivo, preserva los archivos de dispositivo y los archivos especiales.
      Los parametors -uc actualizará los contenidos de la carpeta destino en base a la carpeta de origen mediante la comparación del hash de los ficheros.

      Mostrando el progreso y mediante un puerto diferente al estándar de ssh:
      rsync -avuc -e 'ssh -p 443' --progress carpeta_origen/ host:/carpeta_destino/
      pkill -u usuario