Phone calling codes (aka International Dialing codes) – DB Dump / YML format

Parsed from: http://en.wikipedia.org/wiki/List_of_country_calling_codes with Hpricot:

doc = Hpricot(open("http://en.wikipedia.org/wiki/List_of_country_calling_codes"))
table = (doc/"table")[4]
by_country = {}
table.search('/tr').each {|tr| tr0 = tr.search('/td')[0] ; tr1 = tr.search('/td')[1]; by_country[tr0.inner_html.gsub(/<.*>/,  "")] = tr1.search('/a').inner_html.gsub(" ", '').split(/\+/).select{|val| !val.empty?}.map(&:to_i) if tr1  } ; nil

Phone calling codes (MySQL dump)

Phone calling codes by country (YML format)

Advertisements

Google Maps: Center map and automatic zoom on single address

Snippet to get an automatic zoom level for a geocoded address.

Why You Shouldn’t Use Float for Currency (floating point issues – explained for Ruby and RoR)

This article is a response to https://vladzloteanu.wordpress.com/2010/01/06/ruby-on-rails-interview-questions-update/

It is a VERY BAD IDEEA to use floating point arithmetics to deal with currency. In most of the programming languages. Basically, because you’ll end up loosing money :). And this (on the great majority of cases) is not desirable 🙂 .

I’ll show you some magic (that you may try at home):
~$ ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
~$ irb
irb(main):003:0> (10.12*100).to_i
=>; 1011

So, what just happened? Continue reading

Ruby on Rails Interview questions – update

Most of Google searches that hit my blog are about ‘ruby on rails interview questions‘.

Responding to this popular request 😉 , I will post 3 more questions that are related.

1. What type of data would you use to represent currency?

2. Why is it not a good practice to use float for currency?

3. Explain the following behaviour:

~$ ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
~$ irb
irb(main):003:0> (10.12*100).to_i
=>; 1011

The answer – in my next post .

Capistrano – deploy to specific revision (= tag, branch, hash)

To deploy something other than the HEAD, you must use the -s option.

Below are examples for git.

cap -s branch=my_branch deploy

cap -s tag=my_tag deploy

Rails Internationalization: currency format configuration

One of the nicest things in the built-in Rails internationalization features is the ability to format the currency according to the local culture (the number_to_currency method). For example, many european contries use ‘,’ as a separator and ‘.’ as a delimiter.

However, the examples presented in the help page (http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#M001684) are missing something essential.

 number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "")
 # => &pound;1234567890,50
 number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "", :format => "%n %u")
 # => 1234567890,50 &pound;

Why should i need a helper method where i can set all those parameters by hand?

Digging in the source code, i found how those settings can be put in the locale yml config file. Below is an example from my french localization file.

fr:
  number:
    currency:
      format:
        delimiter: ','
        separator: '.'
        precision: 2
        format: '%n %u'

VPS-like Virtualization sollution for Rails Servers: OpenVZ

This article shows how to create multiple VPS-es using OpenVZ and how to configure those VPS-es as a Rails prod/testing server.

It is an updated and improved version of http://wiki.openvz.org/Quick_installation

Why OpenVZ?

+ low overhead, good performace (claiming only 3% penalty)

+ soft memory allocation

+ free

+ relatively easy to install/manage

– requires both host and to guest OS be  Linux

– no GUI on guest machines

Continue reading