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

    jueves, noviembre 05, 2015

    Calcular en Mysql el primer y último día del mes



    SELECT DATE_FORMAT(now(),'%Y-%m-01') AS first_day;

    SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -1 MONTH) AS first_day;


    SELECT LAST_DAY(now()) AS last_day;



    Calcular en Mysql el primer y último día del mes anterior:
    SELECT date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -2 MONTH) AS first_day;

    SELECT LAST_DAY(date_add(last_day(now()),interval -1 MONTH)) AS last_day;

    viernes, octubre 16, 2015

    Trabajando con git

    Comenzar proyecto nuevo: git init
    Conectar mi repositorio nuevo con un servidor: git remote add origin servidor

    Clonar uno ya existente: git clone usuario@host:repositorio
    Obtener los cambios del repositorio remoto: git pull oring master

    Para guardar mis cambios:
    git add . #Añade todos los ficheros nuevos o modificados
    git diff  #ver los cambios que que se van a confirmar con el commit
    git commit -m "Información sobre el commit"


    Saber el estado del git: git status

    Volver al último commit realizado: git reset --hard

    Subir mis cambios al servidor remoto: git push origin master

    Crear una nueva rama: git checkout -b mi-nueva-rama
    Después de realizar los commit con los cambios y ya tenga todo listo podemos pasarlo a la rama principal y fusionar los cambios: 
    git checkout master
    git merge mi-nueva-rama


    jueves, octubre 15, 2015

    Rip DVD desde la consola o copia de un DVD desde la consola


    Instalación del Software necesario:


    sudo apt-get install vobcopy  
    sudo apt-get install mkvtoolnix

    Copia del DVD:

    Volcado del DVD al disco duro: 
    vobcopy  

    Unión de los diferentes ficheros vob en un avi, solo hay que indicar el primero fichero:
    mkvmerge -o video.avi DVD_VOLUME1-1.vob  

     
    Ya tendríamos la copia, si queremos cambiarla de formato podemos utilizar avconv. A continuación se muestra con convertirlo en H.264/MPEG-4 AVC:
    avconv -i video.avi -vcodec libx264 -strict -2 video.mp4

    lunes, marzo 16, 2015

    Instalar SIGIL en Ubuntu desde las fuentes

    Instalar Qt


    Descargar el instalador desde: http://www.qt.io/download-open-source/

    para mi ubuntu he otenido: qt-opensource-linux-x64-1.6.0-8-online.run

    Ahora lo instalamos en /opt mediante, antes darle permisos de ejecución:

    sudo chmod +x qt-opensource-linux-x64-1.6.0-8-online.run
    sudo ./qt-opensource-linux-x64-1.6.0-8-online.run

    Instalar CMake 3 o superior

    Probablemente no tengas disponible en Ubuntu la última versión de CMake 3 necesaria para compilar SIGIL. Procedemos a descargarla e instalar en /opt.

    wget -nd http://www.cmake.org/files/v3.2/cmake-3.2.1-Linux-x86_64.sh
    sudo sh cmake-3.2.1-Linux-x86_64.sh


    Compilar SIGIL


    Obtenemos la última versión estable de Sigil:

    wget -nd https://github.com/user-none/Sigil/archive/0.8.4.zip
    unzip 0.8.4.zip
    cd Sigil-0.8.4

    Ahora procedemos a su compilación:

    /opt/cmake/cmake-3.2.1-Linux-x86_64/bin/cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=run -DCMAKE_BUILD_TYPE=Release -DFORCE_BUNDLED_COPIES=1 -DCMAKE_PREFIX_PATH=/opt/Qt/5.4/gcc_64/lib/cmake

    make

    Obtendremos el ejecutable en Sigil-0.8.4/bin/sigil

    sábado, febrero 07, 2015

    Configurando Ubuntu con Java y firefox para la administración pública (firma electrónica)

    En la mayoría de páginas web de la administración publica se requiere tener instalado java y firefox para poder realizar los trámites oportunos. Pero normalmente no es bueno tener las últimas versiones, por más que en dichas páginas nos digan que no tenemos actualizado java a la última versión.

    Java

    Por lo tanto vamos a instalar java de Oracle en la versión 6 o 7 que suelen ser los que funcionan. A continuación vamos a ver la instalación para la versión 6 (aunque para la 7 es muy similar solo hay que cambiar el 6 por un 7) mediante el  ppa de www.webupd8.org :
    WEB UP8

    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java6-installer
     
    Veamos que todo ha ido correctamente consultando la versión actual de java instalada:

    java -version
     
    Obtendremos una salida similar a esto:
    
    
    java version "1.6.0_45"
    Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
    Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) 
     
     
    Si aún mostrara que estamos con Openjdk lanzaremos esto para cambiar a la versión java de oracle recién instalada:
     
    sudo update-java-alternatives -s java-6-oracle 
     
    Ahora hay que aceptar la licencia de Oracle:
     
    echo oracle-java6-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections 
     
    Para configurar las variables de entorno para el uso de java de oracle:
     
    sudo apt-get install oracle-java6-set-default 
     
     
    Mozilla Firefox
    Ahora es el turno de firefox, vamos a instalar una versión antigua de firefox. Primero trataremos de ver que versión antigua tenemos disponible en los repositorios de Ubuntu:
     
    apt-cache show firefox | grep Version
    
        
    Obtendremos algo similar a esto:

    Version: 35.0.1+build1-0ubuntu0.14.04.1
    Version: 28.0+build2-0ubuntu2

     
    Ahora vamos a instalar la versión más antigua que nos ofrecen:

    apt-get install firefox=28.0+build2-0ubuntu2 
     
    Para evitar que en la proxima actualización del sistema volvamos a la versión más moderna, vamos a congelar las actualizaciones de firefox:

    apt-mark hold firefox 

    Si por alguna razón ya deseamos que se pueda actualizar firefox solo tenemos que:

    apt-mark unhold firefox