Póster casero

Si tenemos una imagen y queremos crear un póster impreso (y montado a base de folios) por nosotros mismos podemos utilizar un servicio como Block posters. También podemos utilizar los comandos convert y pdfposter para conseguir lo mismo. Primero creamos un PDF a partir de la imagen, en este caso del mapa del software libre: $ convert mapa-del-software-libre.png mapa-del-software-libre.pdf Ahora ya podemos crear el póster: ...

December 11, 2010 · 1 min · 136 palabras · Nacho Cano

Intercambio de los valores de dos variables

En algunos lenguajes, intercambiar el valor de la variable a por el de la variable b implica, explícitamente, utilizar una variable temporal: t = a; a = b; b = t; En Python: a, b = b, a Pero esperen, aún hay más: a, b, c, d = d, c, b, a Actualizado el 31 de julio de 2011 En Bash: $ read a b c <<< $(echo $c $b $a) Otra manera: ...

December 3, 2010 · 1 min · 174 palabras · Nacho Cano

Buscar en todos los campos de un modelo en Django

Una acción típica que se va a repetir en, prácticamente, cada listado que mostremos, es la de añadir un buscador [1]. Un buscador típico incluirá un pequeño formulario en la misma página de listado: <form method="get" action=""> <input type="text" name="q" value="{{ q }}" /> <input type="submit" value="Search" /> Nos interesaría no tener que ir copiando y pengando este código en cada listado. Aunque sea un código que no vaya a cambiar, viola el principio de DRY. ...

November 19, 2010 · 3 min · 580 palabras · Nacho Cano

Control de concurrencia optimista en Django

Si tenemos una aplicación multiusuario, podría darse el caso de que dos usuarios accediesen simultáneamente al mismo registro para editarlo. Si no controlamos este evento, sucederá que el primero que guarde, que no tiene porqué ser el primero que comenzó a editar, perderá los cambios, y lo que es peor, sin enterarse. Una solución sería utilizar transacciones [1], pero éstas deberían abarcar varias peticiones HTTP, desde que se empieza a editar hasta que se guarda satisfactoriamente (o no), con lo que la solución idónea se complica. Una solución más sencilla, pero efectiva en la inmensa mayoría de casos, es utilizar el control de concurrencia optimista (también comentado en slashdot). ...

November 5, 2010 · 3 min · 527 palabras · Nacho Cano

Cómo publicar directorios en Ubuntu One y Dropbox

Ubuntu One es el servicio que ofrece Ubuntu en la nube. Entre otras cosas, como sincronizar archivos de configuración o nuestros favoritos, permite compartir archivos y directorios de nuestro espacio en la nube con las personas que queramos de una forma sencilla. Tambíen permite publicar archivos, para cada uno de los cuales se genera una URL corta, y que sean accesibles por cualquiera. Sin embargo, no permite publicar directorios, al menos por ahora. ...

October 31, 2010 · 4 min · 827 palabras · Nacho Cano

The name of the game

Cuando el Imperio Galáctico entró en decadencia, Hari Seldon, miembro de la corte del Emperador Cleón I, desarrolló la ciencia de la Psicohistoria. De esta manera, predijo que cuando el Imperio terminara de derrumbarse, comenzaría una edad oscura de 30.000 años, con la galaxia sumida en el caos. Esta edad terminaría con el ascenso de un Nuevo Imperio. Usando las leyes de esta nueva ciencia, Seldon inventó un plan para reducir el interregnum de 30.000 a sólo 1.000 años, plantando las semillas de una nueva civilización. ...

October 28, 2010 · 3 min · 457 palabras · Nacho Cano

USB Dumping

El USB Dumping consiste en copiar el contenido de un USB introducido en un ordenador, sin que la víctima se entere. En Ubuntu, podemos conseguir que se ejecute el script que llevará a cabo el robo de información, cuando se conecte un dispositivo USB. Para ello, deberemos crear alguna regla de udev. udev y sysfs udev se encarga de crear los nodos en /dev para los dispositivos presentes en el sistema. Para ello, se basa en la información prorcionada por sysfs y una serie de reglas proporcionadas por el usuario. sysfs devuelve información de los dispositivos conectados al sistema, y udev lo utiliza para crear los nodos /dev. ...

October 27, 2010 · 5 min · 895 palabras · Nacho Cano

y2k38

$ grep INT_MAX /usr/include/limits.h # define INT_MAX 2147483647 $ date -u -d @2147483647 mar ene 19 03:14:07 UTC 2038 $ date -d @2147483647 mar ene 19 04:14:07 CET 2038 $ date -u -d @2147483648 date: fecha ``@2147483648'' inválida

October 27, 2010 · 1 min · 38 palabras · Nacho Cano

Recuperando archivos del USB

Tengo la mala costumbre de borrar archivos utilizando la combinación shift+del, para borrarlos directamente sin pasar por la papelera. Llegará el momento en que borre algo que no debería o algo que necesitaré más tarde. Si esto sucediese, lo mejor podría ser: Desmontar el USB para evitar males mayores $ sudo umount /media/miusb # 'miusb' es el nombre del volumen del USB Hacer una copia del USB con dd $ dd if=/dev/sdb1 of=/tmp/miusb.dd # sdb1 es la unidad donde se monta el USB Podemos listar los archivos borrados con ils $ ils -r /tmp/miusb.dd class|host|device|start_time ils|anacreonte||1288172460 st_ino|st_alloc|st_uid|st_gid|st_mtime|st_atime|st_ctime|st_crtime|st_mode|st_nlink|st_size 8|f|0|0|1263329350|1265842800|0|1263329350|777|0|33076 12|f|0|0|1265738134|1288130400|0|1265738134|777|0|31609 14|f|0|0|1263325690|1288130400|0|1263325690|777|0|28946 16|f|0|0|1263326438|1288130400|0|1263326438|777|0|2305751 19|f|0|0|1263327386|1288130400|0|1263327386|777|0|91028 Creamos un directorio para tener todos los archivos que se puedan recuperar $ mkdir /tmp/miusb_tmp Recuperamos los archivos con icat $ for i in $(ils -r /tmp/miusb.dd | awk '{print $1}' FS="|" | sed 1,3d); do icat -r /tmp/miusb.dd $i > /tmp/miusb_tmp/$i echo $i done Comprobamos el tipo de archivos recuperados $ file /tmp/miusb_tmp/* 8: OpenDocument Text 12: PDF document, version 1.2 14: PDF document, version 1.3 16: PDF document, version 1.4 19: PDF document, version 1.2 ils y icat vienen incluidos en el paquete sleuthkit, que se encuentra en los repositorios. También existe autopsy, que es una interfaz web para sleuthkit.

October 27, 2010 · 1 min · 204 palabras · Nacho Cano

Sa Nostra y SSL

Leyendo la comparativa de SbD sobre el uso de SSL por parte de los bancos online, estos son los resultados de Sa Nostra: URL: https://linea.sanostra.es Verificación SSLv2 Comando: $ openssl s_client -ssl2 -connect linea.sanostra.es:443 Bien: no da soporte Tipo de certificado (Normal/EV) Esto lo podemos comprobar a través del navegador. Mal: Tiene un certificado SSL sin Validación Extendida. Longitud de la clave RSA del certificado Comando: $ openssl s_client -connect linea.sanostra.es:443 Mal: La clave es de 1024 bits. ...

October 25, 2010 · 1 min · 108 palabras · Nacho Cano