• Jueves 28 de Marzo de 2024, 14:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - DRiMeR

Páginas: [1]
1
Programación de Aplicaciones para Dispositivos / Acerca de RockBox (iPod)
« en: Miércoles 26 de Agosto de 2009, 16:16 »
Buenas. He estado mirando por toda la web de RockBox, pero sólo he encontrado algunos enlaces que daban error, y un pdf para aprender a Usar el Firmware.

Pero yo lo que quería es saber si hay algun manual, referencia, glosario de APIs, o algo... para hacer algun pequeño programa que funcione en RockBox.

He etado viendo el codigo fuente de algunos de los plugins que vienen ya con RockBox, como el del Sodoku, pero es tan extenso... pff no sé por donde meterle mano, y ni si quiera si me serviría de mucho.

2
Seguridad y Criptografía / Re: Necesito Su Aprobacion!!!! C++ Encriptacion
« en: Domingo 7 de Junio de 2009, 11:12 »
Pues he estado mirando el código, y si no lo estoy interpretando mal, simplemente te limitas a calcular una constante (seg) y se la sumas a cada valor del mensaje en claro, no??

Es decir... que si criptoanalizas un poquito, podrías ver que hay ciertos patrones repetitivos... unos valores se repetirían más que otros (como por ejemplo las vocales). Entre toda esa información y haciendo unos cálculos estadísticos, se podría ver con que probabilidad aparece cada valor, y comparando eso con las probabilidades de aparecer que tiene cada letra en español, seguramente se podría descifrar. E incluso sin hacer la parte estadística, se podría buscar alguna posible asociación entre los valores del mensaje cifrado y las letras del español, e ir viendo si se producen pares o tripletas de letras que puedan darse en las palabras del idioma (por ejemplo, "pqr" sería descartado).

Otra cosilla en la que me he fijado, y si estoy en lo correcto, pides una contraseña, pero sólo empleas sus 4 primeros caracteres para calcular esa constante, no?? Es decir, que por fuerte ylarga que fuera la contrasña daría igual, porque eso no lo estás teniendo en cuenta.

3
Python / RC4
« en: Martes 19 de Mayo de 2009, 10:12 »
He tenido que implementar el algoritmo del RC4 en python para unas prácticas. Y como ahora suelo meterme aquí más a menudo, os lo dejo por si le interesa a alguien. Aunque seguramente ya esté implementado en alguna librería jejej


Código: Text
  1. #!/usr/bin/env python
  2.  
  3. import unicodedata
  4.  
  5. def ini_caja(clave):
  6.     S = range(256)
  7.     K = range(256)
  8.     j = 0
  9.     for i in range(256):
  10.         if (j==len(clave)):
  11.             j = 0
  12.         K[i] = ord(clave[j])
  13.         j = j+1
  14.    
  15.     j = 0
  16.     for i in range(255):
  17.         j = (j+S[i]+K[i])%256
  18.         aux = S[i]
  19.         S[i] = S[j]
  20.         S[j] = aux
  21.    
  22.     return S
  23.  
  24.  
  25. def rc4(nomfich, nomdest, clave):
  26.     S = ini_caja(clave)
  27.     dest = open(nomdest, 'w')
  28.     data = open(nomfich, 'r')
  29.     data.seek(0,2)
  30.     tam = data.tell()
  31.     data.seek(0,0)
  32.     i, j = 0, 0
  33.     while(data.tell() < tam):
  34.         i = (i+1)%256
  35.         j = (j+1)%256
  36.         aux = S[i]
  37.         S[i] = S[j]
  38.         S[j] = aux
  39.         t = (S[i] + S[j])%256
  40.         O = S[t]
  41.         b = data.read(1)
  42.         w = O ^ ord(b)
  43.         dest.write(chr(w))
  44.  
  45.  


Salu2.

4
Python / Re: raise y except
« en: Lunes 18 de Mayo de 2009, 17:29 »
Ok, muchas gracias. Ahora todo me cuadra más... ejejej

SAlu2.

5
Python / Re: Descarga Videos de YouTube
« en: Lunes 18 de Mayo de 2009, 17:28 »
Anda. Está muy apañado el script. Es curioso, pero con algunos videos funciona de maravilla, y con otros no.

Me he fijado en que el error que da es el típico HTTPError 500!! (número satánico xD) Server error...

Ese fallo lo da en esta línea:  flv = urllib2.urlopen('http://www.youtube.com/get_video?video_id='+video)

