Hay algunos problemas con la version 0.4 de django_openid_auth (ej: no se puede instalar via pip). El proyecto es open source, por lo tanto es muy facil subirlo a GitHub y compartir estos arreglos :-)
Básicamente bajé el proyecto original (revisión 88) y lo subi a GitHub. Para instalarlo usando PIP hay que ejecutar:
./pip install -e git+http://github.com/hgdeoro/hgdeoro_fork_of_django_openid_auth#egg=django_openid_auth
Actualización
Mucho mejor, instalamos usando PIP, pero un commit en particular (ec68dfc046d1a75b50080ea98c56eda71956ed7a):
pip install -e git+http://github.com/hgdeoro/hgdeoro_fork_of_django_openid_auth@ec68dfc046d1a75b50080ea98c56eda71956ed7a#egg=django_openid_auth
O también un tag en particular (bzr_revno_88):
pip install -e git+http://github.com/hgdeoro/hgdeoro_fork_of_django_openid_auth@bzr_revno_88#egg=django_openid_auth
miércoles, 25 de enero de 2012
Instalando django_openid_auth usando PIP
Posteado por
Software and Motorcycles
a las
20:22
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
django,
pip,
python,
virtualenv
miércoles, 21 de diciembre de 2011
Cargando modulo 'tun' al iniciar Android
Al intentar usar el cliente de OpenVpn me encontré con que mi Android no carga automáticamente el modulo "tun", y por lo tanto la VPN nunca levanta.
Para solucionarlo, agregué el siguiente archivo en "/system/etc/init.d/10modprobetun":
Luego de crear el archivo, hace falta agregarle permisos de ejecución, usando:
chmod +x /system/etc/init.d/10modprobetun
Para poder modificar los contenidos de /system, hay que remontarlo en modo escritura, usando:
mount -o remount,rw /system
Ahora, luego de reiniciar el celular, el modulo aparece cargado:
localhost ~ # lsmod
Module Size Used by Not tainted
wireless 189315 0
tun 11765 0
Para solucionarlo, agregué el siguiente archivo en "/system/etc/init.d/10modprobetun":
Luego de crear el archivo, hace falta agregarle permisos de ejecución, usando:
chmod +x /system/etc/init.d/10modprobetun
Para poder modificar los contenidos de /system, hay que remontarlo en modo escritura, usando:
mount -o remount,rw /system
Ahora, luego de reiniciar el celular, el modulo aparece cargado:
localhost ~ # lsmod
Module Size Used by Not tainted
wireless 189315 0
tun 11765 0
Posteado por
Software and Motorcycles
a las
17:07
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
android,
openvpn
jueves, 8 de diciembre de 2011
Aprendiendo a usar uci en OpenWrt
Entre la extensa documentación de OpenWrt encontré que "uci show" puede ser de muchísima ayuda, ya que hace un "dump" de la configuración en un formato que después se puede usar con "uci get" y "uci set". Por ejemplo:
root@TL_MR3420:/etc/config# uci show system
system.@system[0]=system
system.@system[0].timezone=UTC
system.@system[0].hostname=TL_MR3420
system.ntp=timeserver
system.ntp.server=0.openwrt.pool.ntp.org 1.openwrt.pool.ntp.org 2.openwrt.pool.ntp.org 3.openwrt.pool.ntp.org
system.led_usb=led
system.led_usb.name=USB
system.led_usb.sysfs=tp-link:green:3g
system.led_usb.trigger=usbdev
system.led_usb.dev=1-1
system.led_usb.interval=50
root@TL_MR3420:/etc/config# uci show system
system.@system[0]=system
system.@system[0].timezone=UTC
system.@system[0].hostname=TL_MR3420
system.ntp=timeserver
system.ntp.server=0.openwrt.pool.ntp.org 1.openwrt.pool.ntp.org 2.openwrt.pool.ntp.org 3.openwrt.pool.ntp.org
system.led_usb=led
system.led_usb.name=USB
system.led_usb.sysfs=tp-link:green:3g
system.led_usb.trigger=usbdev
system.led_usb.dev=1-1
system.led_usb.interval=50
Luego, por ejemplo, para cambiar la zona horaria:
root@TL_MR3420:/etc/config# uci set system.@system[0].timezone=ART3
root@TL_MR3420:/etc/config# uci commit system
Posteado por
Software and Motorcycles
a las
13:06
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
openwrt
sábado, 5 de noviembre de 2011
Apache en primer plano (o sea, foreground)
Necesitaba iniciar apache y que quede funcionando en "primer plano". Inicialmente intenté arrancarlo con la opción "-X" para activar el modo debug, pero esto hacía que las páginas sean servidas muy lentamente. Buscando un poco más encontré http://httpd.apache.org/docs/2.2/programs/httpd.html y ví que se puede usar "-D" para lograrlo.
Finalmente, el comando que estoy usando es:
apache2 -DNO_DETACH -DFOREGROUND -f apache-dev.conf
Finalmente, el comando que estoy usando es:
apache2 -DNO_DETACH -DFOREGROUND -f apache-dev.conf
Posteado por
Software and Motorcycles
a las
11:56
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
apache
lunes, 31 de octubre de 2011
CyanogenMod 7.1 en mi LG Optimus One (P500)
Pude instalar exitosamente CyanogenMod 7.1 (Android 2.3 Gingerbread) en mi LG Optimus One (P500), usando un ROM no oficial (o sea un ROM que no es armado por el proyecto CyanogenMod). Mi celular tenía originalmente Android 2.2 (Froyo). El link con todas las instrucciones, advertencias, consejos, etc. es:
http://forum.xda-developers.com/showthread.php?t=946354
Mi intención con este post es compartir mi experiencia, nada más. Si vas a hacerlo, te recomiendo que sigas las instrucciones del link que puse más arriba.
Yo use la version "beta6.5.8", que era la versión estable del ROM.
Procedimiento que seguí:
http://forum.xda-developers.com/showthread.php?t=946354
Mi intención con este post es compartir mi experiencia, nada más. Si vas a hacerlo, te recomiendo que sigas las instrucciones del link que puse más arriba.
Yo use la version "beta6.5.8", que era la versión estable del ROM.
Procedimiento que seguí:
- Primero: investigar en internet los peligros de hacer esto! Lo peor que puede pasar es que el celular deje de funcionar (o sea, ni siquiera se pueda prender)! Además, los programas que vienen de fábrica puestos por LG no van a estar mas (NDrive, juegos, y la posibilidad de sincronizar los datos con la PC usando el soft de LG, etc, etc, etc). A mí esto no me afectaba porque no uso esos programas, y la sincronización la hago con Google.
- Leer http://forum.xda-developers.com/showthread.php?t=946354 (allí están todas las instrucciones necesarias).
- Backupear todos los datos importantes, sacar todas las fotos, downloads, etc.
- Antes de la instación tuve que rootearlo (no entiendo por qué Google no obliga a que todos los celulares salgan rooteados "de fábrica", o con algún procedimiento documentado para hacerlo). Lo rooteé exitosamente con GingerBreak-v1.20.
- Luego instalé ClockworkMod ROM Manager (http://www.clockworkmod.com/rommanager): esto permite hacer un backup de la instalación original e instalar ROMs. Este programa de la opción de formatear la tarjeta SD para crear una partición ext2/ext3, swap, etc. Si se hace esto, se perderán los datos almacenados en la tarjeta SD.
- Luego hice un backup del ROM original (Froyo), por las dudas... Y por las dudas lo bajé a la PC.
- Luego bajé el ROM para hacer la actualización, en mi caso, la versión estable más reciente era la beta6.5.8. El link actualizado a la última versión estable está en http://forum.xda-developers.com/showthread.php?t=946354
- Luego de bajar el archivo, hay que pasarlo a la tarjeta SD.
- En el Android, abrir "Rom Manager", elejir "Intall ROM from SD Card", y elegir el archivo bajado en el punto anterior. Lo que recomiendan es "... Do not forget to wipe data/cache ...", así que yo elegí borrar todo (total no tenía datos importantes en el celular).
- A esta altura, el celular se reiniciará, instalará la nueva versión y arrancará nuevamente.
- Luego hace falta instalar un ROM que trae las aplicaciones de Google mínimas necesarias (por ejemplo, Market!). El link para bajar las apicaciones también está en http://forum.xda-developers.com/showthread.php?t=946354
- Ahora ya podemos abrir Market y bajar las aplicaciones que necesites :-)
Posteado por
Software and Motorcycles
a las
11:00
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
android
domingo, 23 de octubre de 2011
Aptitude no funciona con multiarch
Ubuntu Oneiric activa el soporte para multiarch.
Antes:
foreign-architecture i386
Ahora:
#foreign-architecture i386
Al menos ya no me causa problemas al instalar nuevos paquetes, y ya no tengo conflictos imposibles de resolver (831768).
----------
Luego de desactivar multiarch, no me funciona Wine, asi que simplemente no usaré aptitude, y estaré obligado a usar apt-get, o synaptic :-(
Multiarchi: Integrate support for cross-architecture installation of binary packages (particularly i386 / amd64, but also other combinations) in dpkg and aptEsto produce que aptitude sea bastante inusable debido a varios bugs (831768, 828807, 845183) que, al dia de hoy parecen estar sin resolver. Probé desactivar multiarch y al menos aptitude ya me funciona como antes. Para desactivar multiarch, edité el archivo /etc/dpkg/dpkg.cfg.d/multiarch y comenté la única linea que tiene:
Antes:
foreign-architecture i386
Ahora:
#foreign-architecture i386
----------
Luego de desactivar multiarch, no me funciona Wine, asi que simplemente no usaré aptitude, y estaré obligado a usar apt-get, o synaptic :-(
Posteado por
Software and Motorcycles
a las
13:19
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
aptitude,
multiarch,
oneiric,
ubuntu
Estilos de app. Gtk al usar KDE
Por alguna cuestion la integración del estilo de las aplicaciones GTK (por lo tanto las app. Gnome) no está funcionando al usar KDE en Ubuntu Oneiric.
Y ahora queda pendiente arreglar las aplicaciones GTK2. Al parecer, las aplicaciones GTK2 buscan un archivo ".gtkrc-2.0" en el home del usuario, pero KDE genera un archivo llamado ".gtkrc-2.0-kde4". Esto puede solucionarse creando un symlink en el home del usuario con el siguiente comando:
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0
Encontré una alternativa en https://bbs.archlinux.org/viewtopic.php?id=121803. Tampoco funcionó. Pero luego de revisar los estilos con soporte para GTK3, encontré que el estilo "oxygen-gtk" no existe en /usr/share/themes... Asi que probé con "Radiance" (que existe y es para GTK3) y funcionó! :-)
Luego de hacer unas modificaciones, este es el contenido que dejé en /etc/gtk-3.0/settings.ini.
[Settings]
gtk-theme-name = Radiance
gtk-fallback-icon-theme = gnome
gtk-application-prefer-dark-theme = false
gtk-font-name = Sans 9
Y ahora queda pendiente arreglar las aplicaciones GTK2. Al parecer, las aplicaciones GTK2 buscan un archivo ".gtkrc-2.0" en el home del usuario, pero KDE genera un archivo llamado ".gtkrc-2.0-kde4". Esto puede solucionarse creando un symlink en el home del usuario con el siguiente comando:
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0
Posteado por
Software and Motorcycles
a las
12:58
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
gtk,
kde,
oneiric,
ubuntu
sábado, 22 de octubre de 2011
Ubuntu Oneiric + Arduino 0.22 = problemas
Luego de actualizar Ubuntu ya no me compiló un proyecto de Arduino. Luego de chequear en internet encontré que hay unos bugs relacionados a este problema:
https://bugs.launchpad.net/ubuntu/+source/binutils-avr/+bug/818188
https://bugs.launchpad.net/ubuntu/+source/avr-libc/+bug/791335
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634341
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633659
Y la forma rápida de solucionarlo fue seguir el consejo del último de los links, editando el archivo hardware/arduino/cores/arduino/wiring.h (dentro del directorio donde tengo instalado Arduino 0.22) y comentando la linea 79:
Inicialmente está así:
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
y ahora:
// #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
No sé cuáles serán los "efectos colaterales" pero funcionó!
https://bugs.launchpad.net/ubuntu/+source/binutils-avr/+bug/818188
https://bugs.launchpad.net/ubuntu/+source/avr-libc/+bug/791335
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634341
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633659
Y la forma rápida de solucionarlo fue seguir el consejo del último de los links, editando el archivo hardware/arduino/cores/arduino/wiring.h (dentro del directorio donde tengo instalado Arduino 0.22) y comentando la linea 79:
Inicialmente está así:
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
y ahora:
// #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
No sé cuáles serán los "efectos colaterales" pero funcionó!
Posteado por
Software and Motorcycles
a las
21:25
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
arduino,
oneiric,
ubuntu
miércoles, 19 de octubre de 2011
Cómo resetear South
Podemos resetear South desinstalándolo y volviéndolo a instalar. Atención: esto hará que se pierdan todas las migraciones existentes, y los datos de las BD de las aplicaciones que se quieran resetear. Los pasos a seguir son:
1) eliminar de la BD las tablas de South: south_migrationhistory.
2) eliminar de la BD las tablas de las aplicaciones administradas por south.
3) eliminar el paquete migrations de las aplicaciones que usen South.
4) ejecutar syncdb.
5) volver a marcar las aplicaciones que deben ser administradas usando South, ejecutando: "manage.py convert_to_south APP"
1) eliminar de la BD las tablas de South: south_migrationhistory.
2) eliminar de la BD las tablas de las aplicaciones administradas por south.
3) eliminar el paquete migrations de las aplicaciones que usen South.
4) ejecutar syncdb.
5) volver a marcar las aplicaciones que deben ser administradas usando South, ejecutando: "manage.py convert_to_south APP"
Posteado por
Software and Motorcycles
a las
15:38
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
django,
python,
south
lunes, 26 de septiembre de 2011
PHP ejecutados al ser accedidos con WebDav
Seguí las instrucciones para configurar WebDav en Apache2 (Ubuntu Server 10.04.3 LTS), pero las páginas de PHP eran "ejecutadas" al ser bajadas desde el editor HTML. La configuración (obviando la restricción por IP y usuario/password) era:
Alias /edit /var/www/www.example.com
<Location /webdav>
DAV On
ForceType text/plain
</Location>
Revisando la configuración de Apache ví que PHP era habilitado usando "SetHandler", así que lo solucioné usando "SetHandler None":
Alias /edit /var/www/www.example.com
<Location /webdav>
DAV On
ForceType text/plain
SetHandler None
</Location>
Posteado por
Software and Motorcycles
a las
12:51
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
apache,
webdav
jueves, 1 de septiembre de 2011
Desabilitando GDM al inicio
En Ubuntu 11.04 los servicios los arranca Upstart, así que para deshabilitar GDM no se puede borrar el link de /etc/rc2.d/gdm. La forma de hacerlo es editar /etc/init/gdm.conf y agregar "and runlevel RUNLEVEL=5" a la opción "start on". El diff es:
--- a/init/gdm.conf
+++ b/init/gdm.conf
@@ -7,6 +7,7 @@ description "GNOME Display Manager"
author "William Jon McCann"
start on (filesystem
+ and runlevel RUNLEVEL=5
and started dbus
and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udev-fallback-graphics))
--- a/init/gdm.conf
+++ b/init/gdm.conf
@@ -7,6 +7,7 @@ description "GNOME Display Manager"
author "William Jon McCann
start on (filesystem
+ and runlevel RUNLEVEL=5
and started dbus
and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
or stopped udev-fallback-graphics))
Posteado por
Software and Motorcycles
a las
11:18
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
ubuntu,
upstart
sábado, 20 de agosto de 2011
Benchmarks de port forwarding con Python+Eventlet
Les comparto algunos benchmarks que hice para verificar la velocidad del "tcp port forwarder" implementado usando Python+Eventlet: http://blog.eventlet.net/2010/02/28/beautiful-er-eventlet/
No pude hacer los tests usando 'ab', ya que parece haber algun problema por el cual la aplicación no funciona correctamente.
Copia de ISO usando scp, puerto 22: OK
Copia de ISO, usando wget, bajada directamente de Apache, puerto 7080 (eventlet): OK
Usando ApacheBench, al puerto 80: OK
Usando ApacheBench, al puerto 7080 (eventlet): ERROR!!!
No pude hacer los tests usando 'ab', ya que parece haber algun problema por el cual la aplicación no funciona correctamente.
Copia de ISO usando scp, puerto 22: OK
- ubuntu.iso 100% 698MB 63.4MB/s 00:11
- ubuntu.iso 100% 698MB 69.8MB/s 00:10
- ubuntu.iso 100% 698MB 69.8MB/s 00:10
Copia de ISO usando scp, puerto 7000 (eventlet): OK
- ubuntu.iso 100% 698MB 41.0MB/s 00:17
- ubuntu.iso 100% 698MB 41.0MB/s 00:17
- ubuntu.iso 100% 698MB 43.6MB/s 00:16
Copia de ISO, usando wget, bajada directamente de Apache, puerto 80: OK
- 731,453,440 524M/s in 1.3s
- 731,453,440 539M/s in 1.3s
- 731,453,440 523M/s in 1.3s
Copia de ISO, usando wget, bajada directamente de Apache, puerto 7080 (eventlet): OK
- 731,453,440 319M/s in 2.2s
- 731,453,440 318M/s in 2.2s
- 731,453,440 323M/s in 2.2s
Usando ApacheBench, al puerto 80: OK
- ab -n 400 -c 5 http://localhost:80/index.html
- Finished 400 requests
- Concurrency Level: 5
- Time taken for tests: 0.083 seconds
- Complete requests: 400
- Failed requests: 0
Usando ApacheBench, al puerto 7080 (eventlet): ERROR!!!
- ab -n 400 -c 5 http://localhost:7080/index.html
- apr_poll: The timeout specified has expired (70007)
- ab -n 40 -c 5 http://localhost:7080/index.html
- apr_poll: The timeout specified has expired (70007)
- ab -n 5 -c 1 http://localhost:7080/index.html
- apr_poll: The timeout specified has expired (70007)
Posteado por
Software and Motorcycles
a las
13:12
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
python
ssh en CentOS 6
Estoy aprendiendo a trabajar con CentOS, luego de instalar un servidor de aplicaciones python en CentOS 5.6, estoy arrancando desde cero con un CentOS 6. El tema es que se me complicó la configuracion de ssh.
Por alguna cuestión, no podia ingresar como root a mi máquina virtual con CentOS 6, y resultó ser un problema relacionado con SELinux.
En definitiva, la configuración del servidor SSH, los permisos, todo estaba OK, y lo solucioné ejecutando:
Por alguna cuestión, no podia ingresar como root a mi máquina virtual con CentOS 6, y resultó ser un problema relacionado con SELinux.
En definitiva, la configuración del servidor SSH, los permisos, todo estaba OK, y lo solucioné ejecutando:
- /sbin/restorecon -r /root/.ssh
Para los servidores "reales" nunca permito el login de root, pero para aprender, en una máquina virtual en mi PC, es muy cómodo poder acceder directamente como root :-D
Posteado por
Software and Motorcycles
a las
2:32
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
centos
viernes, 19 de agosto de 2011
Listar BD y tablas con sus respectivos tamaños
Para listar las bases de datos con el tamaño ocupado en disco de cada una:
Para listar las tablas con el tamaño ocupado en disco de cada una, pero solo del schema 'public' (probado en PostgreSql 8.1):
- SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database ORDER BY pg_database_size(pg_database.datname);
Para listar las tablas con el tamaño ocupado en disco de cada una, pero solo del schema 'public' (probado en PostgreSql 8.1):
- SELECT tablename, pg_size_pretty(pg_total_relation_size(tablename)) FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(tablename);
Para que la última consulta funcione en Postgre 8:4, hay que utilizar casting:
- SELECT tablename, pg_size_pretty(pg_total_relation_size(tablename::TEXT)) FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(tablename::TEXT);
Esto lo probé en 8.1 y 8.4 (únicas versiones que tengo a mano).
Posteado por
Software and Motorcycles
a las
13:40
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
postgresql
miércoles, 10 de agosto de 2011
psycopg2 (2.4.2) + Django (1.3) = problemas!
Si usas psycopg2 versión 2.4.2 con Django 1.3 surge el siguiente problema:
$ ./virtualenv27/bin/python src/dynamicware/manage.py test myprojects
Creating test database for alias 'default'...
(...)
psycopg2.ProgrammingError: autocommit cannot be used inside a transaction
Una solución temporal es instalar la versión anterior de psycopg2:
$ ./virtualenv27/bin/pip install psycopg2==2.4.1
La solución definitiva ya existe: https://code.djangoproject.com/ticket/16250
Posteado por
Software and Motorcycles
a las
10:37
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
django,
python
PIL / pillow + virtualenv
Instalé PIL usando virtualenv, y así termina la instalción:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
--- LITTLECMS support available
--------------------------------------------------------------------
PIL se instaló correctamente, pero sin soporte para JPEG y PNG. Este es el funcionamiento "esperado" al instalar PIL con virtualenv.
La solución: usar pillow (fork PIL, amigable con virtualenv)
Luego de ejecutar "./virtualenv27/bin/pip install pillow":
--------------------------------------------------------------------
Pillow 1.7.4 ( PIL fork based on PIL 1.1.7 ) SETUP SUMMARY
--------------------------------------------------------------------
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
--- LITTLECMS support available
--------------------------------------------------------------------
PIL se instaló correctamente, pero sin soporte para JPEG y PNG. Este es el funcionamiento "esperado" al instalar PIL con virtualenv.
La solución: usar pillow (fork PIL, amigable con virtualenv)
Luego de ejecutar "./virtualenv27/bin/pip install pillow":
--------------------------------------------------------------------
Pillow 1.7.4 ( PIL fork based on PIL 1.1.7 ) SETUP SUMMARY
--------------------------------------------------------------------
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.5 libraries needed)
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
--------------------------------------------------------------------
Posteado por
Software and Motorcycles
a las
10:01
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
python,
virtualenv
domingo, 17 de julio de 2011
Storage distribuido con SheepDog
Instalé SheepDog siguiendo las instrucciones del sitio sobre un Debian Sid, todo funcionó excelente!
Ahora, a crear la imagen de disco!
root@debian-virt-server-01:~# collie cluster format --copies=2
Este comando sólo se debe ejecutar en 1 nodo.
root@debian-virt-server-01:~# collie node list
Idx - Host:Port Number of vnodes
------------------------------------------------
* 0 - 192.168.122.101:7000 64
1 - 192.168.122.102:7000 64
2 - 192.168.122.103:7000 64
acer| ~$ qemu-img create sheepdog:192.168.122.101:7000:linux-over-sheepdog 4G
Formatting 'sheepdog:192.168.122.101:7000:linux-over-sheepdog', fmt=raw size=4294967296
Todo el esquema de pruebas lo armé en mi notebook:
- Host: acer (Ubuntu Desktop 11.04)
- Guest: debian-virt-server-01 (Debian Sid / libvirt+KVM)
- ejecutando SheepDog
- Guest: debian-virt-server-02 (Debian Sid / libvirt+KVM)
- ejecutando SheepDog
- Guest: debian-virt-server-03 (Debian Sid / libvirt+KVM)
- ejecutando SheepDog
- Guest: linux-over-sheepdog (Ubuntu 10.04 Server / QEMU)
- usando "linux-over-sheepdog" como disco (esta imagen es creada usando qemu-img).
Luego configuré coresync y arranqué sheepdog en debian-virt-server-01, debian-virt-server-02 y debian-virt-server-03.
Ahora, a crear la imagen de disco!
root@debian-virt-server-01:~# collie cluster format --copies=2
Este comando sólo se debe ejecutar en 1 nodo.
root@debian-virt-server-01:~# collie node list
Idx - Host:Port Number of vnodes
------------------------------------------------
* 0 - 192.168.122.101:7000 64
1 - 192.168.122.102:7000 64
2 - 192.168.122.103:7000 64
El cluster fue "formateado" para que mantenga 2 copias de la información. Los 3 nodos se están viendo, ya que aparecen al ejecutar "collie node list".
Creamos imagen para ser usado como disco
acer| ~$ qemu-img create sheepdog:192.168.122.101:7000:linux-over-sheepdog 4G
Formatting 'sheepdog:192.168.122.101:7000:linux-over-sheepdog', fmt=raw size=4294967296
Booteamos QEMU
acer| ~$ qemu-system-x86_64 -enable-kvm -m 512 -cdrom ubuntu-10.04-server-amd64-LTS.iso sheepdog:192.168.122.101:7000:linux-over-sheepdog
Y listo! La instalación de Ubuntu Server se inició correctamente sobre un "disco virtual" hosteado usando SheepDog.
Posteado por
Software and Motorcycles
a las
20:57
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
qemu,
sheepdog,
virtualizacion
miércoles, 13 de julio de 2011
Procesamiento de anotaciones en Java
Hay un bug en la JVM de Sun Oracle que hace fallar el procesamiento de anotaciones. Me pasó que compilando el proyecto funcionaba OK, pero al agregar "-processor ....", aparecía el siguiente problema:
[javac] /...../ValidationCheck.java:25: incompatible types
[javac] found : ......annotations.Type
[javac] required: ......Type
[javac] Type type() default Type.WORKER;
El problema es el Enum "Type". Este Enum existe y está en el classpath, pero javac "no la ve". Está definido de la siguiente manera:
Type type() default Type.WORKER;
La solución para zafar de este bug es introducir el paquete en el nombre del Enum, de manera que quede:
Type type() default my.package.annotations.Type.WORKER;
Y con eso compila!
BUG: http://bugs.sun.com/view_bug.do?bug_id=6512707
[javac] /...../ValidationCheck.java:25: incompatible types
[javac] found : ......annotations.Type
[javac] required: ......Type
[javac] Type type() default Type.WORKER;
El problema es el Enum "Type". Este Enum existe y está en el classpath, pero javac "no la ve". Está definido de la siguiente manera:
Type type() default Type.WORKER;
La solución para zafar de este bug es introducir el paquete en el nombre del Enum, de manera que quede:
Type type() default my.package.annotations.Type.WORKER;
Y con eso compila!
BUG: http://bugs.sun.com/view_bug.do?bug_id=6512707
Posteado por
Software and Motorcycles
a las
9:19
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
java
viernes, 1 de julio de 2011
Cómo usar dispositivos USB desde KVM
Quiero usar mi pendrive desde un guest KVM (gestionado por libvirt). El dispositivo USB es el marcado con negrita:
acer| ~$ lsusb
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 004: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102 flash drive
Primera opción: usando vendor id + product id
Editamos el XML usando "virsh edit", y agregamos lo siguiente en el elemento devices:
Esta opción asocia un "tipo de dispositivo" (en este caso, el pendrive Kingston) al guest KVM, sin importar en qué puerto se conecte.
Segunda opcióni: usando bus + device
Editamos el XML usando "virsh edit", y agregamos lo siguiente en el elemento devices:
Esta opción asocia un puerto USB al guest, sin importar qué tipo de dispositivo se conecte.
acer| ~$ lsusb
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 004: ID 0930:6545 Toshiba Corp. Kingston DataTraveler 102 flash drive
Primera opción: usando vendor id + product id
Editamos el XML usando "virsh edit", y agregamos lo siguiente en el elemento devices:
Esta opción asocia un "tipo de dispositivo" (en este caso, el pendrive Kingston) al guest KVM, sin importar en qué puerto se conecte.
Segunda opcióni: usando bus + device
Editamos el XML usando "virsh edit", y agregamos lo siguiente en el elemento devices:
Esta opción asocia un puerto USB al guest, sin importar qué tipo de dispositivo se conecte.
Posteado por
Software and Motorcycles
a las
13:18
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
kvm,
libvirt,
linux
sábado, 18 de junio de 2011
AppEngine: cómo evitar subir contenidos de un directorio
Al trabajar con Google App Engine, podemos crear un directorio en la base del proyecto, y luego configurar app.yaml para que ignore estos archivos. Por ejemlpo, si el directorio se llama local, hay que agregar a las siguientes líneas al archivo app.yaml:
Todas las líneas excepto la última, corresponden a la configuración por default de skip_files. La última línea hace que el directorio local en la raiz del proyecto sea ignorado al ejecutar appcfg.py.
skip_files: - ^(.*/)?app\.yaml - ^(.*/)?app\.yml - ^(.*/)?index\.yaml - ^(.*/)?index\.yml - ^(.*/)?#.*# - ^(.*/)?.*~ - ^(.*/)?.*\.py[co] - ^(.*/)?.*/RCS/.* - ^(.*/)?\..* - ^local/.*
Todas las líneas excepto la última, corresponden a la configuración por default de skip_files. La última línea hace que el directorio local en la raiz del proyecto sea ignorado al ejecutar appcfg.py.
Posteado por
Software and Motorcycles
a las
3:35
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
0
comentarios
Labels:
appengine,
python
Suscribirse a:
Entradas (Atom)