Archive for Mayo, 2008

Ruby vs Nordri: Dirs

Lunes, Mayo 19th, 2008

Ahí va mi pequeña aportación al reto de nordri. Pronto el script-peliculero..

require 'pathname'
require 'fileutils'

PATH = "/tmp/mnt"
TARGET = "/tmp/target"

def listado(path)
  Pathname.new(path).find do |x|
    file = "#{TARGET}#{x.to_s.split(path)[-1]}" # Obtengo el path relativo
    FileUtils.mkdir(file) if x.directory? && file != TARGET
    FileUtils.touch(file) if x.file?
  end
end

FileUtils.rm_rf(TARGET) if FileTest.exists?(TARGET)
FileUtils.mkpath(TARGET)

listado(PATH)

Nota: Tengo que meter un coloreador de código.

Actualización: Script-Peliculero

He envidiado Python que parece que el metodo isdir  identifica los directorios “.” y “..” como non-directorios reales. Por lo demás, no me he complicado nada la vida traduciendo tan solo el código original de nordri, del que voy sacando alguna conclusión: Ruby y Python son muuuuy parecidos (cosa que ya habia oido 1001 veces).

Empezando con Ruby: Core Classes

Domingo, Mayo 18th, 2008

Como explico en el blog menos pretencioso de la historia empiezo con nueva sección, que parte de la iniciativa de Jordan Fowler y del que iré tomando las ideas (a igual que con las novedades de Rails). Vamos allá.

Antes de nada, instalarnos Ruby es lo que toca, aunque también existe la opción interprete online para trastear un ratín. En fin, que si todo ha ido bien deberíamos tener disponible un maravilloso interprete (IRB) donde probar nuestras primeras sentencias Ruby.

$ irb
irb(main):001:0> puts "Hola mundo!"
Hola mundo!
=> nil

Si sois capaces de sacar por pantalla esto, ya no hay más historias. Acceder ya a la documentacion oficial RDoc Documentation for Core Classes será el pan de cada día, aunque a muchos de los que nos conozco les sale ulticaria cuando ven el sistema de ordenación que genera RDoc. Suelen optar por opciones más usables, como gotapi o noobkit. Por último, también podemos acceder a la documentación desde nuestra terminal:

$ ri Array
$ ri Array#select

Primera incursión…

 Object.constants.select { |c| Object.const_get(c).is_a?(Class) }.sort

… que paso a explicar. La clase Object, como en otros lenguajes, es la clase raiz en Ruby de la que todo surge. Utilizando Object.constants obtenemos una Array con todas las clases, modulos, constante,… que cuelgan de dicha clase. Para poder obtener solo las clases deberemos obtener instancias de las cadenas que hemos obtenido; el metodo const_get nos ayudará con dicha tarea..

irb(main):001:0> Object.const_get("Array").new
=> []

Guay, no? Hemos podido crear un Array con la cadena “Array”. Siguiendo con la sentencia original, lo unico que nos queda es filtrar las constantes que son del tipo Class y asi obtener las 65 core classes de las que dispone la clase Object en Ruby.

=> [“ArgumentError”, “Array”, “Bignum”, “Binding”, “Class”, “ConditionVariable”, “Continuation”, “Data”, “Dir”, “EOFError”, “Exception”, “FalseClass”, “File”, “Fixnum”, “Float”, “FloatDomainError”, “Hash”, “IO”, “IOError”, “IndexError”, “Integer”, “Interrupt”, “LoadError”, “LocalJumpError”, “MatchData”, “MatchingData”, “Method”, “ModelProxy”, “Module”, “Mutex”, “NameError”, “NilClass”, “NoMemoryError”, “NoMethodError”, “NotImplementedError”, “Numeric”, “Object”, “Proc”, “Queue”, “Range”, “RangeError”, “Regexp”, “RegexpError”, “RubyLex”, “RuntimeError”, “SLex”, “ScriptError”, “SecurityError”, “SignalException”, “SizedQueue”, “StandardError”, “String”, “Struct”, “Symbol”, “SyntaxError”, “SystemCallError”, “SystemExit”, “SystemStackError”, “Thread”, “ThreadError”, “ThreadGroup”, “Time”, “TrueClass”, “TypeError”, “UnboundMethod”, “ZeroDivisionError”

Pronto más.

Viviendo en el Edge: Piloto

Lunes, Mayo 12th, 2008

Desde hace bastante me han ido llegando al Reader™ los cambios que se van incluyendo a lo último de Rails, cambios aún no “tangibles” y que si no lo trabajas día a día, no le vas echando caso alguno..

Así que nada, aunque el asunto ya lleva bastante tiempo (va por la entrada #20), poco importa, ya que de momento todo son cosas que no están en la calle de manera oficial. Me uno a los amigos franceses aunque no pretendo hacer una traducción ni literal ni completa (ojala tuviese el tiempo).

En fin, empezemos: Cambios del 17-12-2007 al 30-12-2007.

Manejador nativo mongrel

Rails llevará un Mongrel interno de manera nativa e independiente al desarrollo del Mongrel original. Dicho manejador de peticiones interno contará con la ventaja de no tratar las peticiones a nivel del Dispatcher sino de aplicación, con lo que estaríamos cerca de tener algo threadsafe en nuestras aplicaciones Rails.

Hacia la compatibilidad con Ruby 1.9..

El trabajo hacia la compatibilidad de Rails con la 1.9 sigue viento en popa, gracias a los incodicionales que están detras del framework aportando sus contribuciones a la causa. Con esta nueva versión de Ruby podremos olvidarnos de problemas con el encoding, nuevas sintaxis,.. pero que de momento de poco sirven mientras Mongrel no sea el primero que del el paso hacia la 1.9.

Optimizaciones

Muy interesesante para dos Flowers:

La mejora de decodificación JSON tanto para ActiveRecord (placechannel.com) como para ActiveResource.

Nueva mundaza, ¿que tal me ves?

Sábado, Mayo 3rd, 2008

Perdí la cuenta del número de mudanzas que he debido de hacer,.. pero esta vez tengo una buena excusa: Mi flamante nuevo dominio. Gracias Edu, gracias Dani.

Con la mudanza pierdo bastante visibilidad con respecto al antiguo blog en LaCoctelera. A cambio gano el control que no tenía. ¿Suficiente? ¿Quien sabe?

En fin, espero que sea el último viaje.. y la última vez que digo esto ;P