Por ejemplo, en la web que das en el mismo script, funciona:  http://es.youtube.com/watch?v=MJoAZPTiWBA

Pero luego hay otras que no, como por ejemplo esta:  http://www.youtube.com/watch?v=fBFFlL58UTM (es la primera que he encontrado).

Yo lo que he pensado es que la dirección 'http://www.youtube.com/get_video?video_id='+video haya vesces que no exista. Pero no lo he podido comprobar, porque en el navegador no me da ningún fallo con este video que he puesto.

6
Python / Re: raise y except
« en: Lunes 18 de Mayo de 2009, 16:04 »
Es verdad, así me funciona. el raise y el except los he dejado sin la cadenay perfecto.

Pero y si quisiera distinguir entre varios tipos de excepciones?? Como por ejemplo, una que se produzca durante el manejo de archivos, y otra durante la conexión a una web. Son ejemplos... no quiero hacer nada de eso, pero es que ya me gustaría saberlo.


Un saludo. Y gracias.

7
Python / raise y except
« en: Lunes 18 de Mayo de 2009, 11:13 »
Pues haciendo la primera clase que intento hacer en python, me ha surgido una duda.

Es simplemente, que cuando he definido un método dentro de la clase, quería comprobar que se hubieran "instanciado" algunos atributos,y en caso negativo lanzar una excepción. El hecho de comprobar los atributos me va bien, pero al lanzar la excepción lo he hecho así:

Código: Text
  1. raise 'NoInicialziado"
  2.  

Y en el programa principal, tengo un:

Código: Text
  1. try:
  2.   v.metodo()
  3. except 'NoInicializado'
  4.  

Y esto me funciona! Pero Python me lanza el siguiente error:

Código: Text
  1. DeprecationWarning: raising a string exception is deprecated
  2.  

Esto es grave?? O debería hacerlo de otra forma?

8
Python / Destruir objetos?
« en: Miércoles 6 de Mayo de 2009, 11:57 »
Buenas. Estoy escribiendo una parte de un programa en python, pero me da un fallo de segmentación, y revisando el código, he pensado que quizá es porque utilizo muchos objetos temporales (sobretodo listas), y no los destruyo. La verdad es que no lo había pensado, pero nunca he visto nada así en los scripts que he leido por internet. He estado buscando y he leído que no es necesario destruirlos, porque python lo hace automáticamente.

Pero lo que yo quiero saber es cuándo lo hace, y cómo, y si yo puedo destruirlos para evitar consumir memoria que me pueda dar fallos de segmentación.


Un saludo.

9
Python / Re: leer un fichero bit a bit
« en: Lunes 27 de Abril de 2009, 19:16 »
Hola otra vez. Por fin lo he conseguido! Ya he conseguido pasar cualquier cosa a binario. Tal y como lo estaba haciendo, me servía sólo para caracteres, porque el string.atoi admite sólo bases desde 2 hasta 36, así que aunque me hubiera conformado con leer archivo que contuvieran texto, los símbolos (?, =, !, etc..) me hubieran fastidiado. El código me ha quedado así:

Código: Text
  1. def aBinario(n):
  2.     if(n<0):
  3.         raise ValueError, "Entero negativo no valido"
  4.    
  5.     cad=[]
  6.     b=struct.unpack('B', n)
  7.     b=b[0]
  8.     for i in range(8):
  9.         cad.append(b & 1)
  10.         b = b >> 1
  11.    
  12.     return cad
  13.  

El truco está en el unpack, y en que me lo convierte de forma que en vez de devolvermelo como una lista normal, he tenido que coger el primer elemento, que es donde pone el elemento convertido en forma de lista.


Muchas gracias por vuestra ayuda, como veis en el código, me ha ayudado bastante tener el código de NRM como guía (no tenía ni idea de que existiera el >> para mover los bits). Cuando termine la aplicación la colgaré por aquí :)


Un saludo.

10
Python / Re: leer un fichero bit a bit
« en: Lunes 27 de Abril de 2009, 16:25 »
Sí, está bien ese script. Pero lo que hace es abrir dos imágenes para tocarlas e introducir una en la otra. A mí lo que me interesa es meter otro tipo de información binaria, que ni si quiera tenga por qué ser texto. He ahí la necesidad de operar a nivel de bits.

11
Python / Re: leer un fichero bit a bit
« en: Lunes 27 de Abril de 2009, 10:37 »
Pues a ver, ya he probado ese codigo, y lo he amoldado un poquito para que en vez de hacerme un string, me haga una lista ^^

