Masomenos ya esta terminado...solo un pequeño problema jajaj demora mas de
15 minutos en scannear mi carpeta personal /home/martin  y encima se re
funde el micro..no puedo hacer mas nada!!!  Siempre me canso y mato el
proceso ruby antes de dejarlo terminar...mi notebook es un celeron M de
1.43ghz con 1GB DDR ...estaría bueno que alguien lo pruebe, es demasiado
ineficiente esto jeje

descargarlo aca -> http://files-upload.com/files/473628/Twister.tar.gz

y modificar la ruta en el codigo antes de ejecutarlo

Gracias y guarden todo antes de ejecutarlo :P

On 8/31/07, Martin Sagastume <[EMAIL PROTECTED]> wrote:
>
> Lo voy a tener en cuenta, gracias!
>
> On 8/31/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
> > Martin:
> >
> > Ademas del help de internet, podes pedirle ayuda a ruby con el comando
> "ri"
> >
> > ri Hash
> >
> > si queres ver mas info de un metodo, pones
> >
> > ri Clase.metodo o ri Clase#metodo
> >
> > ri Hash.each
> >
> > Los contenedores de ruby tienen la particularidad de iterarse de forma
> muy
> > elegante, presta atencion a los metodos "each.." del contenedor que te
> > interese.
> >
> > Hash tiene varios de estos metodos
> >
> > Ejemplo
> > unhash= { :a => 1, :b => 2, :c => 3}
> > unhash.each do |key, value|
> >   puts "La clave #{key} contiene el valor #{value}
> > end
> >
> > Un aspecto a tener en cuenta al hablar de contenedores en ruby tiene que
> ver
> > con los mixins...
> >
> > Pensa en metodos que "flotan" en un namespace --modulo en ruby--, que
> podes
> > incluir en cualquier clase que quieras --o incluso dentro de otro
> modulo.
> > Aaarrhg! es dificil tratar de explicarlo en unas pocas lineas....
> >
> > El tema es que los contenedores solo necesitan definir un metodo "each"
> que
> > devuelva todos los elementos sucesivos que posee y un metodo "<=>" que
> > permita compararlos para ganar toda la funcionalidad del modulo
> Enumerable
> > (hace ri Enumerable).
> >
> > En definitiva, una vez que entendes Enumerable te sirve para Hash,
> Array,, o
> > hasta tus propias clases, si lo incluis de esta forma
> >
> > class MiLindoContenedor
> >   include Enumerable
> >
> >   def each
> >     yield valor
> >   end
> >
> >   def <=> otro
> >     self.valor.blablabla <=> otro.blablabla
> >   end
> >
> > ...
> > end
> >
> >
> >
> > Martin Sagastume <[EMAIL PROTECTED]> escribió:
> >  Despues de haber hecho todo con listas para aprender como se usaban
> > las listas descubri como ver los metodos de la Clase Array =S
> >
> > http://www.ruby-doc.org/core/classes/Array.html
> >
> > No encontre en internet algun ejemplo que usara la clase Hash pero con
> > esta documentacion que parece ser el API entero
> >
> > http://www.ruby-doc.org/core/
> >
> > Veo que hay una clase Hash...voy a mirarlo bien..disculpen haber
> > mandado lo anterior, recien descubro esto de Core :P
> >
> >
> > On 8/31/07, Martin Sagastume wrote:
> > > Provisoriamente tengo hecho el programa con una Lista lo cuál debo
> > > suplantar por un "HashMap" (vengo de Java) ... no conozco nada de lo
> > > que ya tiene Ruby y empezar a mirar Modulo por Modulo o Clase por
> > > Clase debe ser un trabajo muy lindo :P ...al hacerlo con Lista lo que
> > > hice fue incluir la lista en una clase Sistema y ahi hacer los
> > > metodos que tendra programada la lista...les dejo la clase,
> > > seguramente muchos se rian porq programe los metodos bien caceros y
> > > buscar si una lista esta vacia en Ruby (q esta todo ya hecho) debe ser
> > > lista.empty? o algo asi...pero como no se por donde empezar a
> > > buscar, me hice los metodos re caceros jeje aqui les dejo la clase
> > > Sistema asi se rien un poco ¬¬
> > >
> > > Sistema
> > > *********
> > >
> > > class Sistema
> > >
> > >
> > > def getLista
> > > return @lista
> > > end
> > >
> > > def agregarEnLista(elemento)
> > > @lista << elemento
> > > end
> > >
> > > def agregarEnListaDupes(elemento)
> > > @listaDupes << elemento
> > > end
> > >
> > > def estaEnLista(elemento)
> > > ([EMAIL PROTECTED]).each do |i|
> > > if @lista[i] == elemento
> > > puts "ENCONTRE UN DUPPE!!"
> > > self.agregarEnListaDupes(elemento)
> > > return true
> > > end
> > > end
> > > return false
> > > end
> > >
> > > def getListaDupes
> > > return @listaDupes
> > > end
> > >
> > > def esVaciaLista
> > > if @lista.length == 0
> > > return true
> > > end
> > > return false
> > > end
> > >
> > > def mostrarLista
> > > for i in ([EMAIL PROTECTED])
> > > puts "Agregados a la lista: [EMAIL PROTECTED]"
> > > end
> > > end
> > >
> > > def initialize
> > > @lista = Array.new
> > > @listaDupes = Array.new
> > > end
> > > end
> > >
> > >
> > > Necesito Utilizar HashMap en lugar de Lista para almacenar algo asi:
> > >
> > > -----KEY----- ---------- VALUE ------------
> > > [d3daa1fc... , /home/martin/archivo.txt]
> > >
> > > El tema es que mire en internet y hay poca documentación...vi que se
> > > creaba de la siguiente manera:
> > >
> > > hash = {} #creo el hash
> > > hash [md5] = "archivo1.txt" # ingreso elementos y clave al hash
> > >
> > > como recorro el hashmap ?
> > > como veo las operaciones que puedo realizarle a un HashMap..?? Ej..ver
> > > si esta vacio sin hacer mi propio metodo :P
> > >
> > > Estaba acostumbrado a q en Java HashMap es una clase...voy al API y
> > > veo que metodos tiene programados y listo..aca no se ni por donde
> > > empezar, estoy medio perdido aún...debe ser porque hace 3 días empezé
> > > a leer de Ruby :P
> > >
> > > Un tiempo estuve tratando de hacer cosas con RoR en lugar de PHP pero
> > > estuve muy poco tiempo ya que no entendia mucho y queria programar en
> > > RoR sin saber Ruby =P ...ahora que ando con tiempo estoy lanzandome
> > > a aprender Ruby!!
> > >
> > >
> > > Gracias por la ayuda ;)
> > >
> > >
> > > On 8/31/07, NachoKB wrote:
> > > > Está claro. Lo dije por que era muuuuuuuuuy simple (igual me gustó
> el
> > > > ejercicio).
> > > > Aunque más de una vez me pasó querer resolver algo y no encontrar
> cómo
> > (o
> > > > sea, yo sabía la mejor forma pero no encontraba el nombre del
> método)...
> > > > recientemente, tenía un array de elementos (gnomos, digamos). Me
> > interesaba
> > > > separar el gnomo emperador del resto para que una view los muestre
> por
> > > > separado. Yo buscaba una clasificación de elementos o algo así.
> Terminé
> > > > haciendo algo como
> > > > emperador = gnomos.detect &:emperador?
> > > > [ emperador, gnomos - emperador ]
> > > > Ayer me crucé con el método
> > > >
> >
> Enumerable.partition*.........................................................
> .
> > > >
> > > > * notar que no es exactamente lo mismo, pero eso era lo que buscaba
> en
> > un
> > > > ppio... Ver
> > > >
> > http://corelib.rubyonrails.org/classes/Enumerable.html#M002183
> > > >
> > > > nachokb
> > > >
> > > >
> > > > On 8/31/07, Emmanuel Oga < [EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Deprimido? porque? Teniendo en cuenta el contexto asumo que es por
> no
> > > > conocer el uso recursivo del metodo glob de la clas Dir de la
> libreria
> > core
> > > > de ruby... no? :)
> > > > >
> > > > > Bueno! creo que no tendrias que preocuparte mucho, si tenes en
> cuenta
> > que
> > > > la libreria core y la libreria estandar de ruby comprenden decenas
> de
> > > > clases, cada una con decenas de metodos, dificilmente podrias
> conocer y
> > > > recordar de memoria el comportamiento exacto de cada uno de esos
> > metodos.
> > > > Para mi la clave esta en compartir la info: lo que no se yo, alguien
> mas
> > lo
> > > > sabra!!!
> > > > >
> > > > > :)
> > > > >
> > > > >
> > > > > NachoKB escribió:
> > > > > Gracias!!
> > > > > Igual sigo deprimido...
> > > > >
> > > > >
> > > > > On 8/31/07, Emmanuel Oga wrote:
> > > > > > Nacho:
> > > > > >
> > > > > > Dir.[] o Dir.glob toman como parametro un "glob pattern" (
> > > > http://en.wikipedia.org/wiki/Glob_pattern ) que es un
> > > > patron similar a una expresion regular pero menos poderoso que
> > generalmente
> > > > se usa para describir archivos.
> > > > > >
> > > > > > El glob Dir[/directorio/**/*'] recorre todos los archivos en el
> > > > directorio "directorio" __Y__ sus subdirectorios, por lo que no hace
> > falta
> > > > que lo implementes por tu cuenta. Otra cosa buena es que a Dir.[] le
> > podes
> > > > pasar mas de un glob pattern si queres, ejemplo:
> > > > > >
> > > > > > Dir.glob ["/tmp/**/*", "/etc/**/*"].each do |file|
> > > > > > ...
> > > > > > end
> > > > > >
> > > > > > que busca todos los archivos en /tmp y sus subdirectorios __y__
> > todos
> > > > los archivos /etc y susu subdirectorios.
> > > > > >
> > > > > > NachoKB escribió:
> >
> > > > > >
> > > > > > Cuidado que Find no es una clase, sino un módulo.
> > > > > >
> > > > > > O sea, no es para usarlo directamente... normalmente es para
> > > > incorporarlo en una clase (para componer comportamiento). Lo mismo
> con
> > > > FileTest.
> > > > > >
> > > > > > Me parece que lo que querés hacer lo podés hacer sólo usando
> File y
> > > > Dir...
> > > > > >
> > > > > > Básicamente, vos querés agarrar todos los archivos a partir de
> un
> > root
> > > > dado (recursivamente) y calcularle el MD5:
> > > > > >
> > > > > >
> > > > > > > Dir.new(directorio).map do |fullpath|
> > > > > > > [name, Digest::MD5.hexdigest (File.read(fullpath))]
> > > > > > > end
> > > > > > >
> > > > > >
> > > > > > El problema es que (1) si bien Dir es Enumerable, enumera sólo
> los
> > hijos
> > > > directo (no rescursivamente) y (2) "fullpath" no quedaría realmente
> el
> > path
> > > > completo... Por lo tanto hice esto, ver qué opinan:
> > > > > >
> > > > > >
> > > > > > > class TraversableDir
> > > > > > > include Enumerable
> > > > > > > def initialize(*args, &block)
> > > > > > > @dir = Dir.new *args, &block
> > > > > > > end
> > > > > > > def each(&block)
> > > > > > > @dir.each do |name|
> > > > > > > unless ['.', '..'].include? name
> > > > > > > fullpath = self.fullpath(name)
> > > > > > > case
> > > > > > > when File.directory?(fullpath)
> > > > > > > TraversableDir.new(fullpath).each &block
> > > > > > > when File.file?(fullpath)
> > > > > > > block.call fullpath
> > > > > > > else
> > > > > > > p "Ojo ni dir ni file: #{fullpath} (hay que hacer algo?)"
> > > > > > > end
> > > > > > > end
> > > > > > > end
> > > > > > > end
> > > > > > > def fullpath(name)
> > > > > > > File.expand_path "[EMAIL PROTECTED]/#{name}"
> > > > > > > end
> > > > > > > end
> > > > > > >
> > > > > >
> > > > > > Entonces queda:
> > > > > >
> > > > > > > TraversableDir.new(directorio).map do |fullpath|
> > > > > > > [name, Digest:: MD5.hexdigest (File.read(fullpath))]
> > > > > > > end
> > > > > > >
> > > > > >
> > > > > > Lo que te daria un array de esta forma:
> > > > > >
> > > > > > > [
> > > > > > > [ "/path/a1", "ABDCE" ],
> > > > > > > [ "/path/a2", "DEADBEEF" ]
> > > > > > > ]
> > > > > > >
> > > > > >
> > > > > > Que es un idiom usado en Ruby (es similar a un Hash pero a veces
> se
> > usa
> > > > así, por ejemplo cuando no necesitás acceder a un elemento, sino que
> lo
> > vas
> > > > a iterar).
> > > > > >
> > > > > >
> > > > > > On 8/31/07, Damian Janowski wrote:
> > > > > > > On 8/31/07, Martin Sagastume < [EMAIL PROTECTED]> wrote:
> > > > > > > > Excelente, eso era lo que necesitaba...muchas gracias!!
> > > > > > > >
> > > > > > > > Estuve mirando si el "API" de Rails...creo que no vi eso :P
> > ..una
> > > > > > > > cosa que me llamó la atención es que la clase Find tenga
> > programado
> > > > el
> > > > > > > > método find ...como que es medio desprolijo el hecho de
> tener un
> > > > > > > > metodo que se llame igual que la clase (ya que en ruby no es
> el
> > > > > > > > constructor) Buscar.buscar en lugar de Buscador.buscar o
> algo
> > asi
> > > > > > > > ... es por algo en especial ?
> > > > > > >
> > > > > > > Nu sé :)
> > > > > > >
> > > > > > > Pero me parece que suele pasar con esas pequeñas
> funcionalidades
> > que
> > > > > > > son casi "helper" y muchas veces quedan como métodos de clase,
> > etc.
> > > > > > >
> > > > > > > Por ejemplo: Iconv.iconv
> > > > > > >
> > > > > > > Saludos!
> > > > > > > _______________________________________________
> > > > > > > Ruby mailing list
> > > > > > > [email protected]
> > > > > > >
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Ruby mailing list
> > > > > > [email protected]
> > > > > >
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > > > >
> > > > > >
> > > > > >
> > > > > > ________________________________
> > > >
> > > > > > ¡Sé un mejor fotógrafo!
> > > > > > Perfeccioná tu técnica y encontrá las mejores fotos.
> > > > > > Visitá
> > http://ar.yahoo.com/promos/mejorfotografo.html
> > > > > >
> > > > > > _______________________________________________
> > > > > > Ruby mailing list
> > > > > > [email protected]
> > > > > >
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > > > >
> > > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Ruby mailing list
> > > > > [email protected]
> > > > >
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > > >
> > > > >
> > > > >
> > > > > ________________________________
> > > >
> > > > > ¡Sé un mejor fotógrafo!
> > > > > Perfeccioná tu técnica y encontrá las mejores fotos.
> > > > > Visitá http://ar.yahoo.com/promos/mejorfotografo.html
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Ruby mailing list
> > > > > [email protected]
> > > > >
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > > >
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Ruby mailing list
> > > > [email protected]
> > > >
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> > > >
> > > >
> > >
> > >
> > > --
> > > Martín Sagastume
> > > 094-575846
> > > Montevideo - Uruguay
> > > http://musicapastillera.blogspot.com
> > >
> >
> >
> > --
> > Martín Sagastume
> > 094-575846
> > Montevideo - Uruguay
> > http://musicapastillera.blogspot.com
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
> >
> >
> >  ________________________________
> >
> > ¡Sé un mejor ambientalista!
> > Encontrá consejos para cuidar el lugar donde vivimos en:
> >  http://ar.yahoo.com/promos/mejorambientalista.html
> >
> >
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
> >
>
>
> --
> Martín Sagastume
> 094-575846
> Montevideo - Uruguay
> http://musicapastillera.blogspot.com
>



-- 
Martín Sagastume
094-575846
Montevideo - Uruguay
http://musicapastillera.blogspot.com
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a