You're at Mabishu, a website about discovering quality on code, searching emerging technologies, and leading a simpler, more mindful coder life. This site was established in 2005 by Fran Diéguez, a blogger, software developer, and open source geek. Subscribe to the RSS feed for updates.

Formula del éxito con el software libre

Written on October 5th, 2009
.

“Si un millón de personas está utilizando tu código, por lo menos la mitad de ellos percibirá si algo está mal en él. Un cuarto de ese medio millón puede que tenga el tiempo necesario para cambiarlo, si posee la destreza para hacerlo. Una décima parte de esos 12.500 no sólo tiene el tiempo y los conocimientos, si no también la inclinación a desarrollar un poco. Un pequeno porcentaje de las 12.500 personas no tendrán hijos, por lo que será capaz de concentrarse lo suficiente como para completar el esfuerzo. Al final, llegarán tres parches de tres personas diferentes y rechazarás dos de ellos porque no te gusta nada la solución o su estilo de programación.”

Extracto del artículo “Encontrar programadores” de Jon “Maddog” Hall en la revista Linux Magazine

Getting things done algorithm

Written on September 4th, 2009
.
# Make sure all inboxes are empty.
def process (inboxes)
  inboxes.each { |inbox|
    inbox.each { |item|
      if item.requires_action? then
        if item.takes_epsilon_time? then
          item.do()
        elsif item.can_be_delegated? then
          item.delegate
          waiting_for.append(item)
        else
          deferred.append(item)
        end
      elsif item.is_needed_later? then
        filing_system.append(item)
      elsif item.maybe_wanted_later?
        someday_maybe.append(item)
      else
        trash.append(time)
      end
    }
  }
end

Taked from http://paste.ubuntu.com/263929/ and translated to Ruby language.

Complementos terminolóxicos galegos para Fantasdic

Written on July 14th, 2009
.

Fantasdic 5 Complementos terminolóxicos galegos para FantasdicO aplicativo Fantasdic é un aplicativo de diccionario que permite buscar palabras dende moitas e diversas fontes. Destinado principalmente ao escritorio de GNOME, pero tamén pode traballar en outras plataformas, incluso en Windows. Fantasdic é software libre e programado na linguaxe de programación Ruby.

A principal vantaxa que presenta é o sistema de complementos, o que permite de forma sinxela extender o programa para que poida “consumir” datos dende as fontes que desexemos. O único necesario é programar o complemento axeitado.

Podedes obter a tradución ao galego dende: http://l10n.gnome.org/vertimus/fantasdic/master/po/gl

Aquí explicarei como instalar os dous complementos que programei para estender o aplicativo e así permitir que poida consumir datos dende http://open-tran.eu e máis do Corpus de Mancomun (www.mancomun.org).

Read the rest of this entry »

Procesado de documentos XML con Ruby (II)

Written on July 2nd, 2009
.

Continuamos con el procesado de documentos XML con Ruby pero esta vez vamos a utilizar otro parser proporcionado en REXML.

La plase StreamParser delega la gestión de nodos en un XML a una clase definida por el usuario, la clase non será más que un Listener que implementa unas funciones predefinidas. Otra de las ventajas que ofrece StreamParser es que no hace falta cargar el flujo XML de forma íntegra en memoria, haciéndolo especialmente aconsejable para tratamientos de flujos XML muy grandes o para entornos con pocos recursos, el análisis de este flujo se hace de forma progresiva. La desventaja principal es que tenemos que asegurarnos que el flujo XML de entrada es válido ya que StreamParser no lo gestiona, en caso contrario el Listener no funcionará correctamente.

Con un poco de metaprogramación podemos analizar como funciona un parser de flujos XML, para ello aprovechamos la método method_missing que es llamado cada vez que un método no está definido dentro de un módulo o clase, de esta forma podemos hacer lo siguiente:

require "net/http"
require "rexml/document"
include REXML

class NovasListener
  def method_missing(method_id, *args)
    puts "El método #{method_id.id2name} fue llamado"
  end
end

Document.parse_stream(
  Net::HTTP.get("www.mabishu.com", "/blog/feed/rss/"),
  NovasListener.new
)

Read the rest of this entry »