Pongo el código aquí y comento un error que me da y no sé cómo meterle mano:


Código: Text
  1. #!/usr/bin/env python
  2.  
  3. import string
  4.  
  5. def aBinario(n):
  6.         if(n<0):
  7.                 raise ValueError, "Entero negativo no valido"
  8.        
  9.         out=''
  10.         while(n):
  11.                 out = str(n & 1) + out
  12.                 n = n >> 1
  13.        
  14.         cad=[]
  15.         for i in range(len(out)):
  16.                 cad.expand(out[i])
  17.        
  18.         return cad
  19.  
  20.  
  21. def leefich(nomfich):
  22.         f = file(nomfich, 'r')
  23.        
  24.         n=0
  25.         f.seek(0,2)
  26.         tam = f.tell()
  27.         f.seek(0,0)
  28.         fich_cad=[]
  29.         while(f.tell()<tam):
  30.                 b = f.read(1)
  31.                 fich_cad.extend(aBinario(b))
  32.         return fich_cad
  33.  
  34.  
  35. if __name__ == "__main__":
  36.  
  37. datos = leefich('a.txt')
  38. print datos
  39.  

Eso me lanza el siguiente error en la línea 11:  TypeError: unsupported operand type(s) for &: 'str' and 'int'

Lo he intentado solucionar poniéndola así:

Código: Text
  1. out = str(int(n) & 1) + out
  2.  

He supuesto por el error que necesitaba que el operando fuera entero. Pero es que de esta forma me lanza este otro error: ValueError: invalid literal for int() with base 10: 'a'

Yo supongo que lo del 'a' será porque lo ha leido del fichero (a.txt solo contiene una a). Pero lo de la base 10... es que ya no sé que es eso, porque supuestamente, si le hago el casting a int, ya está en base 10, no??

12
Python / Re: leer un fichero bit a bit
« en: Lunes 27 de Abril de 2009, 09:21 »
Anda!! Más o menos comprendo ese código, y creo que eso es lo que buscaba (o parecido), pero lo tengo que probar en cuanto pueda (en este PC no está Python instalado).

Lo que pretendo leyendo el fichero bit a bit es hacer una pequeña parte de una aplicación que estoy escribiendo para Criptografía. Y en esta parte en concreto, lo que quiero hacer es leer un bit del archivo, y según sea 0 o 1, modificar el pixel de una imagen, o no modificarlo. Esto es básicamente para esconder esa información dentro de la imagen.

Entonces, lo que haré luego, es utilizar esta función confomre vaya leyendo bytes del archivo, y concatenar todos los valor que me devuelva para obtener una lista de todos los bits leidos.

Así luego me será más comodo, en vez de intentar hacerlo todo del tirón (aunque consumirá más memoria).


Luego os digo si me funciona. Gracias por la ayuda, NRM.

13
Python / Re: leer un fichero bit a bit
« en: Sábado 25 de Abril de 2009, 12:17 »
Actalizo mi duda.

Creo que he conseguido "algo" xDD Lo que estoy intentando, en vez de leer bit a bit, es leer byte a byte, y hacer una conversion al byte para verlo como entero, y así podría sacar qué ceros y unos hay ahí, dentro del byte.

El código que tengo ahora mismo es el siguiente:


Código: Text
  1. import string
  2.  
  3. def leebits(nombre):
  4.     #"nombre" es el nombre del fichero en cuestion
  5.     f = file(nombre, 'r')
  6.    
  7.     n=0
  8.     f.seek(0,2)
  9.     tam = f.tell()
  10.     f.seek(0,0)
  11.     # en "tam" ya tengo el tamano en bytes del fichero para controlar cuando llego al final
  12.    
  13.     while (f.tell() < tam):
  14.         b = f.read(1)  # leo un solo byte
  15.         print string.atoi(b,10)
  16.         print 'n'
  17.    
  18.  
  19. print cuentabits("img.png")
  20.  

Teóricamente, estoy usando bien el método atoi, o al menos así es como yo entiendo que se usa. Aún así, no se me convierten bien a entero en base decimal. Si consiguiera hacer eso, el resto ya sería cuestión de convertir el número decimal a binario.

Es un proceso correcto, no?? A ver si voy a estar haciendo todo esto, y luego resulte que no funcione por algún motivo :S


Un saludo.

