Tuesday, November 18, 2014

Postgres command cheatsheet

http://blog.jasonmeridth.com/posts/postgresql-command-line-cheat-sheet/

change to postgres user and open psql prompt
$ sudo -u postgres psql postgres

Once the postgres database is running the prompt will look like this: postgres=#
(So don't type in postgres=#, only what follows in the following commands...)

list databases
postgres=# \l

list roles
postgres=# \du

create role
postgres=# CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD 'password1' CREATEDB;

create role with multiple privileges
postgres=# CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD
postgres=# 'password1' CREATEDB CREATEROLE REPLICATION SUPERUSER;

alter role
postgres=# ALTER ROLE demorole1 CREATEROLE CREATEDB REPLICATION SUPERUSER;

drop role
postgres=# DROP ROLE demorole1;

create database
postgres=# CREATE DATABASE demodb1 WITH OWNER demorole1 ENCODING 'UTF8';

grant privileges to new user
postgres=# GRANT ALL PRIVILEGES ON DATABASE demodb1 TO demorole1;

drop database
postgres=# DROP DATABASE demodb1;

connect to database
postgres=# \c <databasename>

list tables in connected database
postgres=# \dt

list columns on table
postgres=# \d <tablename>

backup database


$ pg_dump <databasename> > <outfile> 

Create a Base Web App -

Web App Meetup Homework 1


Create a New Rails App

  1. $ rails new <name_of_app>
  2. $ cd <name_of_app>
  3. $ bundle install


Install Devise




Install Postgres

http://www.postgresql.org/download/linux/ubuntu/

$ gem install pg

Add gem 'pg' to your Gemfile and run bundle install.

-------------------------------
In config/database.yml, use the following settings:
(yaml is white space delimited so make sure you space it exactly like this)

development:
  adapter: postgresql
  encoding: unicode
  database: <yourdatabasename>
  pool: 5
  password: <yourpassword_orleaveitblank>

test:
  adapter: postgresql
  encoding: unicode
  database: <yourdatabasename>
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: <yourdatabasename>
  pool: 5
  timeout: 5000
  user: <yourusername>
  password: <yourpassword>
----------------------------------
For Ubuntu Trusty64

1. Create the file /etc/apt/sources.list.d/pgdg.list
2. add a line for the repository
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

Import the repository signing key, and update the package lists
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo apt-key add -
sudo apt-get update

------------------------------------
http://stackoverflow.com/questions/20587779/heroku-wont-recognize-pg-gem-in-my-rails-app-gemfile

Once installed, make sure you initialize the pg datastore.
also, depending how your pg is installed, you might need to specify the username and host in your database.yml file
  username: someuser_on_pg
  host: localhost

Saturday, November 15, 2014

Ruby Interview Questions

http://thereq.com/q/best-ruby-software-interview-questions/easy

Array manipulation

Suppose you have the following array.

stuff = [:dog,:cat,:orange,:banana]

  • How can you slice this array to create a new array [:cat,:orange]
  • Add the element :apple on to the end of the array.
  • Now take :apple back off again
  • Add the element :fish to the start of the array.
  • Now remove the element :fish.

Friday, November 14, 2014

Understanding Algorithms - Resources

https://fiftyexamples.readthedocs.org/en/latest/algorithms.html

Calling something an algorithm means that the following properties are all true:
  • An algorithm is an unambiguous description that makes clear what has to be implemented. In a recipe, a step such as “Bake until done” is ambiguous because it doesn’t explain what “done” means. A more explicit description such as “Bake until the cheese begins to bubble” is better. In a computational algorithm, a step such as “Choose a large number” is vague: what is large? 1 million, 1 billion, or 100? Does the number have to be different each time, or can the same number be used on every run?
  • An algorithm expects a defined set of inputs. For example, it might require two numbers where both numbers are greater than zero. Or it might require a word, or a list of zero or more numbers.
  • An algorithm produces a defined set of outputs. It might output the larger of the two numbers, an all-uppercase version of a word, or a sorted version of the list of numbers.
  • An algorithm is guaranteed to terminate and produce a result, always stopping after a finite time. If an algorithm could potentially run forever, it wouldn’t be very useful because you might never get an answer.
  • Most algorithms are guaranteed to produce the correct result. It’s rarely useful if an algorithm returns the largest number 99% of the time, but 1% of the time the algorithm fails and returns the smallest number instead. [1]
  • If an algorithm imposes a requirement on its inputs (called aprecondition), that requirement must be met. For example, a precondition might be that an algorithm will only accept positive numbers as an input. If preconditions aren’t met, then the algorithm is allowed to fail by producing the wrong answer or never terminating.



http://core.ecu.edu/csci/wirthj/Algorithms/introAlgo-c.html
  An algorithm is a series of specific steps which solve a particular problem.
series
  • The steps must be done in a particular order and each of the steps must be used (unless the algorithm says otherwise).
specific
  • A step must NOT be replaced by a similar step.
steps
  • Like a cooking recipe, an algorithm tells you to do things. Each thing you do is called a step (aka instruction, aka command)
solve
  • An algorithm produces a final result (aka output) which is the solution to a problem.
particular problem
  • The algorithm for one problem will not usually solve a different problem.
  • The details defining the problem must be made available at the start of the algorithm. These details are called givens. (aka parameters).

  • Most algorithms have these basic parts:
  • Description of Problem
  • Set up
  • Parameters
  • Execution
  • Conclusion

http://www.cleveralgorithms.com/


Online Classes

Algorithms
http://theopenacademy.com/content/lecture-1-analysis-algorithms


Logic
https://www.coursera.org/course/intrologic