schwarz

archive of mindset

schwarz header image 5

OpenURI and MemCached sitting in a tree

January 15, 2008 · 2 comments

The ultimate frankenstein-like experiment of harnessing OpenURI and MemCached has been completed!

For a number of projects that used openuri, I needed a way to reduce hits on remote services or rest apis, or even speed up the experience on the client end.

Getting it

sudo gem install openuri_memcached

The beast is alive! (Usage, for those not on late hours right now)

Use exactly the same as you would openuri, only.. enable it.

  require 'openuri_memcached'
  OpenURI::Cache.enable!
  open("http://germanforblack.com").read # Slow as a wet week

Quit your app (leave memcached running) and run the same example, it should now happen in less then … some time that is really fast.

Small print options

To get started run your memcached server

$ memcached -d

The default address that this gem will terminate against is localhost:11211, you can change this using:

OpenURI::Cache.host = ['serverone.com:11211', 'servertwo:11211']

The cache defaults to 15 minutes, however this can be changed using:

OpenURI::Cache.expiry = 60 * 10 # Ten long minutes

Let me know if you have any issues with it, or if you have any use for it!

→ 2 comments Tags:

A ruby Kuler parser

December 07, 2007 · 2 comments

I wrote this little diddy a couple of weeks ago; Since then it has sat on my desktop as a constant reminder of the little time I have to do anything with the snippets of crap that I write on a regular basis.

Due to this very reason, its probably better on the web for anyone who was interested in grabbing colours from Kuler, Adobe labs' user submitted colour... thing.

Usage


require 'kuler'
include Kuler
Kuler::recent
=> ["0E2F32", "C1E6B7", "006A69", "AAC593", "236555"]

This will give you an Array of recently posted colours' in hex values, other options are Kuler::rating and Kuler::popular

Having a poke around the Kuler site should show you that no decent API exits, however you can send some query strings to their awfully formatted RSS feed.

→ 2 comments Tags:

Grabbing mysql production databases to your local system with rake

October 06, 2007 · 0 comments

After reading the comments on Nate Clarke's article I decided it would be a good idea to republish the stolen modified script that I found elsewhere (Honestly, I have no idea. If anyone can cite the original author I'll give credit where due)
namespace :db do
desc "Sync your local database with a remote one REMOTE=name_of_database LOCAL=your_local_db"
  task :sync do
    `ssh domain.com "mysqldump --skip-extended-insert -u db_username -p #{ENV['REMOTE']} | bzip2 " | bzcat | mysql -u root #{ENV['LOCAL'] || "app_development"}`
  end
end

The rundown

  • We use this almost daily
  • Use RSA keys and you'll only need to auth once (for the database)
  • I'm using --skip-extended-insert because it will write each query on a new line (for larger databases mysql can be known to crack the shits on a default setup when everything is inserted in a massive chunk)
  • Its using bzip to compress it over the wire (sadly, this was the original authors smarts)

Usage

rake db:sync REMOTE=my_db_with_lots_of_data
This is great for testing your app with different versions of data (for ridiculous migrations and such

→ 0 comments Tags:

Modern javascript slides

August 30, 2007 · 0 comments

My slides from the Melbourne Ruby User Group, “Modern Javascript” are available in PDF.

Modern javascript

Unfortunately no audio was recorded and the slides will make little sense without speech over the top. Hopefully a reference of the talk for those who wanted it.

→ 0 comments Tags:

Introducing GoogleQuery

August 19, 2007 · 0 comments

So, I love Hpricot because it feels like an extension of my hand.

Google (and Yahoo) have awesome human searchable queries like “people in china”.

The top most search result will show you the amount of people in china.

I quickly decided that this would be useless; however incredible to show my mad-ill flow with css selectors.

First, grab the gem from Rubyforge using:

sudo gem install google_query

Leap your ass into irb, require the gem and start screwing around

See how you get spanked by the pound

GoogleQuery::Currency.get 'AUD to GBP'

=> 1 U.S. dollar = 0.490484599 British pounds

Population in Melbourne

GoogleQuery::Population.get 'melbourne'

=> Population: 3,850,000 (Est.) (2nd)

Current time in London

GoogleQuery::Time.get 'london'

=> 2:26 PM on Monday, July 30

On the command line

bens-pb:~ ben$ gpop melbourne

=> Population: 3,850,000 (Est.) (2nd)

bens-pb:~ ben$ gtime london

=> 2:26 PM on Monday, July 30

I couldn’t resist naming it gmoney

bens-pb:~ ben$ gmoney AUD GBP

=> 1 Australian dollar = 0.424269178 British pounds

There you have it, my first gem ever.

Some queries may be broken, this could be due to google changing their search results screen or just no damn results.

→ 0 comments Tags: