Ruby

  • Memcached
    sudo gem install memcache-client
    
    require 'rubygems'    
    require 'memcache'
    
    require 'timeout'
    
    CACHE = MemCache.new :c_threshold => 10000,
                         :compression => true,
                         :debug => true,
                         :namespace => 'irr',
                         :readonly => false,
                         :urlencode => false
    CACHE.servers = ["127.0.0.1:11211"]
    
    k = :key
    v = CACHE.get k
    
    if v.nil?
      puts "setting value..."
      v = "45678"
      CACHE.set k, v, 10
    else
      puts "got value: #{v}"
    end
    puts "RESULT: #{k} => #{v}"
    
  • Dic
    #!/usr/bin/ruby -w
    require 'net/http'
    
    class Site
    
      def initialize(stat, title, url, uri, reg, blk, port)
        @stat, @title, @url, @uri, @reg, @blk, @port = stat, title, url, uri, reg, blk, port
      end
    
      def run()
        resp = ""
        if @stat > 0
            request = Net::HTTP.new(@url, @port)
            response = request.get(@uri)
            if response.body =~ @reg
                val = @blk.call($1)
                resp = "#{@title}:\n#{val}\n\n"
            end
        end
        return resp
      end
      
    end
    
    loop do
        word = `zenity --entry --text="Please enter the word to translate:" --title="Dictionary"`.split();
        break if word.length == 0
    
        sites = [Site.new(1,
                          'Babylon',
                          'online.babylon.com',
                          "/cgi-bin/trans.cgi?layout=uol.txt&lang=ptg&word=#{word}",
                          /.*?<div style="margin: 5px;">.*?<B>.*?<\/B><HR WIDTH=.*?>(.*?)<\/div>/ums,
                          lambda {|s| s.strip().gsub(/<.*?>/,'').gsub(/^\n/,'; ').gsub(/\n/,'')},
                          80),
                 Site.new(1,
                          'Urban Dictionary',
                          'www.urbandictionary.com',
                          "/define.php?term=#{word}",
                          /.*?<div class='definition'>(.*?)<\/div>/ums,
                          lambda {|s| s.strip().gsub(/<.*?>/,'')},
                          80)]
    
        resp = ""
        sites.each do |site|
            resp += site.run()
        end
    
        `echo "#{resp}" | zenity --title="Dictionary [#{word}]" --text-info`
    end
    
  • Zenity patch (Ubuntu 8.10)
    cd /usr/share/zenity
    sudo wget http://launchpadlibrarian.net/18653141/zenity-2.24.0-focus.patch
    sudo patch -p0 zenity.glade < zenity-2.24.0-focus.patch