Archivo del Autor: SKaRCHa

Acerca de SKaRCHa

Soy Antonio Pérez y esta es mi página personal. Aquí podrás encontrar de todo un poco. Hablo de lo que me gusta, de lo que me pasa o de lo que encuentro interesante... ;)

Artículo 20 de la Constitución española

Continuando con las reivindicaciones.

  1. Se reconocen y protegen los derechos:

    a. A expresar y difundir libremente los pensamientos, ideas y opiniones mediante la palabra, el escrito o cualquier otro medio de reproducción.

    b. A la producción y creación literaria, artística, científica y técnica.

    c. A la libertad de cátedra.

    d. A comunicar o recibir libremente información veraz por cualquier medio de difusión. La Ley regulará el derecho a la cláusula de conciencia y al secreto profesional en el ejercicio de estas libertades.

  2. El ejercicio de estos derechos no puede restringirse mediante ningún tipo de censura previa.
  3. La Ley regulará la organización y el control parlamentario de los medios de comunicación social dependientes del Estado o de cualquier ente público y garantizará el acceso a dichos medios de los grupos sociales y políticos significativos, respetando el pluralismo de la sociedad y de las diversas lenguas de España.
  4. Estas libertades tienen su límite en el respeto a los derechos reconocidos en este Título, en los preceptos de las Leyes que lo desarrollan y, especialmente, en el derecho al honor, a la intimidad, a la propia imagen y a la protección de la juventud y de la infancia.
  5. Solo podrá acordarse el secuestro de publicaciones, grabaciones y otros medios de información en virtud de resolución judicial.

Manifiesto “En defensa de los derechos fundamentales en Internet”

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de Internet manifestamos nuestra firme oposición al proyecto, y declaramos que:

  1. Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
  2. La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
  3. La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
  4. La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
  5. Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
  6. Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
  7. Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
  8. Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
  9. Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
  10. En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Recuperar Grub en Ubuntu 9.10 después de instalar Windows

He hecho una instalación fresca en mi PC de la nueva versión de Ubuntu (Kubuntu en realidad), que ya tocaba después de venir actualizando una tras otra desde no sé cuando. Aprovechando la instalación fresca, he montado todo con LVM (volúmenes lógicos).

Como por desgracia todavía tengo que tener un Windows instalado, decidí probar Windows 7 para darle una oportunidad. Y aquí metí la pata, porque como ya sabemos, Windows no respeta nada y se carga lo que haya en el MBR del HDD, así que perdí el arranque del Linux y sólo arrancaba Windows.

Para intentar solucionarlo fui a tirar del maravilloso disquete de Super Grub Disk que guardo en un cajón, pero me acordé de que en esta versión de Ubuntu el Grub es nuevo, así que no iba a arreglar nada. Me puse a buscar otra forma, y aunque la encontré, nada decía de arreglar el desaguisado cuando estabas usando LVM.

Uniendo un poco de información de aquí y de allá he podido recuperarlo.

Estos son los pasos que hay que seguir:

  1. Arrancar con un CD Live de Ubuntu.
  2. Abrir un terminal «gnome-terminal» o «Konsole».
  3. sudo apt-get install lvm2
  4. sudo pvscan
  5. sudo vgscan
  6. sudo vgchange -a y
  7. sudo lvscan
  8. Identificamos las particiones: sudo fdisk -lu
  9. sudo mount /dev/grupo/lvroot /mnt
  10. sudo mount /dev/sda5 /mnt/boot
  11. sudo mount –bind /dev /mnt/dev
  12. sudo mount -t proc none /mnt/proc
  13. sudo mount -t sysfs none /mnt/sys
  14. sudo chroot /mnt
  15. update-grub
  16. grub-install /dev/sda
  17. exit
  18. sudo umount /mnt/sys
  19. sudo umount /mnt/proc
  20. sudo umount /mnt/dev
  21. sudo umount /mnt/boot
  22. sudo umount /mnt
  23. Reiniciar

NOTA: Ahí están puestas mis particiones como ejemplo; por supuesto, cada sistema puede ser distinto y habrá que adaptar un poco los pasos.

Campus Party 1999, la segunda a la que fui

Madre mía… En una lista de correo que tenemos unos colegas, uno ha puesto el enlace a un vídeo de Youtube que es un montaje que hizo nuestro amigo JLuis con los aproximadamente 20 tíos de Huelva que fuimos a la Campus Party en 1999; sin duda, la party en la que mejor me lo he pasado.

Luego de esa fui a las de 2000 y 2001, pero no fueron igual… como en Mollina, creo que en ninguna parte.. ;)

A la mayoría que lea esto no le importará nada, pero lo dejo aquí puesto para acordarme de lo bien que lo pasamos ¡¡hace 10 años!!

Mmmm… por cierto, esto me recuerda a la captura de pantalla del programa HYNews… se puede ver un email de David a mi en 1996… ¡¡trece años!! :D