14
Python / leer un fichero bit a bit
« en: Viernes 24 de Abril de 2009, 19:08 »
Buenas. He estado guiándome todo el rato con la documentación de python, y a la hora de abrir, leer, desplazarme y cerrar ficheros legibles no he tenido ningún problema. Pero ahora querría hacer una cosa un poco diferente. Sería cuestión de ver los bits del fichero, porque son datos no legibles.

He visto en la documentación que el único parámetro que le puedo pasar al .read() es el número de bytes, pero a partir de ahí ya no he encontrado nada útil.

A ver si me podeís ayudar, ya sea diciendome como leer bit a bit, o bien cómo tratar los bytes y poder ver el contenido no legible que haya cargado desde el fichero.

La verdad es que siempre he querido aprender hacer esto desde que empecé a dar mis primeros pasos con C, pero nunca me puse a mirar bien cómo iba, y aunque supiera hacerlo en C ahora... no creo que me fuera de mucha ayuda :S


Un saludo.

15
Python / Re: importar una clase
« en: Miércoles 22 de Abril de 2009, 19:22 »
De acuerdo, gracias por el consejo. Lo haré de esa otra forma entonces.

Respecto al instanciador... estoy acostumbrado a utilizar el nombre "constructor" xDD Procuraré quedarme con los nombres para llamar a cada cosa como se llama.


SAlu2.

16
Python / Re: importar una clase
« en: Miércoles 22 de Abril de 2009, 18:45 »
Qué bien!! Me funciona!! Muchísimas gracias Edo.

Mi fallo era que no sabía bien como poner la exntensión, el import, etc.. Entonces mi módulo se llamaba sólo coche, y el import me fallaba. Ahora sí, le he puesto su extensión correspondiente, y en el main, lo he puesto como import coche.

Madre mía, era una tontería, pero como nunca lo he hecho, así me iba xDD

Ya de paso, he logrado comprender realmente la diferencia entre el from - import, y el import, porque he visto que en tu código, el constructor lo usas así:

Código: Text
  1. mercedez = coche.Coche(0, 'Mercedez Benz', 15)
  2.  

Efectivamente, así me funciona, pero haciendólo de esta otra forma, también me funciona:

Código: Text
  1. #main.py
  2. ......
  3. from coche import *
  4. ......
  5. c = Coche('bmw', 0, 50)
  6.  

Ahí es donde realmente he entendido lo que había leido antes.


Un saludo y muchas gracias por la ayuda.

17
Python / Re: importar una clase
« en: Miércoles 22 de Abril de 2009, 17:54 »
Lo acabo de probar como has dicho, pero sigue sin funcionarme. También he pensado en probar en vez de import coche, ponerle un from coche import *. No pensaba que fuera a funcionar, pero por si las moscas.

Lo que no me gustaría es tener que tocar el PATH de la máquina, porque el programa lo voy a tener que estar llevano siempre encima en el pendrive, y si voy a tener que hacerlo así, cada vez que vaya a usar un ordenador de la universidad voy a tener que hacerlo (y puede que no tenga los permisos necesarios, no estoy seguro).

No se si será muy importante o no, pero se me había olvidado dar un par de detalles para aclararlo más. El archivo donde he escrito mi clase se llama coche, con minúscula, y la clase es Coche, con la mayúscula. También, en el archivo coche, he escrito la línea !/usr/bin/env python. Lo he probado con la línea y sin la línea, y siempre me da el mismo error:

ImportError: No module named coche

Quizá por ahí esté el fallo, no??

18
Python / importar una clase
« en: Miércoles 22 de Abril de 2009, 17:20 »
Buenas. Estoy intentando familiarizarme lo más rápido posible con Python para hacer unas prácitcas de criptografía.

La verdad es que me está costando menos de lo que esperaba (será que tampoco estoy buscando cosas muy rebuscadas por ahora), pero aún así me he quedado atascado con el tema de las clases.

Me he creado una clase muy simple que se llama Coche, con sus atributos "velocidad", "nombre" y "temperatura" (por poner algo) y algunos métodos como "acelera" y "frena" para ver que todo encaja.

Mientras lo tenía todo en el mismo script, todo lo que he ido probando me ha funcionado bien. Sin embargo, ha sido intentar separarlo en dos archivos, y ya no consigo que funcione de ninguna forma. Y lo único que he encontrado han sido cosas sobre las librería de python, la diferencia entre el FROM - IMPORT, el IMPORT,  y el X=__import__(), y algunas cosas un tanto raras que no he entendido.

