2015/05/22

Sin estilos en Django admin

Si al subir una aplicación web a tu servidor, por ejemplo en Heroku, y no están accediendo a los estilos y otros ficheros estáticos, puede deberse a una mala configuración de las variables STATIC, STATIC_URL, etc. El tema de servir este tipo de ficheros está bastante bien recogido en la documentación oficial de Django, pero siempre pueden surgir problemas.

Si la página de administración "/admin" está estilos seguramente aparecen errores tales como:

static/admin/css/base.css 404 NOT FOUND
en la consola de desarrollador del navegador.

Si tienes acceso al servidor puedes probar a importar manualmente los ficheros estáticos con el comando:

python manage.py collectstatic --noinput
# En Heroku, algo como...
heroku run -a MYAPP python manage.py collectstatic --noinput
y podrás diagnósticar mejor el problema.

El probable que el problema sea que no existe el directorio que esté definido en settings.py como STATIC, por lo que si en el momento actual no existe, una solución sería crearlo e incluirlo en el repositorio.

mkdir static
touch static/empty ## debido a que GIT no lleva cuenta de carpetas vacías
git add static
git push -am "Added empty static folder to collect files on the server"

Más información sobre Heroku, Django y static files

       
   

2015/05/11

Eliminar texto en consola al ejecutar script en sqlplus (Oracle)

Cuando lanzamos un script muy largo a través de sqlplus del modo:
sqlplus user/pass@db < myscript.sql
a veces este genera un gran volumen de mensajes en consola que hacen que se pueda ralentizar el proceso. Para evitarlo, se puede apagar esta salida de texto introduciendo al comienzo del script los comandos:
set termout off
set feedback off
       
   

2015/04/25

Problemas harddisk en Windows 8

He tenido este problema en un portatil con Windows 8.1:
KERNEL_DATA_INPAGE_ERROR
Aquí va lo que he hecho, al volver a arrancar:

  1. Abrir CMD.exe como administrador
  2. Revisar los eventos de sistema con
    eventvwr
  3. Ejecutar:
    DISM /Online /Cleanup-Image /RestoreHealth
  4. Ejecutar y revisar el log de:
    sfc /scannow 
  5. Hacer un chequeo de disco (en el siguiente reinicio) con:
    chkdsk C: /f /r /x

       
   

2015/01/26

No cerrar consola de windows al ejecutar un script

Si tienes un script, por ejemplo de python, que quieres ejecutar en Windows con un acceso directo (asociando la ejecución con "pythonw.exe" para que se lance la consola) vemos que al hacer click sobre él se ejecuta, pero no podemos ver el resultado ya que se cierra rápidamente la terminal de línea de comandos.

Un truco sencillo es usar el comando "pause" como última línea del script.
Veamos un ejemplo:

C:\Python\pythonw.exe myscript.py
pause
Con eso antes, tras finalizar el script de python se detiene la ejecución hasta que el usuario pulse una tecla y se puede ver la salida del programa en la consola. Esto también funciona scripts en otros lenguajes MSDOS, los .cmd".
       
   

2014/04/11

Ejecutar scripts con sqlplus de Oracle

Este es un recordatorio de cómo ejecutar y poder ver el progreso de un script SQL para Oracle usando sqlplus.
Para conectar
sqlplus user/pass@connect
Y una vez dentro del terminal SQL
set timing on
set echo on
set serveroutput on
@nombrescript.sql
Con esto se verá cada sentencia ejecutada, el tiempo empleado para cada una y los dbms_output.put_line('').
       
   

2013/06/12

Rellenar valores vacíos de una tabla con el anterior no vacío

Imagina que tienes un CSV con valores en una columna vacios de la siguiente forma

FECHA;VALOR
15/06/12;7
18/06/12;0,5
 ;0,25
20/06/12;1
 ;2
 ;1,5
 ;2
 ;0,25
22/06/12;1
 ;2
 ;1
 ;1
 ;0,5
 ;1,5

Vemos que la columna FECHA no siempre está relleno y queremos que se complete con el valor de la primera fila anterior con valor no nulo. Ahí va una solución rápida y sencilla usando el programa awk
cat myfile.csv  | awk -F';' \ 
#Inicializo variable que almacena el valor válido
'BEGIN {d=""} \ 
{if ( $1 != "" ){ 
#Si no esta vacio asigno el valor
   d=$1; 
}
#Pinto el valor correcto para la primera columna
printf d";"; 
#y luego el resto
for (i=2; i<NF; i++) printf $i ";"; print $NF 
}'
       
   

2012/10/02

Programando tareas automáticas usando CRON

Para automatizar tareas de un modo rápido, cron es un método genial que viene incluido en la todos los sistemas operativos GNU/Linux. Para programar tareas hay que usar el comando:
crontab -e
Ahi se describe la sintaxis de la programación de tareas de forma muy sencilla. Lo que no explican es cómo hacer que una tarea se repita, por ejemplo, cada 15 minutos. Es decir, ¿cómo establezco rangos temporales?. Habría que escribir algo así:
*/15 * * * * mi_tarea
¿Y si sólo quiero que se ejecute los días de semana laborales en horario de 9h a 14h y de 16h a 20h?. Vixie Cron admite listas de parámetros, por lo que puedo hacer esto:
*/15 9-14,16-20 * * 1-5 mi_tarea
Más información útil aquí. NOTA: Ojo con la fecha/hora y la zona horaria de la máquina.