Pymaldi: Accediendo a los lectores Kimaldi desde Python

Mi amigo David y yo estamos desarrollando una aplicación para el control de acceso a instalaciones, y la gestión de turnos de trabajo. Básicamente se trata de que cada trabajador tenga una tarjeta RFID con sus datos y foto, y que esa tarjeta la sirva para entrar a las instalaciones abriendo las barreras, para abrir puertas, para picar el comienzo de su jornada laboral, para poder comer en el comedor, etc… En fin, muchas cosas que ya contaré en profundidad cuando la terminemos, y si es que nos proponemos venderla a otros clientes además de para el que inicialmente la estamos haciendo, que será lo más probable, ya que su diseño es totalmente abierto.

El caso es que para implementar nuestra solución optamos por usar lectores de la empresa Kimaldi, concretamente el Biomax2, que tenía muy buena pinta. El problema es que el SDK que provee la empresa es sólo para Windows, así que tuvimos que coger el manual del aparato, mirar el protocolo de comunicaciones para intentar hacernos «algo» y así poder interactuar con él desde cualquier sistema operativo, pero principalmente desde Linux, que es el que nos interesaba.

Aprovechando que había descubierto las cualidades de Python colaborando en el desarrollo del Cherokee-Admin, propuse que usásemos Python. Es un lenguaje que te da muchas facilidades para programar cualquier cosa y es muy portable. Hacer eso en C no nos daría más que dolores de cabeza y mucho más tiempo de programación.

Así que nada, puestos manos a la obra, pensamos que lo mejor sería hacer una librería que intentase emular el comportamiento del componente OCX que proporciona Kimaldi, incluyendo los mismos nombres de funciones de éste. ¿Qué conseguíamos con esto? pues que el que estuviese habituado a ese API tuviese más facilidad para programarlo, ya que nuestra idea era liberar esa librería con algún tipo de licencia de código abierto.

Después de un tiempo de desarrollo inicial y de que todo lo básico funcionase, la liberamos, y está disponible en la página del proyecto Pymaldi en Google Code. Desde entonces hemos ido añadiendo nuevos métodos y hemos mejorado algunas cosas.

La librería funciona en base a eventos, es decir, el programa que usa la librería puede enviarle comandos al lector en plan: «pon esto en el display», «activa el relé 1 durante 2 décimas de segundo», etc… pero además puede recibir eventos que se produzcan en el lector, como cuando una tarjeta se pasa por él, cuando se pulsa una tecla del teclado, cuando se reinicia el lector, etc. Todo esto de una forma muy simple, como se puede ver en el ejemplo adjunto:

from pymaldi import Pymaldi

class MyPymaldi (Pymaldi):
    def __init__(self):
        Pymaldi.__init__(self)

    def onReadCard (self, card_id):
        if card_id:
            msg = 'Card ID: %s' % (card_id)
        else:
            msg = 'Error reading card'

        rc = self.WriteDisplay(msg)
        if rc:
            print "ERROR (WriteDisplay): %d" % rc


reader = MyPymaldi()
reader.OpenPortUDP('192.168.2.22')
rc = reader.SetUpBIOMAX2()
if not rc:
    print "BIOMAX2 ready!"
else:
    print "ERROR (SetUpBIOMAX2): %d" % rc
    raise SystemExit

while True:
    try:
        reader.wait_events()
    except KeyboardInterrupt:
        raise SystemExit

Este código lo que haría es conectar con el lector que tiene la IP 192.168.2.22 y se queda a la espera de que pasen una tarjeta por él. En cuanto se pasa una tarjeta, se ejecuta una función que lo que hace es decirle al lector que ponga en el display el texto: «Card ID: » seguido del número de tarjeta. ¿A que es fácil? :-)

Si sólo queremos pintar algo en la pantalla, nada más simple que:

from pymaldi import Pymaldi

class MyPymaldi (Pymaldi):
    def __init__(self):
        Pymaldi.__init__(self)


reader = MyPymaldi()
reader.OpenPortUDP('192.168.2.22')
rc = reader.SetUpBIOMAX2()
if not rc:
    print "BIOMAX2 ready!"
else:
    print "ERROR (SetUpBIOMAX2): %d" % rc
    raise SystemExit

rc = reader.WriteDisplay("Hola SKaRCHa ;)")
if rc:
    print "ERROR (WriteDisplay): %d" % rc

raise SystemExit

Y este sería el resultado:

Biomax2 usándose con Pymaldi

¿Se puede hacer más fácil? :D

Bueno, pues termino ya, que sólo pensaba hacer un comentario para anunciar la liberación de la librería y ha salido una entrada más larga de lo esperado. Si has llegado hasta aquí es porque te interesa la programación y/o el cacharreo, si no, no te entiendo… :D

Librería Pymaldi.