Espero que me sepais indicar cómo se hace esto. Si no me equivoco, sería una especie de import "coche.py" en el programa principal, que le he llamado main.py, pero no sé exactamente con qué sintaxis, o de qué forma se consigue esto.


Gracias de antemano. Un saludo.

19
C/C++ / Re: sscanf
« en: Sábado 31 de Enero de 2009, 10:40 »
No estoy muy seguro, porque hace ya tiempo que no uso expresiones como esas en el scanf, pero creo que te sobra una "s". El código que has puesto es el siguiente:

Código: Text
  1. sscanf(ptr,"%[^=]s=%s",Var,Value);
  2.  

Y yo diriía que debería ir así:

Código: Text
  1. sscanf(ptr,"%[^=]=%s",Var,Value);
  2.  

Porque al usar los [], no hace falta indicar que va a ser una cadena, y el sscanf espera que haya una S, y como no la hay, no sigue leyendo más carácteres.

Que yo recuerde era así. Espero que te sirva de ayuda.

Un saludo.

20
C/C++ / Re: no identifico el error
« en: Viernes 23 de Enero de 2009, 12:32 »
Hombre... es que siempre he tenido la estructura por un las, y luego el tipo de dato por otro. Por eso me ha extrañado que en el código declarase el "struct racional", y luego las variables las declarase como racional.

Te pongo un ejemplo de cómo lo hago yo, para que entiendas por qué he preguntado eso:

Código: Text
  1. struct animal_rep {
  2.   unsigned int n_patas;
  3.   unsigned int n_ojos;
  4.   char nombre[20];
  5. };
  6.  

Eso sería la estructura, la representación por así decirlo, y luego lo que hago es declarar mi tipo de dato, que va a tener esa estructura:

Código: Text
  1. typedef struct animal_rep Tanimal;
  2.  
  3.  

Y para declarar una bariable, sería de las dos formas siguientes:

Código: Text
  1. Tanimal a1;
  2. struct animal_rep a2;
  3.  

Como siempre lo he hecho así, pues me ha llamado la atención que en el código de meana, se saltase el struct.

21
C/C++ / Re: algoritmo para identificar que dos vectores son iguales
« en: Viernes 23 de Enero de 2009, 12:22 »
Cita de: "diego.martinez"
es el tipico ejercicio de maquina de turing.  :devil:

si son de tamaño distinto no son iguales.

por cada elemento del array 1 , buscalo en el aray 2 , y si coincide, borra el elemento del array 2 y continua.
al final, encontraras, o bien un elemento que no esta en el array 2 (distintos) o bien acabaras el array1 (iguales).

Pero quizá no le interesa borrar los elementos del vector, no? Para eso, mejor copiarlo en otro array temporal donde sí podria ir borrando. Y ya puestos, si ese array temporal está ordenado.... sería más rápido buscar los elementos.

Voy a escribir mi propuesta en pseudocodigo:

Código: Text
  1. FUNCION vectores_iguales(int v1[tam1], int v2[tam2]) : ENTERO
  2.    int v_aux[tam1]
  3.    int i
  4.    int elem
  5.    int encontrado=1
  6.    
  7.    SI (tam1 != tam2)
  8.       DEVOLVER 0
  9.  
  10.    PARA i=0 HASTA tam-1
  11.       elem = v2[i]
  12.       insercionBinaria(v_aux, elem)
  13.    FINPARA     //ya tenemos v_aux ordenado
  14.  
  15.    i = 0
  16.    MIENTRAS i<tam-1   Y   encontrado
  17.       encontrado = busquedaBinaria(v_aux, v1[i])
  18.       i = i+1
  19.    FINMIENTRAS
  20.  
  21.    DEVOLVER encontrado
  22.  
  23. FIN_FUNCION 
  24.  

Sé que se podría hacer de otras muchas maneras, y que quizá me he complicado un poco la vida... pero para vectores muy grandes, sí podría ser eficiente.

22
C/C++ / Re: no identifico el error
« en: Viernes 23 de Enero de 2009, 11:54 »
Acabo de ver una cosa curiosa en ese código. Y quizá sea que siempre he programado en C, y no en C++, pero... "racional", veo que es una estructura, no un tipo de dato.

A la hora de declarar "r1", "r2" y "r3", no tendría que ser con struct racional r1, r2, r3;  ?

O bien, declarar el tipo de dato con lo siguiente:

Código: Text
  1. typedef struct{
  2.      int numerador;
  3.      int denominador;
  4. } racional;
  5.  


Estoy en lo correcto, o eso cambia de C a C++??

Páginas: [1]