Friday, May 11, 2012

Rails + PostgreSQL on Mac Lion

1) Install PostgreSQL

$brew install postgresql

Once the installation is complete it is important to follow all the instructions that brew created for us!
Here is a list of instructions to initialize a database named postgres and run postgresql on start-up:

$ initdb /usr/local/var/postgres
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/postgresql/9.0.4/org.postgresql.postgres.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist







or follow the instruction generated after installing.

2) Create PostgreSQL users

Login to psql console:

$ psql -h localhost postgres

If all is good we should see the command prompt:

postgres=#

Now lets create a user postgres:

postgres=# CREATE USER postgres WITH PASSWORD 'postgres';

And give it all permissions for postgres database that we created earlier:

postgres=# GRANT ALL PRIVILEGES ON DATABASE postgres to postgres;

3) Install pg gem

env ARCHFLAGS="-arch x86_64" gem install pg

4) Configure Rails project

Add the following lines to database,yml file:



  development:
    adapter: postgresql
    database: postgres
    username: postgres
    password: postgres
    host: localhost
    encoding: UTF8

Add pg gem to Gemfile:

gem 'pg', :require => 'pg'

Thursday, May 10, 2012

PHP - get full URL

There are times when we want to get the full path (URL) of a page, PHP makes it easy

function getPageURL() {
    $pageURL = 'http';

        // Check if https is enabled
    if ($_SERVER["HTTPS"] == "on") {
        $pageURL .= "s";
    }
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
 
    return $pageURL;
}

Call getPageURL() whenever you want to get the expected path.

Thursday, May 3, 2012

install ruby and ruby on rails on ubuntu 12.04

In summary

  • update your system
  • install git, curl, rvm
  • install required packages
  • install rails
  • done
Step by step

Update system
sudo apt-get update

Install git
sudo apt-get install git

Install curl
sudo apt-get install curl

Install rvm
curl -L get.rvm.io | bash -s stable

Reload to start using rvm
source ~/.rvm/scripts/rvm
or 
source /home//.rvm/scripts/rvm

Check required packages
rvm requirements

and then copy the install command from output, it should look like this
sudo apt-get -y install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Install Javascript runtime
sudo apt-get install nodejs

Install ruby
rvm install 1.9.3
(1.9.3 is the newest version at the time of this writing)

Set ruby version to default
rvm use 1.9.3 --default

Install rails
gem install rails

Done
start your app and see it works! cheers!


ubuntu - install LAMP server with one click

tasksel is a good service for installing LAMP on ubuntu 12.04 and 11.10

sudo apt-get install tasksel

sudo tasksel

this can be used to install postgreSQL and many others

ubuntu - preventing apache and mysql from auto start when computer starts

  • apache2 uses System V style init scripts. To disable it from boot:
    sudo update-rc.d -f apache2 remove
  • However, mysql uses an Upstart job, to disable it, create an "override" file:
    echo "manual" | sudo tee /etc/init/mysql.override
To learn more about override files, see: The Upstart Cookbook

Friday, October 7, 2011

Use number_format() function in PHP

You can use the PHP function number_format to format a number in several ways, including choosing how many decimal points it will have, and choosing the 1000s, and decimal point dividers. It is phrased as number_format ( your_number , optional_decimals , optional_decimal_point, optional_1000_separator ) You can not specify just the decimal point or 1000 separator, if you specify one you need to specify both. When working with decimals, it will function like round () and put things at or over .5 up, and under .5 down.

    number_format (1234.567); //Returns the number 1,235 
    number_format (1234.567, 2); //Returns the number 1,234.57 
    number_format (1234.567, 2, ',', ' '); //Returns the number 1 234,57 
    number_format (1234.567, 1, 'a', 'b'); //Returns the number 1b234a6 

Problem with javascript replace() function

Suppose we have a string: "The horse kicks the stony horse". Using javascript replace() function, we want to replace 'horse' by 'cow'.

    str = "The horse kicks the stony horse";
    replaced_str = str.replace('horse', 'cow');

and the result of replaced_str is "The cow kicks the stony horse" ... surprise!

The replace() function replaced only the first string which was found and ignore others. What we should do?

Regex is a way to solve it, instead
    replaced_str = str.replace('horse', 'cow');
We use
    replaced_str = str.replace(/horse/g, 'cow');

and the replaced_str should be "The cow kicks the stone cow".