sábado, 29 de octubre de 2011

Copia de seguridad en pdf o mobi de archivos con DRM de Adobe

Si habéis adquirido algún libro en las librerías de ebooks españolas os habréis dado cuenta de tres cosas:

  1. Adobe Digital Editions no tiene versión para Linux, lo cuál me parece una falta de respeto a los usuarios de este sistema operativo libre.
  2. El renderizado del documento lo hace el propio digital editions siendo la calidad de visualización inferior al de cualquier visor de pdf.
  3. No podéis leer el documento en vuestro lector de ebooks o tableta.

A mí personalmente me parece una tomadura de pelo, por que para eso es mejor comprarse la versión en papel. Por lo tanto, he decidido compartir este link con vosotros para que podáis realizar una copia de seguridad privada en un formato con el contenido en claro. Tened en cuenta que compartir este fichero en claro puede ser ilegal y debe usarse sólo para mejorar el visionado o leer el texto en la tableta.

Método
Según el autor, el DRM de Adobe tiene una debilidad bastante evidente y es que aunque usa una criptografía fuerte para el texto es muy sencillo reproducir la forma como baja y descifra la clave única de usuario usada para descifrar el texto.

Su método hace uso de dos scripts en python: 

  • Uno de ellos rompe la ofuscación de la clave única de usuario y la graba al disco duro (es conveniente guardarla).
  • El otro descrifa el texto usando esa clave.

Sólo tenéis que pasar el fichero con DRM a linux y ejecutar los dos scripts. Para los usuarios de windows hay instruciones adicionales :


  1. Bajar e instalar Python 2.6 y PyCrypto.
  2. Bajar los dos scripts anteriores y guardarlos en un directorio con los nombres intepkey.pyw e ineptpub.pyw.
  3. Guardar el libro a descifrar en el mismo directorio y ejecutar inetkey.pyw y luego ineptepub.pyw sobre el libro.

miércoles, 26 de octubre de 2011

Archivo histórico de la Royal Society de acceso libre

Desde hoy se puede acceder libremente al archivo histórico de la Royal Society y a la primera "revista científica" que existió como tal. Os dejo este comunicado de un tal Isaac Newton explicando su teoría acerca de la naturaleza de la luz y del color.

http://royalsocietypublishing.org/

lunes, 24 de octubre de 2011

La Coalición de la Voluntad

Este interesante documental nos anima a usar las nuevas tecnologías y su impacto social para hacer frente al cambio climático. Muy recomendable.

La Coalición de la Voluntad from Horatiux on Vimeo.

jueves, 20 de octubre de 2011

Retrasado primer lanzamiento Soyuz desde Guayana

Mientras esperamos el histórico lanzamiento podemos disfrutar de este time-lapse de roskosmos Para seguir el evento en directo: http://spaceflightnow.com/soyuz/vs01/status.html

La primera Soyuz desde Guayana preparada para lanzar satélite de posicionamiento europeo Galileo

La primera Soyuz en ser lanzada desde las nuevas instalaciones de Roskosmos en el espacio puerto de la ESA está siendo cargada de combustible a la espera de la cuenta atrás final prevista para hoy a las 12:30 CEST.
Imagen. ESA

miércoles, 19 de octubre de 2011

Buscant-me

grep -r "yo" /

Cadenas de Markov y filosofía de vida


"El anterior ejemplo es una Cadena de Markov (ver definición 122), cuya principal característica es que, aunque el futuro depende del pasado, el futuro resulta condicionalmente independiente del pasado cuando se conoce el presente. Esta propiedad me parece un principio importante para aplicar a una vida positiva: Todo mi futuro depende solamente de quién soy yo en este momento, independientemente de cómo llegué a ser lo que soy. Mi futuro sólo dependerá de mi pasado si yo no sé quién soy en este momento."

Fuente:
200 Conceptos De Probabilidad, Variables Aleatorias Y Procesos Estocásticos En Redes de Comunicaciones. Marco Aurelio Alzate Monroy. Pág 29.


lunes, 17 de octubre de 2011

Poster de la Phobos-Grunt

Via el incombustible Daniel Marín me hago con el poster de la misión.
Ideal para colgar en la pared de la habitación.
Imágen: Roskosmos (Russian Federal Space Agency)/IKI

La actitud es tan importante o más que el currículo

Entrevista al diari d'Eivissa a Javier Cámara, un especialista en portals de contractació:
"El trabajo en equipo, la flexibilidad, la movilidad y el espíritu emprendedor son algunos de los aspectos que más valora una empresa a la hora de contratar a un trabajador"
Les millors preguntes:
–En estos momentos de recesión, ¿qué perfiles son los más demandados por las empresas?
 –Administrativos, comerciales y vendedores siguen estando al a cabeza de la demanda. Después informáticos, ingenieros y profesionales del sector salud. 

–¿Qué formación complementaria o competencias son las más valoradas entre las empresas que ofertan puestos de trabajo?
–Idiomas sin duda es la más valorada, en muchísimas ofertas se solicita el dominio de  Inglés , Alemán y Francés.
–Por último, ¿qué tres consejos podría dar a toda persona que está buscando empleo en estos momentos y no encuentra salida?
–Que no desespere, que aproveche a formarse lo mejor posible, haciendo cursos, máster, postgrados,  y sobre todo, estudiando idiomas hasta conseguir un nivel muy alto, que es una diferencia competitiva tremenda, y que utilice Internet como herramienta para buscar empleo y generar contactos.



viernes, 7 de octubre de 2011

Uso correcto de super en python

Sea
class Base(object):
    def __init__(self):
        print "Base created"
class ChildA(Base):
    def __init__(self):
        Base.__init__(self)
class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()
¿Qué diferencia hay entre la construcción de A y de B?. Pues ninguna, lo que ocurre es que super (versión B) nos permite mayor flexibilidad para gestionar la jerarquía ya que no tenemos que referirnos a una clase en particular.

Usar super es también la única forma de hacer herencia múltiple aunque yo no la uso por ser fuente de errores.

En python 3, la sintaxis se simplifica de super(ChildB,self).__init__() a super().__init().

Fuentes:
Understanding Python super() and init methods
http://stackoverflow.com/questions/576169/understanding-python-super-and-init-methods

How to use 'super' in python
http://stackoverflow.com/questions/222877/how-to-use-super-in-python