From 468cb1dcd7a607b7f89578228e91cd497d732a4b Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Fri, 16 Mar 2012 18:31:18 +0800 Subject: [PATCH] Update rails. --- _output/Etc/PHP_Kohana.ctxt | 78 --- _output/Etc/Rails_2.ctxt | 104 --- _output/Rakefile | 9 - _output/bash.html | 208 ------ _output/brew.html | 50 -- _output/capybara.html | 112 --- _output/cinema4d.html | 20 - _output/devise.html | 148 ---- _output/figlets.txt | 1293 ----------------------------------- _output/fitness.html | 39 -- _output/heroku.html | 49 -- _output/html-css.html | 45 -- _output/html.html | 35 - _output/index.html | 115 ---- _output/ios.html | 31 - _output/jquery.html | 66 -- _output/linux.html | 21 - _output/makefile.html | 47 -- _output/markdown.html | 29 - _output/osx.html | 39 -- _output/passenger.html | 25 - _output/rails-models.html | 324 --------- _output/rails-plugins.html | 165 ----- _output/rails-routes.html | 210 ------ _output/rails.html | 153 ----- _output/rdoc.html | 43 -- _output/rst.html | 70 -- _output/sequel.html | 412 ----------- _output/style.css | 1 - _output/textile.html | 83 --- _output/tig.html | 54 -- _output/tmux.html | 73 -- _output/ubuntu.html | 29 - _output/unicode.txt | 19 - _output/vim.html | 50 -- _output/zsh.html | 36 - rails.md | 15 + 37 files changed, 15 insertions(+), 4285 deletions(-) delete mode 100644 _output/Etc/PHP_Kohana.ctxt delete mode 100644 _output/Etc/Rails_2.ctxt delete mode 100644 _output/Rakefile delete mode 100644 _output/bash.html delete mode 100644 _output/brew.html delete mode 100644 _output/capybara.html delete mode 100644 _output/cinema4d.html delete mode 100644 _output/devise.html delete mode 100644 _output/figlets.txt delete mode 100644 _output/fitness.html delete mode 100644 _output/heroku.html delete mode 100644 _output/html-css.html delete mode 100644 _output/html.html delete mode 100644 _output/index.html delete mode 100644 _output/ios.html delete mode 100644 _output/jquery.html delete mode 100644 _output/linux.html delete mode 100644 _output/makefile.html delete mode 100644 _output/markdown.html delete mode 100644 _output/osx.html delete mode 100644 _output/passenger.html delete mode 100644 _output/rails-models.html delete mode 100644 _output/rails-plugins.html delete mode 100644 _output/rails-routes.html delete mode 100644 _output/rails.html delete mode 100644 _output/rdoc.html delete mode 100644 _output/rst.html delete mode 100644 _output/sequel.html delete mode 100644 _output/style.css delete mode 100644 _output/textile.html delete mode 100644 _output/tig.html delete mode 100644 _output/tmux.html delete mode 100644 _output/ubuntu.html delete mode 100644 _output/unicode.txt delete mode 100644 _output/vim.html delete mode 100644 _output/zsh.html diff --git a/_output/Etc/PHP_Kohana.ctxt b/_output/Etc/PHP_Kohana.ctxt deleted file mode 100644 index 733f81ae7..000000000 --- a/_output/Etc/PHP_Kohana.ctxt +++ /dev/null @@ -1,78 +0,0 @@ -# Installing -wget "http://kohanaphp.com/download?modules%5Bauth%5D=Auth&languages%5Ben_US%5D=en_US&format=zip" -O k.zip &&\ -unzip -q k.zip && rm k.zip &&\ -mv Kohana_*/* . && rm -rf Kohana_* &&\ -rm -f "Kohana License.html" &&\ -# htaccess -cat example.htaccess | sed 's/RewriteBase .*/RewriteBase \//g' > .htaccess && rm example.htaccess &&\ -echo Done! Go and edit application/config/config.php and change the site stuff. - -# Public HTML -mkdir -p public_html &&\ -mv index.html public_html &&\ -mv .htaccess public_html &&\ -echo Done. Now edit index.html's paths - -Git ignore -(echo \*.swo; echo \*.swp; echo .DS_Store; echo Thumbs.db; echo \*~; echo application/logs; echo application/cache ) > .gitignore &&\ - -# Database -$config['default'] = array -( - 'benchmark' => TRUE, - 'persistent' => FALSE, - 'connection' => array - ( - 'type' => 'mysql', - 'user' => 'leet', // set to db user name - 'pass' => 'l33t', // set to db user password - 'host' => 'localhost', - 'port' => FALSE, - 'socket' => FALSE, - 'database' => 'leetdb' // set to db name - ), - 'character_set' => 'utf8', - 'table_prefix' => '', - 'object' => TRUE, - 'cache' => FALSE, - 'escape' => TRUE -); - - -// ORM model -class Post_Model extends ORM { - protected $has_one = array('user'); // has_many, belong_to, has_one, has_and_belongs_to_many -} - -// ORM -$post = ORM::factory('post', 1); -$post->name = "Post name"; -$post->save(); -foreach ($post->categories as $category) -{ - echo $category->name; -} - -// Find (returns even if no row is found) -$o = ORM::factory('article')->find(1); -$o = ORM::factory('article')->where('title', $title)->find(); -if (!$o->loaded) { die('Not found'); } -echo $o->title; - -// Find_all -$o = ORM::factory('article')->find_all(); -foreach ($o as $article) { echo $article->title; } - -// ->$saved -// ->$changed[] -// ->$object_name (Blog_Post_Model => "blog_post") -// ->$primary_key ('id') -// ->$primary_val ('username') - more userfriendly identifier -// ->$table_name -// ->$ignored_columns = array('whatever') -// ->$table_columns = array('id', 'username') -// ->$sorting = array('last_login' => 'desc') -- default sorting - -// - - diff --git a/_output/Etc/Rails_2.ctxt b/_output/Etc/Rails_2.ctxt deleted file mode 100644 index 4a3eaa213..000000000 --- a/_output/Etc/Rails_2.ctxt +++ /dev/null @@ -1,104 +0,0 @@ -# Debug -logger.debug "xx" - -# Controller stuff -class MyController < ApplicationController::Base -controller.response.body - - # Filters - before_filter :require_login # Looks for require_login method - before_filter MyFilter # Looks for MyFilter class - before_filter { |ct| head(400) if ct.params["stop_action"] } - around_filter :catch_exceptions - after_filter :xx - - layout "admin_area" # Looks for the view file - layout "admin_area", :except => [ :rss, :whatever ] - layout :foo # Looks for private function foo - - private - def whatever ... - -class MyFilter - def self.filter(controller, &block) - -# Model - -belongs_to :user -validates_presence_of :user -default_scope :order => 'id DESC' -named_scope :today, :conditions = "created_at x" -named_scope :today, lambda {{ :conditions = [ "created_at between ? and ?", 1.hour.ago.utc, 300.seconds.ago.utc ] }} -# Then you can call feed.today - -# Controller methods -render :action => 'help', :layout => 'help' -render :text => 'so and so' -render :status => :created, :location => post_url(post) # With HTTP headers -redirect_to :action => 'index' -render :partial => 'product', :collection => @products, :as => :item, :spacer_template => "product_ruler" -return head(:method_not_allowed) -head :created, :location => '...' - -url_for :controller => 'posts', :action => 'recent' - -location = request.env["SERVER_ADDR"] - -# For views -auto_discovery_link_tag(:rss, {:action => "feed"}, {:title => "RSS Feed"}) -javascript_include_tag "foo" -stylesheet_link_tag -image_tag - -# Ruby stuff! -# Defining a class method (not a typo) -Fixnum.instance_eval { def ten; 10; end } -Fixnum.ten # => 10 - -# Defining an instance method -Fixnum.class_eval { def number; self; end } -7.number #=> 7 - -# Multiple arguments, send() -class Klass - def hello(*args); "Hello " + args.join(' '); end -end -Klass.new.send :hello, "gentle", "readers" - -def can(*args) - yield if can?(*args) -end -# can(x) {...} => if can?(x) {...} - - - -# Struct -class Foo < Struct.new(:name, :email) -end - -j = Foo.new("Jason", "jason@bateman.com") -j.name = "Hi" -print j.name - - -# Struct -class Foo < Struct.new(:name, :email) -end - -j = Foo.new("Jason", "jason@bateman.com") -j.name = "Hi" -print j.name - - -# Method missing - def method_missing(method_name, *arguments) - if method_name.to_s[-1,1] == "?" - self == method_name.to_s[0..-2] - - -# Rails logger -Rails.logger.info("...") - -# To string -:hello_there.to_s - diff --git a/_output/Rakefile b/_output/Rakefile deleted file mode 100644 index b19e74ee5..000000000 --- a/_output/Rakefile +++ /dev/null @@ -1,9 +0,0 @@ -desc "Build" -task :build do - system "proton build" -end - -desc "Deploy" -task :deploy => :build do - system "git update-ghpages rstacruz/cheatsheets -i _output" -end diff --git a/_output/bash.html b/_output/bash.html deleted file mode 100644 index f28fe3ca6..000000000 --- a/_output/bash.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - -

Bash

-

String substitutions by patterns

- -
STR=/path/to/foo.c
-
-echo ${STR%.c}      #=> "/path/to/foo"
-echo ${STR%.c}.o    #=> "/path/to/foo.o"
-echo ${STR##*.}     #=> "c" (extension)
-
-BASE=${SRC##*/}     #=> "foo.c" (basepath)
-DIR=${SRC%$BASE}    #=> "/path/to"
-
- -

Substitutions by regex

- -
echo ${STR/hi/hello}          # Replace first match
-echo ${STR//hi/hello}         # Replace all matches
-echo ${STR/#hi/hello}         # ^hi
-echo ${STR/%hi/hello}         # hi$
-
-echo "${STR:0:3}"             # .substr(0, 3) -- position, length
-echo "${STR:-3:3}"            # Negative position = from the right
-
-echo ${#line}                 # Length of $line
-
-[ -z "$CC" ] && CC=gcc        # CC ||= "gcc"  assignment
-${CC:=gcc}                    # $CC || "gcc"
-
- -

Loops

- -
for i in /etc/rc.*; do
-  echo $i
-end
-
- -

Functions

- -

Defining functions

- -
myfunc() { ... }
-fuction myfunc { ... }
-fuction myfunc() { ... }
-
- -

Returning strings

- -
myfunc() {
-    local myresult='some value'
-    echo $myresult
-}
-
-result=$(myfunc)
-
- -

Errors

- -
myfunc() { return 1; }
-
- -

Arguments

- -
$#                          # Number of arguments
-$*                          # All args
-$1                          # First argument
-
- -

Ifs - files

- -
# File conditions
-if [ -a FILE ]; then        # -e exists         -d directory        -f file
-fi                          # -r readable       -w writeable        -x executable
-                            # -h symlink        -s size > 0
-
-# File comparisons
-if [ FILE1 -nt FILE2 ]      # -nt   1 more recent than 2
-                            # -ot   2 more recent than 1
-                            # -ef   same files
-
- -

Ifs

- -
# String
-if [ -z STRING ]            # empty?
-if [ -n STRING ]            # not empty?
-
-# Numeric
-if [ $? -eq 0 ]             # -eq -ne -lt -le -gt -ge
-                            # $? is exit status by the way
-
-# Etc
-if [ -o noclobber ]         # if OPTIONNAME is enabled
-if [ ! EXPR ]               # not
-if [ ONE -a TWO ]           # and
-if [ ONE -o TWO ]           # or
-
-# Regex
-if [[ "A" =~ "." ]]
-
- -

Numeric comparisons

- -
if $(( $a < $b ))
-
- -

Unset variables

- -

Assume $FOO is not set. Doing this will result in that:

- -
${FOO:-word}                # Returns word
-${FOO:+word}                # Returns empty, or word if set
-${FOO:=word}                # Sets parameter to word, returns word
-${FOO:?message}             # Echoes message and exits
-
-${FOO=word}                 # : is optional in all of the above
-
- -

Numeric calculations

- -
$((RANDOM%=200))            # Random number 0..200
-$((a + 200))                # $ is optional
-
- -

Arrays

- -
Fruits[0]="Apple"
-Fruits[1]="Banana"
-Fruits[2]="Orange"
-
-# Declaring using declare -a
-declare -a Fruits=('Apple' 'Banana' 'Orange')
-
-echo ${Fruits[0]}           # Element #0
-echo ${Fruits[@]}           # All elements, space-separated
-echo ${#Fruits[@]}          # Number of elements
-echo ${#Fruits}             # String length of the 1st element
-echo ${#Fruits[3]}          # String length of the Nth element
-echo ${Fruits[@]:3:2}       # Range (from position 3, length 2)
-
-Fruits=("${Fruits[@]}" "Watermelon")    # Push
-Fruits=( ${Fruits[@]/Ap*/} )            # Remove by regex match
-unset Fruits[2]                         # Remove one item
-Fruits=("${Fruits[@]}")                 # Duplicate
-Fruits=("${Fruits[@]}" "${Veggies[@]}") # Concatenate
-lines=(`cat "logfile"`)                 # Read from file
-
- -

Misc crap

- -
command -V cd               #=> "cd is a function/alias/whatever"
-
- -

Options

- -
set -o noclobber            # Avoid overlay files (echo "hi" > foo)
-set -o errexit              # Used to exit upon error, avoiding cascading errors
-set -o pipefail             # Unveils hidden failures
-set -o nounset              # Exposes unset variables
-
- -

Glob options

- -
set -o nullglob             # Non-matching globs are removed  ('*.foo' => '')
-set -o failglob             # Non-matching globs throw errors
-set -o nocaseglob           # Case insensitive globs
-set -o dotglob              # Wildcards match dotfiles ("*.sh" => ".foo.sh")
-set -o globstar             # Allow ** for recursive matches ('lib/**/*.rb' => 'lib/a/b/c.rb')
-
- -

set GLOBIGNORE as a colon-separated list of patterns to be removed from glob -matches.

- -

Trap errors

- -
trap 'echo Error at about $LINENO' ERR
-
- -

or

- -
traperr() {
-  echo "ERROR: ${BASH_SOURCE[1]} at about ${BASH_LINENO[0]}"
-}
-
-set -o errtrace
-trap traperr ERR
-
- -

References

- - - - - - - - - - diff --git a/_output/brew.html b/_output/brew.html deleted file mode 100644 index c5c531e2e..000000000 --- a/_output/brew.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - -

Brew

-

Nice Homebrew packages:

- - - -

Not from brew:

- - - -

Tmux

- -

Install a more-recent version that supports tmux -C

- -
brew install https://github.com/adamv/homebrew-alt/raw/master/other/tmux-iterm2.rb
-
- -

Install the wrapper for stuff to enable OSX clipboard to work

- -
brew install reattach-to-user-namespace --wrap-pbcopy-and-pbpaste
-
- -

Make sure that your VIM alias uses it

- -
alias vim="reattach-to-user-namespace /Application/MacVim/Contents/MacOS/Vim"
-
- - - - - - - - diff --git a/_output/capybara.html b/_output/capybara.html deleted file mode 100644 index bca71a670..000000000 --- a/_output/capybara.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - -

Capybara

-

Navigating

- -
visit articles_path
-
- -

Clicking links and buttons

- -
click 'Link Text'
-click_button
-click_link
-
- -

Interacting with forms

- -
attach_file
-fill_in 'First Name', :with => 'John'
-check
-uncheck
-choose
-select
-unselect
-
- -

Querying

- -

Takes a CSS selector (or XPath if you're into that). -Translates nicely into RSpec matchers:

- -
page.should have_no_button("Save")
-
- -

Use should haveno* versions with RSpec matchers b/c -should_not doesn't wait for a timeout from the driver

- -
page.has_content?
-page.has_css?
-page.has_no_content?
-page.has_no_css?
-page.has_no_xpath?
-page.has_xpath?
-page.has_link?
-page.has_no_link?
-page.has_button?("Update")
-page.has_no_button?
-page.has_field?
-page.has_no_field?
-page.has_checked_field?
-page.has_unchecked_field?
-page.has_no_table?
-page.has_table?
-page.has_select?
-page.has_no_select?
-
- -

Finding

- -
find
-find_button
-find_by_id
-find_field
-find_link
-locate
-
- -

Scoping

- -
within
-within_fieldset
-within_table
-within_frame
-scope_to
-
- -

Scripting

- -
execute_script
-evaluate_script
-
- -

Debugging

- -
save_and_open_page
-
- -

Miscellaneous

- -
all
-body
-current_url
-drag
-field_labeled
-source
-wait_until
-current_path
-
- - - - - - - - diff --git a/_output/cinema4d.html b/_output/cinema4d.html deleted file mode 100644 index 361afb19b..000000000 --- a/_output/cinema4d.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - -

Cinema4d

-
E R T   : Move/rotate/scale
-P       : snapping
-
- - - - - - - - diff --git a/_output/devise.html b/_output/devise.html deleted file mode 100644 index d58cbd027..000000000 --- a/_output/devise.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - -

Devise

-

Devise is a flexible authentication -gem.

- -

Installation

- -

Rails 3: Add the following to your Gemfile

- -
gem "devise"
-gem "hpricot"
-gem "ruby_parser"
-
- -

Install devise in your project

- -
$ rails generate devise:install
-
- -

Generate devise for your model

- -
$ rails generate devise MODEL
-$ rake db:migrate
-
- -

(Optional) Generate devise views

- -
$ rails generate devise:views
-
- -

Helpers

- -
user_signed_in?
-current_user
-user_session
-destroy_user_session_path (Logout)
-new_user_session_path (Login)
-edit_user_registration_path (Edit registration)
-new_user_registration_path (Register new user)
-
- -

Controller stuff

- -
before_filter :authenticate_user!
-
- -

Model

- -

Model options

- -
class User < ActiveRecord::Base
-  devise :database_authenticatable,
-    :registerable,
-    :confirmable,
-    :recoverable,
-    :rememberable,
-    :trackable,
-    :validatable
-end
-
- -

Migration helpers

- -
create_table :users do |t|
-  t.database_authenticatable
-  t.confirmable
-  t.recoverable
-  t.rememberable
-  t.trackable
-  t.timestamps
-end
-
- -

Routing

- -

Authenticated and unauthenticated routes

- -
unauthenticated do
-   root :to => 'home#index'
-end
-
-authenticated do
-  root :to => 'dashboard#index'
-end
-
- -

As

- -
as :user do
-  get 'sign_in', :to => 'devise/sessions#new'
-end
-
- -

Devise_for magic

- -
devise_for :users
-
-    # Session routes for Authenticatable (default)
-         new_user_session GET  /users/sign_in                    {:controller=>"devise/sessions", :action=>"new"}
-             user_session POST /users/sign_in                    {:controller=>"devise/sessions", :action=>"create"}
-     destroy_user_session GET  /users/sign_out                   {:controller=>"devise/sessions", :action=>"destroy"}
-
-    # Password routes for Recoverable, if User model has :recoverable configured
-        new_user_password GET  /users/password/new(.:format)     {:controller=>"devise/passwords", :action=>"new"}
-       edit_user_password GET  /users/password/edit(.:format)    {:controller=>"devise/passwords", :action=>"edit"}
-            user_password PUT  /users/password(.:format)         {:controller=>"devise/passwords", :action=>"update"}
-                          POST /users/password(.:format)         {:controller=>"devise/passwords", :action=>"create"}
-
-    # Confirmation routes for Confirmable, if User model has :confirmable configured
-    new_user_confirmation GET  /users/confirmation/new(.:format) {:controller=>"devise/confirmations", :action=>"new"}
-        user_confirmation GET  /users/confirmation(.:format)     {:controller=>"devise/confirmations", :action=>"show"}
-                          POST /users/confirmation(.:format)     {:controller=>"devise/confirmations", :action=>"create"}
-
- -

Customizing devise_for

- -
devise_for :users,
-  :path => "usuarios",
-  :path_names => {
-    :sign_in => 'login',
-    :sign_out => 'logout',
-    :password => 'secret',
-    :confirmation => 'verification',
-    :unlock => 'unblock',
-    :registration => 'register',
-    :sign_up => 'cmon_let_me_in' }
-
- -

Test helpers

- -
sign_in @user
-sign_out @user
-
- - - - - - - - diff --git a/_output/figlets.txt b/_output/figlets.txt deleted file mode 100644 index d5780b6b2..000000000 --- a/_output/figlets.txt +++ /dev/null @@ -1,1293 +0,0 @@ - **** ** - */// * /** -/ /* /** - *** ***** ****** - /// *///// **///** - * /* /** /** -/ **** //****** - //// ////// - -### ### - # # # # - ## # ### - # # # # -### ### - - - ____ - // // ( ) __ ___ ___ / __ // ( ) ___ - //__ // / / // ) ) //___) ) // ) ) // ) ) // / / // ) ) // / / - ) ) // / / // / / // // / / // / / // / / ((___/ / // / / -((___/ / // / / // / / ((____ ((___/ / ((___/ / // / / ( ( ((___( ( - - - - ___ - //___) ) - // -((____ - o - <|> - / > - o__ __o/ __o__ \o__ __o o__ __o \o__ __o o__ __o/ - /v | /> \ | |> /v v\ | v\ /v | - /> / \ o/ / \ < > /> <\ / \ <\ /> / \ - \ \o/ <| \o/ \ / \o/ / \ \o/ - o | \\ | o o | o o | - <\__ / \ _\o__ / \ __/> <\__ / \ - - - - o o - <|> _<|>_ - < > - | o __o__ - o__/_ <|> /> \ - | / \ o/ - | \o/ <| - o | \\ - <\__ / \ _\o__<< ><< -><< ><< >< -><< ><< >< ><<<><< ><< ><<< >< ><<< ><< -><< ><< ><< ><< ><< ><< ><< ><< < ><<><< ><< >< ><< -><< ><<><< ><< ><< ><< ><< ><< >< ><<><< ><< ><<<<< ><< -><< ><<><< ><< ><< ><< ><< >< >< ><><<><< ><< >< -><< ><< ><< ><<<><<< ><< ><< ><<< ><<<><<><<< ><<<< - -d8888b. .d8b. .d8888. d888888b .o88b. -88 `8D d8' `8b 88' YP `88' d8P Y8 -88oooY' 88ooo88 `8bo. 88 8P -88~~~b. 88~~~88 `Y8b. 88 8b -88 8D 88 88 db 8D .88. Y8b d8 -Y8888P' YP YP `8888Y' Y888888P `Y88P' - - - _ . . - \ ___ ___ | | - |/ \ .' ` | | - | ` |----' | | - `___,' `.___, /\__ /\__ - - _ _ -| | (_) -| |__ _ __ _ -| '_ \| |/ _` | -| |_) | | (_| | -|_.__/|_|\__, | - __/ | - |___/ -______________________________________________ - _ - / , / , / ` ----/__--------__----__---/__--------__--_/__-- - / ) / / ) / ' / ) / /___) / -_(___/_/___(___/_(___ _/___/_/___(___ _/______ - / - (_ / -01100010 01101001 01101110 01100001 01110010 01111001 - -_| _| _| -_|_|_| _| _|_| _|_|_| _| _| -_| _| _| _| _| _| _|_| -_| _| _| _| _| _| _| _| -_|_|_| _| _|_| _|_|_| _| _| - - - -8 888888888o 8 888888888o. ,o888888o. .8. -8 8888 `88. 8 8888 `88. . 8888 `88. .888. -8 8888 `88 8 8888 `88 ,8 8888 `8b :88888. -8 8888 ,88 8 8888 ,88 88 8888 `8b . `88888. -8 8888. ,88' 8 8888. ,88' 88 8888 88 .8. `88888. -8 8888888888 8 888888888P' 88 8888 88 .8`8. `88888. -8 8888 `88. 8 8888`8b 88 8888 ,8P .8' `8. `88888. -8 8888 88 8 8888 `8b. `8 8888 ,8P .8' `8. `88888. -8 8888 ,88' 8 8888 `8b. ` 8888 ,88' .888888888. `88888. -8 888888888P 8 8888 `88. `8888888P' .8' `8. `88888. - -8 888888888o. `8.`888b ,8' .8. `8.`8888. ,8' -8 8888 `^888. `8.`888b ,8' .888. `8.`8888. ,8' -8 8888 `88. `8.`888b ,8' :88888. `8.`8888. ,8' -8 8888 `88 `8.`888b .b ,8' . `88888. `8.`8888.,8' -8 8888 88 `8.`888b 88b ,8' .8. `88888. `8.`88888' -8 8888 88 `8.`888b .`888b,8' .8`8. `88888. `8. 8888 -8 8888 ,88 `8.`888b8.`8888' .8' `8. `88888. `8 8888 -8 8888 ,88' `8.`888`8.`88' .8' `8. `88888. 8 8888 -8 8888 ,o88P' `8.`8' `8,`' .888888888. `88888. 8 8888 -8 888888888P' `8.` `8' .8' `8. `88888. 8 8888 - _ _ _ _ _ _ - / \ / \ / \ / \ / \ / \ -( b | u | b | b | l | e ) - \_/ \_/ \_/ \_/ \_/ \_/ - ____ __ __ __ ____ _ _ ____ __ ____ -( _ \( )( )( ) ( _ \( )_( )( ___) /__\ ( _ \ - ) _ < )(__)( )(__ ) _ < ) _ ( )__) /(__)\ )(_) ) -(____/(______)(____)(____/(_) (_)(____)(__)(__)(____/ - - ### / - ### #/ - ## ## - ## ## - ## ## - /### /### ## /### /### ## /## ## #### - / ### / / ### / ## / ### / / ### / ## / ### ## ### / - / ###/ / ###/ ## / ###/ / ###/ ##/ ### ## ###/ -## ## ## ## ## ## ## ## ## ## ## ## -## ## ## ## ## ## ## ## ## ## ## ## -## ## ## ## ## ## ## ## ## ## ## ## -## ## ## ## ## ## ## ## ## ## ## ## -### / ## /# ## ## ## ## ## ## ## ## ## n - ######/ ####/ ## ### / ######## ####### ## ## ######### u - ##### ### ## ##/ ### ### ###### ## ## #### ### m - ### ## / ### b - #### ### ## / ##### ### e - /###### /# ## / /####### /# r - / ###/ ## / / ###/ 2 - - *** - *** * - ** *** - ** * - ** *** **** - **** **** ** *** **** **** **** * **** - * *** * * *** * ** *** * *** * ** **** * *** * - * **** * **** ** ** * **** ** * **** -** ** ** ** ** ** ** ** ** ** -** ** ** ** ** ** ** ** ** ** -** ** ** ** ** ** ** ** ** ** -** ** ** ** ** ** ** ** ** ** -*** * ** ** ** ** ** ** *** ** ** - ******* ***** ** *** * *** * ******** *** ***** ** - ***** *** ** *** *** *** *** *** ** - *** - **** *** - ******* ** - * **** - - - * - ** - ** - ** - **** ** ** **** - * *** * ** *** ** *** * - * **** ** * *** ** **** -** ** *** *** ** ** -** ** ** ** ** ** -** ** ** ** ** ** -** ** ** ** ** ** -** ** ** ** ** ** -******* ** ** ********* -****** ** ** **** *** -** ** ** *** -** * ***** *** -** * ******** ** - ** * * **** - * - - _// _//_// - _// _//_// - _/// _// _/_/ _/_// _/// _// _//_// _// - _// _// _// _// _// / _// _// _// _//_// _// -_// _// _// _// _// _/ _//_// _// _//_/_// - _// _// _// _// _/ _/ _/_//_// _// _//_// _// - _/// _// _/// _// _/// _/// _// _///_///_// _// - - __ __ -.----.| |--.--.--.-----.| |--.--.--. -| __|| | | | || <| | | -|____||__|__|_____|__|__||__|__|___ | - |_____| - O)) O)) - O) O)) O)) - O))) O)) O)) O)) O)))) O)O) O) O)) O)) O)) - O)) O)) O)) O)) O)) O))O)) O)) O)) O)) O)) O)) -O)) O)) O))O)) O)) O)) O))) O)) O)) O)) O)O)) - O)) O)) O)) O)) O)) O)) O)) O)) O)) O)) O)) O)) - O))) O)) O))O))) O))O)) O)) O)) O)) O)))O)) O)) - - 888 888 - 888 888 - 888 888 - .d8888b .d88b. 888 .d88b. .d8888b .d8888b 8888b. 888 -d88P" d88""88b888d88""88b88K 88K "88b888 -888 888 888888888 888"Y8888b."Y8888b..d888888888 -Y88b. Y88..88P888Y88..88P X88 X88888 888888 - "Y8888P "Y88P" 888 "Y88P" 88888P' 88888P'"Y888888888 - - - - -eeee eeeee eeeeeee eeeee e e eeeee eeee eeeee -8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 -8e 8 8 8e 8 8 8eee8 8e 8 8e 8eee 8eee8e -88 8 8 88 8 8 88 88 8 88 88 88 8 -88e8 8eee8 88 8 8 88 88ee8 88 88ee 88 8 - - , - _. _ ._ -+- _ __ __ _. -(_.(_)[ ) | (/,_) _) (_] - -..%%%%....%%%%...%%..%%..%%%%%%..%%%%%....%%%%....%%%%...%%%%%%. -.%%..%%..%%..%%..%%%.%%....%%....%%..%%..%%..%%..%%........%%... -.%%......%%..%%..%%.%%%....%%....%%%%%...%%%%%%...%%%%.....%%... -.%%..%%..%%..%%..%%..%%....%%....%%..%%..%%..%%......%%....%%... -..%%%%....%%%%...%%..%%....%%....%%..%%..%%..%%...%%%%.....%%... -................................................................ - .,-::::: ... .::::::. . : ::: .,-::::: -,;;;'````' .;;;;;;;. ;;;` ` ;;,. ;;; ;;;,;;;'````' -[[[ ,[[ \[[,'[==/[[[[,[[[[, ,[[[[, [[[[[[ -$$$ $$$, $$$ ''' $$$$$$$$$"$$$ $$$$$$ -`88bo,__,o,"888,_ _,88P 88b dP888 Y88" 888o888`88bo,__,o, - "YUMMMMMP" "YMMMMMP" "YMmMY" MMM M' "MMMMMM "YUMMMMMP" - .,-::::: ... .::::::. . : ::: ::: . .,:::::: -,;;;'````' .;;;;;;;. ;;;` ` ;;,. ;;; ;;; ;;; .;;,.;;;;'''' -[[[ ,[[ \[[,'[==/[[[[,[[[[, ,[[[[, [[[ [[[[[/' [[cccc -$$$ $$$, $$$ ''' $$$$$$$$$"$$$ $$$_$$$$, $$"""" -`88bo,__,o,"888,_ _,88P 88b dP888 Y88" 888o888"888"88o, 888oo,__ - "YUMMMMMP" "YMMMMMP" "YMmMY" MMM M' "MMMMMM MMM "MMP" """"YUMMM - __ ____ ____ __ __ _____ ___ ____ ___ - / ]| \ / T| T__T T| | / \ | \ | \ - / / | D )Y o || | | || __jY Y| D )| \ - / / | / | || | | || l_ | O || / | D Y -/ \_ | \ | _ |l ` ' !| _] | || \ | | -\ || . Y| | | \ / | T l !| . Y| | - \____jl__j\_jl__j__j \_/\_/ l__j \___/ l__j\_jl_____j - - __ __ __ -.----.----|__.----| |--.-----| |_ -| __| _| | __| <| -__| _| -|____|__| |__|____|__|__|_____|____| - - - - - - - _. . . __ _ o, __ -(__(_/_/ (_/_)_<_\/| . \/ ._>| . \| . \/ ._>| '_> -\___||_| | _/\___.| _/| _/\___.|_| - |_| |_| |_| - whistl -X XX -X XX -X XX -X XX -X XX -X .X - -dwhistled - -################## -##[`'`']###\`~'/## -###|::|####(o o)## -###|::|#####\ / \# -#############"#### - __ __ - _/ _|||()/ _| _ || -/o\ ] | ]|| ]o\|/ \| ] -\(L| L|L|L|\_/L_n|L| - - -eftipiti - - _ _ _ _ _ - ,'_)( ) (_) ( ) ( ) - ___ | | | | _ __ ___ | |_ ___ | | -( o_)( _)( _)( )( _)( o )( o \( o )( _) - \( /_\ /_\ /_\/_\ \_/ /___/ \_/ /_\ - - _ - __ ,'_7/7 ()/7 _ /7() __ -,'o//_7 /_7/7/_7,'o| ///7,',' -|_(// // //// |_,7//// \_\ - - |"| _ . . # # # # - _|_|_ _|_|_ ()_() . .:::. # #..# # - (o o) (o o) (o o) :(o o): . # #O #) # -ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--`o'--Ooo-ooO--(_)--Ooo-o#O-#(_#--#oo- - | _ _ _ _ - |.===. o' \,=./ `o o' \,=./ `o - {}o o{} (o o) (o o) -ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- - __ _ o _ - __ )L`)L _ __ _ _ ___ )L __ __ -(('(( (( (( \(((/'((_( (( (('(| - - _______ _______ _________ _______ -( ____ \( ____ )\__ __/( ____ \ -| ( \/| ( )| ) ( | ( \/ -| (__ | (____)| | | | | -| __) | _____) | | | | -| ( | ( | | | | -| (____/\| ) ___) (___| (____/\ -(_______/|/ \_______/(_______/ - - .|'; ||` - || || -'||' .|''|, `||''|, .|''|| .|''|, '||''| - || ||..|| || || || || ||..|| || -.||. `|... .|| ||. `|..||. `|... .||. - - - /~\ | --|-/~\| ||/~\~|~/~\|~~\(~ - | \_/ \_/|| | \_/|__/_) - | - .. s - oec : < .z@8"` :8 - @88888 .u . !@88E .88 x. . - 8"*88% .d88B :@8c u '888E u :888ooo .@88k z88u - 8b. ="8888f8888r us888u. 888E u@8NL -*8888888 ~"8888 ^8888 - u888888> 4888>'88" .@88 "8888" 888E`"88*" 8888 8888 888R - 8888R 4888> ' 9888 9888 888E .dN. 8888 8888 888R - 8888P 4888> 9888 9888 888E~8888 8888 8888 888R - *888> .d888L .+ 9888 9888 888E '888& .8888Lu= 8888 ,888B . - 4888 ^"8888*" 9888 9888 888E 9888. ^%888* "8888Y 8888" - '888 "Y" "888*""888" '"888*" 4888" 'Y" `Y" 'YP - 88R ^Y" ^Y' "" "" - 88> - 48 - '8 - - - .u . - .d88B :@8c -="8888f8888r - 4888>'88" - 4888> ' - 4888> - .d888L .+ - ^"8888*" - "Y" - - - - - .--. -: .-' -: `;.-..-..---. .---. .-..-. -: : : :; :`-'_.'`-'_.': :; : -:_; `.__.'`.___;`.___;`._. ; - .-. : - `._.' -__ _____ _____ ___ ___ __ __ - ) ____) ) ( ) ( \ ___) ( ( ) ) - / / __ / \ / \ | (__ \ \/ / -( ( ( \ ( ) ( ) | __) \ / - \ \__) ) \ / \ / | ( ) / -__) (____) (_____) (___/ \______/ (_____ - - , ,, - _ || || ' - / \\ /'\\ =||= ||/\\ \\ _-_ -|| || || || || || || || || -|| || || || || || || || || -\\_-| \\,/ \\, \\ |/ \\ \\,/ - / \ _/ -'----` - ___ ____ __ ___ ____ ____ _ _ __ - / __)( _ \ / _\ / __)( __)( __)/ )( \( ) -( (_ \ ) // \( (__ ) _) ) _) ) \/ (/ (_/\ - \___/(__\_)\_/\_/ \___)(____)(__) \____/\____/ -.eeeeee..eeeeeee...eeeeee..eeeeeee..eee.eeeeee.eeeeeee..eeeeeeeee. -@@@@@@@@:@@@@@@@@:@@@@@@@@:@@@@@@@@:@@@:@@@@@@:@@@@@@@@:@@@@@@@@@: -%%%------%%%--%%%-%%%--%%%-%%%--%%%-%%%-%%%----%%%--%%%----%%%---- -&&&++++++&&&&&&&++&&&&&&&&+&&&++&&&+&&&+&&&&&++&&&++&&&++++&&&++++ -|||*||||*||||||***||||||||*|||**|||*|||*|||||**|||**|||****|||**** -!!!==!!!=!!!=!!!==!!!==!!!=!!!==!!!=!!!=!!!====!!!==!!!====!!!==== -::::::::#:::##:::#:::##:::#::::::::#:::#::::::#:::##:::####:::#### -@......@@...@@...@...@@...@.......@@...@......@...@@...@@@@...@@@@ - - _____ _____.__ __ .__ - ________________ _/ ____\/ ____\__|/ |_|__| - / ___\_ __ \__ \\ __\\ __\| \ __\ | - / /_/ > | \// __ \| | | | | || | | | - \___ /|__| (____ /__| |__| |__||__| |__| -/_____/ \/ -68 65 78 - - /' /' /' /' - /' /' /' /' - /'__ ____ /' /' . . , , ____ ____ _____,/' - /' ) /' )--/' /' /' /| |/ / /' )--/' )--/' /' - /' /' /' /' /' /' /' /' | /| /' /' /' /' /' /' /' -/' /(__(___,/' (__(__(___,/(___|/' |/(__(___,/' (___,/' (___,/(__ - /' - / /' - (___,/' - - , , - __ _ _ _/_ _ -_(_/ (_(/___(_(__(_(_ - - - ___ ___ ___ ___ - ___ /\ \ /\ \ /\__\ /\ \ - /\ \ /::\ \ /::\ \ /::| | /::\ \ - \:\ \ /:/\ \ \ /:/\:\ \ /:|:| | /:/\:\ \ - /::\__\ _\:\~\ \ \ /:/ \:\ \ /:/|:|__|__ /::\~\:\ \ - __/:/\/__/ /\ \:\ \ \__\ /:/__/ \:\__\ /:/ |::::\__\ /:/\:\ \:\__\ - /\/:/ / \:\ \:\ \/__/ \:\ \ /:/ / \/__/~~/:/ / \:\~\:\ \/__/ - \::/__/ \:\ \:\__\ \:\ /:/ / /:/ / \:\ \:\__\ - \:\__\ \:\/:/ / \:\/:/ / /:/ / \:\ \/__/ - \/__/ \::/ / \::/ / /:/ / \:\__\ - \/__/ \/__/ \/__/ \/__/ - ___ ___ ___ - /\ \ /\ \ ___ /\ \ - \:\ \ /::\ \ /\ \ /::\ \ - \:\ \ /:/\:\ \ \:\ \ /:/\:\ \ - /::\ \ /::\~\:\ \ /::\__\ /:/ \:\ \ - /:/\:\__\ /:/\:\ \:\__\ __/:/\/__/ /:/__/ \:\__\ - /:/ \/__/ \/_|::\/:/ / /\/:/ / \:\ \ \/__/ - /:/ / |:|::/ / \::/__/ \:\ \ - \/__/ |:|\/__/ \:\__\ \:\ \ - |:| | \/__/ \:\__\ - \|__| \/__/ - ___ ___ ___ ___ - /\__\ /\ \ /\ \ /\__\ - ___ /:/ _/_ /::\ \ |::\ \ /:/ _/_ - /\__\ /:/ /\ \ /:/\:\ \ |:|:\ \ /:/ /\__\ - /:/__/ /:/ /::\ \ /:/ \:\ \ __|:|\:\ \ /:/ /:/ _/_ - /::\ \ /:/_/:/\:\__\ /:/__/ \:\__\ /::::|_\:\__\ /:/_/:/ /\__\ - \/\:\ \__ \:\/:/ /:/ / \:\ \ /:/ / \:\~~\ \/__/ \:\/:/ /:/ / - ~~\:\/\__\ \::/ /:/ / \:\ /:/ / \:\ \ \::/_/:/ / - \::/ / \/_/:/ / \:\/:/ / \:\ \ \:\/:/ / - /:/ / /:/ / \::/ / \:\__\ \::/ / - \/__/ \/__/ \/__/ \/__/ \/__/ - ___ ___ - /\ \ /\__\ - ___ /::\ \ ___ /:/ / - /\__\ /:/\:\__\ /\__\ /:/ / - /:/ / /:/ /:/ / /:/__/ /:/ / ___ - /:/__/ /:/_/:/__/___ /::\ \ /:/__/ /\__\ - /::\ \ \:\/:::::/ / \/\:\ \__ \:\ \ /:/ / - /:/\:\ \ \::/~~/~~~~ ~~\:\/\__\ \:\ /:/ / - \/__\:\ \ \:\~~\ \::/ / \:\/:/ / - \:\__\ \:\__\ /:/ / \::/ / - \/__/ \/__/ \/__/ \/__/ - ___ ___ ___ ___ - ___ / /\ / /\ /__/\ / /\ - / /\ / /:/_ / /::\ | |::\ / /:/_ - / /:/ / /:/ /\ / /:/\:\ | |:|:\ / /:/ /\ - /__/::\ / /:/ /::\ / /:/ \:\ __|__|:|\:\ / /:/ /:/_ - \__\/\:\__ /__/:/ /:/\:\ /__/:/ \__\:\ /__/::::| \:\ /__/:/ /:/ /\ - \ \:\/\ \ \:\/:/~/:/ \ \:\ / /:/ \ \:\~~\__\/ \ \:\/:/ /:/ - \__\::/ \ \::/ /:/ \ \:\ /:/ \ \:\ \ \::/ /:/ - /__/:/ \__\/ /:/ \ \:\/:/ \ \:\ \ \:\/:/ - \__\/ /__/:/ \ \::/ \ \:\ \ \::/ - \__\/ \__\/ \__\/ \__\/ - ___ ___ - ___ / /\ ___ / /\ - / /\ / /::\ / /\ / /:/ - / /:/ / /:/\:\ / /:/ / /:/ - / /:/ / /:/~/:/ /__/::\ / /:/ ___ - / /::\ /__/:/ /:/___ \__\/\:\__ /__/:/ / /\ - /__/:/\:\ \ \:\/:::::/ \ \:\/\ \ \:\ / /:/ - \__\/ \:\ \ \::/~~~~ \__\::/ \ \:\ /:/ - \ \:\ \ \:\ /__/:/ \ \:\/:/ - \__\/ \ \:\ \__\/ \ \::/ - \__\/ \__\/ - ___ ___ ___ ___ - ___ / /\ / /\ / /\ / /\ - /__/\ / /::\ / /::\ / /::| / /::\ - \__\:\ /__/:/\:\ / /:/\:\ / /:|:| / /:/\:\ - / /::\ _\_ \:\ \:\ / /:/ \:\ / /:/|:|__ / /::\ \:\ - __/ /:/\/ /__/\ \:\ \:\ /__/:/ \__\:\ /__/:/_|::::\ /__/:/\:\ \:\ - /__/\/:/~~ \ \:\ \:\_\/ \ \:\ / /:/ \__\/ /~~/:/ \ \:\ \:\_\/ - \ \::/ \ \:\_\:\ \ \:\ /:/ / /:/ \ \:\ \:\ - \ \:\ \ \:\/:/ \ \:\/:/ / /:/ \ \:\_\/ - \__\/ \ \::/ \ \::/ /__/:/ \ \:\ - \__\/ \__\/ \__\/ \__\/ - ___ ___ - ___ / /\ ___ / /\ - /__/\ / /::\ /__/\ / /::\ - \ \:\ / /:/\:\ \__\:\ / /:/\:\ - \__\:\ / /::\ \:\ / /::\ / /:/ \:\ - / /::\ /__/:/\:\_\:\ __/ /:/\/ /__/:/ \ \:\ - / /:/\:\ \__\/~|::\/:/ /__/\/:/~~ \ \:\ \__\/ - / /:/__\/ | |:|::/ \ \::/ \ \:\ - /__/:/ | |:|\/ \ \:\ \ \:\ - \__\/ |__|:|~ \__\/ \ \:\ - \__\| \__\/ - - '_/_ /'_ -/ /(/(/( - - _ _ _ - | |_(_)_ ____ _(_) - | __| | '__\ \ / / | - | |_| | | \ V /| | - \__|_|_| \_/ |_| - - - o o - -o8 .oPYo. .oooo. ooYoYo. o8 odYo. .oPYo. - 8 .oooo8 .dP 8' 8 8 8 8' `8 8oooo8 - 8 8 8 oP' 8 8 8 8 8 8 8. - 8 `YooP8 `Yooo' 8 8 8 8 8 8 `Yooo' -:8 :.....::.....:..:..:..:....::..:.....: -oP :::::::::::::::::::::::::::::::::::::: -..::::::::::::::::::::::::::::::::::::::: - - __ __.______ _______ _ _ _ _______ ___ ______ ______ _______ - \ \ / /|____ |____ .| | | | | |____ |_ |____ |____ |. __ | - \ V / _ | | | || | | | | | | | | | | | _ | || | | | - ___\ \ | | |_| | || |/ /_/ / | | | | | || | |_|| | | | - |______| | | | ||_______/ |_| |_| |_|| | |_| |_| - |_| |_| |_| - # # # # ###### - ###### # ### ####### # ### ###### # ### - # #### # # #### # #### ########## - # # # # # # # # # - # # ########## # # # ## -########## # # # ########## # ## - ####### # ####### ####### ## - -# -# ### -#### -# -# -# - ####### - -'|| '|| - || .. || ... .... .. ... - || .' ||' || '' .|| || || - ||'|. || | .|' || || || -.||. ||. '|...' '|..'|' .||. ||. - - -|Am3 - ___ __ __ -/\_ \ /'__`\ /\ \ -\//\ \ __ _ __ _ __ __ __/\_\L\ \ \_\ \ - \ \ \ /'__`\ /\`'__\/\`'__\/\ \/\ \/_/_\_<_ /'_` \ - \_\ \_/\ \L\.\_\ \ \/ \ \ \/ \ \ \_\ \/\ \L\ \/\ \L\ \ - /\____\ \__/.\_\\ \_\ \ \_\ \/`____ \ \____/\ \___,_\ - \/____/\/__/\/_/ \/_/ \/_/ `/___/> \/___/ \/__,_ / - /\___/ - \/__/ - - | | - + - -| - | | | | - - - - - - - _/ - _/ _/_/ _/_/_/ _/_/_/ - _/ _/_/_/_/ _/ _/ _/ _/ - _/ _/ _/ _/ _/ _/ -_/ _/_/_/ _/_/_/ _/ _/ - - -lll tt tt -lll eee tt tt eee rr rr sss -lll ee e tttt tttt ee e rrr r s -lll eeeee tt tt eeeee rr sss -lll eeeee tttt tttt eeeee rr s - sss -.-. .-..-..-..-..-..-..-. -| |__ | || .` || || | > < -`----'`-'`-'`-'`----''-'`-` - -:| :| -:| ,::\ .::/ :|_/ :~~/ :::| /::| :::\ ,::\ :\/| :~~/ -:| `::/ `::\ :|~\ :::, :| \::| :|:| `::/ :::| :::, - ,.:/ - | | -/=\=\ /=| /=| /= = /=| -| | | \=| \=| | | \=| - - - -.::: .:: .:: .:: .: .::: .:: .:: .:: .:: .:: - .:: .: .:: .:: .:: .:: .: .:: .:: .:: .: .:: .: .:: - .:: .: .::.:: .:: .:: .: .:: .:: .::.::::: .::.::::: .:: - .:: .: .::.:: .:: .:: .::.:: .:: .::.: .: -.::: .: .:: .:: .:::.::: .:: .::.:: .:::: .:::: - .::: - /~\ -|/~\ /~\ /~~|\/-|-/~\| ||/~\ -| | |\__|/\ | \_/ \_/|| - - |/ _ - ||\ _| | |/ - - -._ _ o._ o -| | ||| || - - _ - __ _ ___ __ _ __ _(_) ___ __ _ - |__` |/ _ \__` |__` | |/ _ ' _` | - | | (_) | | | | | | | | | | | - |_|\___/ |_| |_|_|_| |_| |_| - -mnemonic --- --- .-. ... . - -# # ### #### # # ### # # -## ## # # # # # # # # # # -# # # # # # #### # # # # # -# # # # # # # # # # # -# # ### #### # ### ### - - ""|""| |""||""|'\/ - | ' |_|| ' | _\ - | | - oo .8888b - 88 " -88d888b. .d8888b. 88d888b. .d8888b. dP dP dP 88aaa .d8888b. -88' `88 88' `88 88' `88 88' `"" 88 88 88 88888888 88 88' `88 -88 88 88. .88 88 88 88. ... 88. .88 88 88 88. .88 -dP dP `88888P8 dP dP `88888P' `8888P88 88 dP `88888P8 - .88 88 - d8888P dP - - -88d888b. .d8888b. dP dP -88' `88 88' `"" 88 88 -88 88 88. ... 88. .88 -dP dP `88888P' `8888P88 - .88 - d8888P - oo - -88d888b. .d8888b. 88d888b. .d8888b. dP dP dP dP dP 88d888b. -88' `88 88' `88 88' `88 88' `"" 88 88 88 88888888 88 88 88' `88 -88 88 88. .88 88 88 88. ... 88. .88 88 88. .88 88 88 -dP dP `88888P8 dP dP `88888P' `8888P88 88 `88888P' dP dP -ooooooooooooooooooooooooooooooooooooo~~~~.88~88~ooooooooooooooooooooooooooo - d8888P dP - dP dP oo dP - 88 88 88 -.d888b88 .d8888b. 88d888b. 88 dP 88d888b. .d8888b. .d888b88 -88' `88 88ooood8 88' `88 88 88 88' `88 88ooood8 88' `88 -88. .88 88. ... 88 88 88 88 88 88. ... 88. .88 -`88888P8 `88888P' dP dP dP dP dP `88888P' `88888P8 -oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo - - oo - -88d888b. .d8888b. 88d888b. .d8888b. dP dP dP -88' `88 88' `88 88' `88 88' `"" 88 88 88 -88 88 88. .88 88 88 88. ... 88. .88 88 -dP dP `88888P8 dP dP `88888P' `8888P88 88 - .88 88 - d8888P dP - {__ - {_ {__ -{__ {__ {_ {__ {_ {__ {__ {__ {____ - {__ {__{__{_ {__ {_ {__ {__ {_ {__ {__ - {__ {__{__{_ {__{_ {__ {__{_____ {__ {___ - {__ {__{__{__ {__ {__ {__ {__{_ {__ -{___ {__{__{__ {__ {___ {____ {__ {__ - {__ {__ - - - - _ _____ _ _ ___ ___ ___ _ __ -| |/ ( | \ / ) _ \/ __) __) |/ / -| / / | | \ v / |_) > _)> _)| < -|__/ \_) | || __/\___)___)_|\_\ - | || | - |_||_| - - - - gg - "" - ,ggg,,ggg, ggg gg ,g, ,gggg, ,gggggg, gg gg,gggg, - ,8" "8P" "8, d8"Yb 88bg,8'8, dP" "Yb dP""""8I 88 I8P" "Yb - I8 8I 8I dP I8 8I ,8' Yb i8' ,8' 8I 88 I8' ,8i -,dP 8I Yb,,dP I8, ,8I,8'_ 8) ,d8,_ _,dP Y8,_,88,_,I8 _ ,d8' -8P' 8I `Y88" "Y8P" P' "YY8P8PP""Y8888PP8P `Y88P""Y8PI8 YY88888P - I8 - I8 - I8 - I8 - I8 - I8 - - I8 - I8 -88888888 - I8 - I8 - I8 - ,I8, - ,d88b, - 8P""Y8 - - - - - - - ooooooo - ooooooo o888 888o -888 888 888888888 -888 888 888o o888 - 88ooo88 88ooo88 - -157 143 164 141 154 - - ___ __ _ _ __ ___ - / _ \ / _` | '__/ _ \ -| (_) | (_| | | | __/ - \___/ \__, |_| \___| - |___/ -_________________ooooo__ -_ooooo___oooo__oo____oo_ -oo___oo_oo___o_______oo_ -oo___oo___oo_______ooo__ -oo___oo_o___oo___ooo____ -_ooooo___oooo__oooooooo_ -________________________ - - - - ____ ____ _ _ _ ____ -(____) (____)(_) ( ) (_)(____) -(_)_(_)( )_( )(_)_(_)_(_)(_)_(_) -(____) (__)_) (__) (__) (____) -(_) (_) -(_) (_) - /^^ - /^^ -/^ /^^ /^^ /^^ /^^ /^^ /^^^^ -/^ /^^ /^ /^^ /^^ /^^ /^^ /^^ /^^ -/^ /^^/^^^^^ /^^/^^ /^^ /^/^^ /^^^ -/^^ /^^ /^ /^^ /^^ /^^ /^^ /^^ -/^^ /^^^^ /^^ /^^^/^^ /^^/^^ /^^ -/^^ - o o o - O O O - O O o - o o O -.oOo. .oOo. OoOo. OoOo. o .oOo. .oOo -O o OooO' O o O o O OooO' `Ooo. -o O O o O o O o O O -oOoO' `OoO' `OoO' `OoO' Oo `OoO' `OoO' -O -o' - - _ _ _ _ _ _ - /_//_'/_//_//_'/ -/ / / - -@@@@@@@ @@@@@@ @@@ @@@@@@ @@@@@@ @@@ @@@ -@@@@@@@@ @@@@@@@@ @@@ @@@@@@@ @@@@@@@@ @@@@ @@@ -@@! @@@ @@! @@@ @@! !@@ @@! @@@ @@!@!@@@ -!@! @!@ !@! @!@ !@! !@! !@! @!@ !@!!@!@! -@!@@!@! @!@ !@! !!@ !!@@!! @!@ !@! @!@ !!@! -!!@!!! !@! !!! !!! !!@!!! !@! !!! !@! !!! -!!: !!: !!! !!: !:! !!: !!! !!: !!! -:!: :!: !:! :!: !:! :!: !:! :!: !:! - :: ::::: :: :: :::: :: ::::: :: :: :: - : : : : : :: : : : : : :: : - - ___ ___ - /'___)/'___) - _ _ _ _ | (__ | (__ _ _ -( '_`\ ( ) ( )| ,__)| ,__)( ) ( ) -| (_) )| (_) || | | | | (_) | -| ,__/'`\___/'(_) (_) `\__, | -| | ( )_| | -(_) `\___/' - ^ ^ ^ ^ ^ ^ ^ - /p\ /y\ /r\ /a\ /m\ /i\ /d\ -<___><___><___><___><___><___><___> - - _ _ - ___ ___ ___| |_ ___ ___ ___| |___ ___ -| _| -_| _| _| .'| | . | | -_|_ -| -|_| |___|___|_| |__,|_|_|_ |_|___|___| - |___| -______________________________________________________________ -/~~~~~~~\__/~~~~~~~~\_/~~\_______/~~~~\_/~~~~~~~~\_/~~~~~~~~\_ -/~~\__/~~\_/~~\_______/~~\________/~~\__/~~\_______/~~\_______ -/~~~~~~~\__/~~~~~~\___/~~\________/~~\__/~~~~~~\___/~~~~~~\___ -/~~\__/~~\_/~~\_______/~~\________/~~\__/~~\_______/~~\_______ -/~~\__/~~\_/~~~~~~~~\_/~~~~~~~~\_/~~~~\_/~~~~~~~~\_/~~\_______ -______________________________________________________________ -\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -//////// \\///////// \/// \\\\\\\///// \///////// \///////// \\/////// \ -/// \\/// \/// \\\\\\\/// \\\\\\\\/// \\/// \\\\\\\/// \\\\\\\/// \/// \ -//////// \\/////// \\\/// \\\\\\\\/// \\/////// \\\/////// \\\\\\/// \\\ -/// \\/// \/// \\\\\\\/// \\\\\\\\/// \\/// \\\\\\\/// \\\\\\\\/// \\\\\ -/// \\/// \///////// \///////// \///// \///////// \/// \\\\\\\//////// \ -\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -======================= -======================= -======================= -======================= -= = ==== === = = -= = == = == = = -= ======= === == -= ======= ====== == -= ======= = ==== === -= ======== ===== === -======================= - - -oooo d8b .ooooo. ooo. .oo. .oo. .oooo. ooo. .oo. -`888""8P d88' `88b `888P"Y88bP"Y88b `P )88b `888P"Y88b - 888 888 888 888 888 888 .oP"888 888 888 - 888 888 888 888 888 888 d8( 888 888 888 -d888b `Y8bod8P' o888o o888o o888o `Y888""8o o888o o888o - - - -ebg13 - _ _ - | | | | - ____ ___ _ _ ____ __| |_____ __| | - / ___) _ \| | | | _ \ / _ | ___ |/ _ | -| | | |_| | |_| | | | ( (_| | ____( (_| | -|_| \___/|____/|_| |_|\____|_____)\____| - - dMMMMb .aMMMb dMP dMP dMP .aMMMb dMMMMb .aMMMb .aMMMb dMMMMb - dMP.dMP dMP"dMP dMP dMP dMP dMP"dMP dMP dMP dMP"VMP dMP"dMP dMP.dMP - dMMMMK" dMP dMP dMP dMP dMP dMMMMMP dMP dMP dMP dMMMMMP dMMMMP" - dMP"AMF dMP.aMP dMP.dMP.dMP dMP dMP dMP dMP dMP.aMP dMP dMP dMP -dMP dMP VMMMP" VMMMPVMMP" dMP dMP dMP dMP VMMMP" dMP dMP dMP - - -888,8, e88 88e 8P d8P 8P d8P e88 88e -888 " d888 888b P d8P P d8P d888 888b -888 Y888 888P d8P d d8P d Y888 888P -888 "88 88" d8P d8 d8P d8 "88 88" - - - - - -|\ |\ | |~\ | -|/ | | `| |_| | -|\ | | |` ||| |\ - @@@@@@ @@@@@@@ @@@ @@@@@@ @@@@@@ @@@@@@@ - !@@ @@! @@@ @@! @@! @@@ @@! @@@ @@! @@@ - !@@!! @!@!@!@ @!! @!@ !@! @!@ !@! @!@ !@! - !:! !!: !!! !!: !!: !!! !!: !!! !!: !!! - ::.: : :: : :: : ::.: : : :. : : :. : :: : : - - - o - , __ ,_ _ _|_ -/ \_/ / | | |/ \_| - \/ \___/ |_/|_/|__/ |_/ - /| - \| - ___ ___ ___ __ ___ __ __ ___ -/ __)( _)( ,) ( )( _) / _) ( ) ( ,\ -\__ \ ) _) ) \ )( ) _)( (_ /__\ ) _/ -(___/(___)(_)\_)(__)(_) \__)(_)(_)(_) - | | - __| __ \ _` | _` | _ \\ \ \ / -\__ \ | | | ( | ( | ( |\ \ \ / -____/_| |_|\__,_|\__,_|\___/ \_/\_/ - - _|_ |- -_\||()|`|_ - - __ __ - _____/ /___ _____ / /_ - / ___/ / __ `/ __ \/ __/ - (__ ) / /_/ / / / / /_ -/____/_/\__,_/_/ /_/\__/ - - #| #| H| - #HH|#| H| #H| -##H| #| #| #HH|##HH| - H|#| #|## H|## -##H| #H|#H|#HH| #HH| - - _ - // _/_ - _ // _ _. __ o _ / -/_)_ - - - - - - - -

Fitness

-

Target heart rate

- -
max heart rate = (220 - age)
-
- -

"The target heart rate method is a simple formula: take 220 and minus your age. -Then take that number and multiply it by .75 - .85, which will give you your -percentages of 75% -- 85% of your Max. HR."

- -

http://www.bodybuilding.com/fun/mike1.htm

- -

Warmup sets

- - - -

http://corw.in/warmup/

- - - - - - - - diff --git a/_output/heroku.html b/_output/heroku.html deleted file mode 100644 index 12ebf4b20..000000000 --- a/_output/heroku.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - -

Heroku

-

Create an app

- -
heroku create sushi
-
- -

Custom domains

- -
heroku addon:add custom_domains
-
-heroku domains:add example.com
-heroku domains:add www.example.com
-
- -

DNS records

- -
# Root domains
-mydomain.com. (A)
-  => 75.101.163.44
-  => 75.101.145.87
-  => 174.129.212.2
-
-# Subdomains
-.mydomain.com. (CNAME)
-  => proxy.heroku.com
-
- -

Wildcard domains

- -
heroku addons:add wildcard_domains
-
-*.yourdomain.com => heroku.com
-
- - - - - - - - diff --git a/_output/html-css.html b/_output/html-css.html deleted file mode 100644 index 3338ecbb9..000000000 --- a/_output/html-css.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - -

Html-css

-

CSS - Selectors

- -
.class {
-}
-
- -

CSS - Font styling

- -
font-family: Arial;
-font-size: 12pt;
-line-height: 150%;
-color: #aa3322;
-
- -

CSS - Font styling

- -
// Bold
-font-weight: bold;
-font-weight: normal;
-
-// Italic
-font-style: italic;
-font-style: normal;
-
-// Underline
-text-decoration: underline;
-text-decoration: none;
-
- - - - - - - - diff --git a/_output/html.html b/_output/html.html deleted file mode 100644 index ce8d5582d..000000000 --- a/_output/html.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - -

HTML

-

H5BP HTML tag

- -
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
-<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
-<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
-<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
-<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
-
- -

iPhone viewport

- -
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
-
- -

Google jQuery

- -
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
-
- - - - - - - - diff --git a/_output/index.html b/_output/index.html deleted file mode 100644 index ff3149a98..000000000 --- a/_output/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - -

Cheat sheets

- - - - - - - - - diff --git a/_output/ios.html b/_output/ios.html deleted file mode 100644 index a13e14f0b..000000000 --- a/_output/ios.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - -

Ios

-

Path to Installous downloads:

- -
/private/var/mobile/Documents/Installous/Downloads
-
- -

Multiple Exchange accounts:

- -
scp root@iphone.local:/private/var/mobile/Library/Preferences/com.apple.accountsettings.plist .
-
- -

Ringtone conversion using ffmpeg:

- -
ffmpeg -i foo.mp3 -ac 1 -ab 128000 -f mp4 -acodec libfaac -y target.m4r
-
- - - - - - - - diff --git a/_output/jquery.html b/_output/jquery.html deleted file mode 100644 index 9cf50f312..000000000 --- a/_output/jquery.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - -

jQuery

-

Extending selectors

- -
// $(":inline")
-$.expr[':'].inline = function(a) {
-  return $(a).css('display') === 'inline';
-};
-
- -

Extend CSS properties

- -
$.cssHooks.someCSSProp = {
-  get: function(elem, computed, extra) {
-  },
-  set: function(elem, value) {
-  }
-};
-
-// Disable "px"
-$.cssNumber["someCSSProp"] = true;
-
- -

fn.animate() hooks

- -
$.fn.step.someWhatever = function(fx) {
-  // ...
-}
-
- -

Mobile events

- -

For support for tap, swipe, swipeLeft, et al, use -jquery.mobile.event.js. Be sure to set $.support.touch first.

- -

To get $.support.touch (and family), use this from -jquery.mobile.support.js:

- -
$.extend($.support, {
-  orientation: "orientation" in window && "onorientationchange" in window,
-  touch: "ontouchend" in document,
-  cssTransitions: "WebKitTransitionEvent" in window,
-  pushState: "pushState" in history && "replaceState" in history,
-  mediaquery: $.mobile.media( "only all" ),
-  cssPseudoElement: !!propExists( "content" ),
-  touchOverflow: !!propExists( "overflowScrolling" ),
-  boxShadow: !!propExists( "boxShadow" ) && !bb,
-  scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini,
-  dynamicBaseTag: baseTagTest()
-});
-
- - - - - - - - diff --git a/_output/linux.html b/_output/linux.html deleted file mode 100644 index 2e61940aa..000000000 --- a/_output/linux.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - -

Linux

-

Mounting a RAM drive

- -
$ mount -t tmpfs -o size=5G,nr_inodes=5k,mode=700 tmpfs /tmp
-
- - - - - - - - diff --git a/_output/makefile.html b/_output/makefile.html deleted file mode 100644 index 28d29b54c..000000000 --- a/_output/makefile.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - -

Makefile

-

Safe assignment

- -
prefix ?= /usr/local
-
- -

Cool stuff

- -
    gitdir ?= $(shell git --exec-path)
-    gitver ?= $(word 3,$(shell git --version))
-
- -

Substitutions

- -
    $(SOURCE:.cpp=.o)
-    $(patsubst %.cpp, %.c, $(SOURCES))
-
- -

Building files

- -
    %.o: %.c
-        ffmpeg -i $< > $@   # Input and output
-        foo $^
-
- -

Default task

- -
    default:
-        @echo "hello."
-        @false
-
- - - - - - - - diff --git a/_output/markdown.html b/_output/markdown.html deleted file mode 100644 index 6d5efce92..000000000 --- a/_output/markdown.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - -

Markdown

-

Markdown

- -
# h1
-### h3
-
-[link](http://google.com)
-
-[link][google]
-[google]: http://google.com
-
-![Image alt text](/path/to/img.jpg)
-
- - - - - - - - diff --git a/_output/osx.html b/_output/osx.html deleted file mode 100644 index ae6e0fe75..000000000 --- a/_output/osx.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - -

Osx

-

Locations of startup items

- -
/System/Library/LaunchAgents/
-/System/Library/LaunchDaemons/
-/Library/LaunchAgents/
-/Library/LaunchDaemons/
-
- -

Hide desktop icons

- -
defaults write com.apple.finder CreateDesktop -bool false
-killall Finder
-
- -

Auto-hide other windows on dock switch

- -
defaults write com.apple.dock single-app -bool TRUE
-killall Dock
-
-defaults delete com.apple.dock single-app
-killall Dock
-
- - - - - - - - diff --git a/_output/passenger.html b/_output/passenger.html deleted file mode 100644 index 7765bb789..000000000 --- a/_output/passenger.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -

Phusion Passenger

-
server {
-   listen 80;
-   server_name www.yourhost.com;
-   root /somewhere/public;   # <--- be sure to point to 'public'!
-   passenger_enabled on;
-   autoindex on; # Show directory listings
-}
-
- - - - - - - - diff --git a/_output/rails-models.html b/_output/rails-models.html deleted file mode 100644 index d088f6080..000000000 --- a/_output/rails-models.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - -

Rails Models

-

Generating models

- -
$ rails g model User
-
- -

Associations

- -
belongs_to
-has_one
-has_many
-has_many :through
-has_one :through
-has_and_belongs_to_many
-
-belongs_to :author,
-  class_name: 'User',
-  dependent: :destroy  // delete this
-
- -

Has many

- -
belongs_to :parent, :foreign_key => 'parent_id' class_name: 'Folder'
-has_many :folders, :foreign_key => 'parent_id', class_name: 'Folder'
-
-has_many :comments,    :order      => "posted_on"
-has_many :comments,    :include    => :author
-has_many :people,      :class_name => "Person"
-has_many :people,      :conditions => "deleted = 0"
-has_many :tracks,      :order      => "position"
-has_many :comments,    :dependent  => :nullify
-has_many :comments,    :dependent  => :destroy
-has_many :tags,        :as         => :taggable
-has_many :reports,     :readonly   => true
-has_many :subscribers, :through    => :subscriptions, class_name: "User", :source => :user
-has_many :subscribers, :finder_sql =>
-    'SELECT DISTINCT people.* ' +
-    'FROM people p, post_subscriptions ps ' +
-    'WHERE ps.post_id = #{id} AND ps.person_id = p.id ' +
-    'ORDER BY p.first_name'
-
- -

Many-to-many

- -

If you have a join model:

- -
class Programmer < ActiveRecord::Base
-  has_many :assignments
-  has_many :projects, :through => :assignments
-end
-
-class Project < ActiveRecord::Base
-  has_many :assignments
-  has_many :programmers, :through => :assignments
-end
-
-class Assignment
-  belongs_to :project
-  belongs_to :programmer
-end
-
- -

Or HABTM:

- -
has_and_belongs_to_many :projects
-has_and_belongs_to_many :projects, :include => [ :milestones, :manager ]
-has_and_belongs_to_many :nations, :class_name => "Country"
-has_and_belongs_to_many :categories, :join_table => "prods_cats"
-has_and_belongs_to_many :categories, :readonly => true
-has_and_belongs_to_many :active_projects, :join_table => 'developers_projects', :delete_sql =>
-"DELETE FROM developers_projects WHERE active=1 AND developer_id = #{id} AND project_id = #{record.id}"
-
- -

Polymorphic associations

- -
class Post
-  has_many :attachments, :as => :parent
-end
-
-class Image
-  belongs_to :parent, :polymorphic => true
-end
-
- -

And in migrations:

- -
create_table :images do
-  t.references :post, :polymorphic => true
-end
-
- -

Migrations

- -

Run migrations

- -
$ rake db:migrate
-
- -

Migrations

- -
create_table :users do |t|
-  t.string :name
-  t.text   :description
-
-  t.primary_key :id
-  t.string
-  t.text
-  t.integer
-  t.float
-  t.decimal
-  t.datetime
-  t.timestamp
-  t.time
-  t.date
-  t.binary
-  t.boolean
-end
-
-options:
-  :null (boolean)
-  :limit (integer)
-  :default
-  :precision (integer)
-  :scale (integer)
-
- -

Tasks

- -
create_table
-change_table
-drop_table
-add_column
-change_column
-rename_column
-remove_column
-add_index
-remove_index
-
- -

Associations

- -
t.references :category   # kinda same as t.integer :category_id
-
-# Can have different types
-t.references :category, polymorphic: true
-
- -

Add/remove columns

- -
$ rails generate migration RemovePartNumberFromProducts part_number:string
-
-class RemovePartNumberFromProducts < ActiveRecord::Migration
-  def up
-    remove_column :products, :part_number
-  end
-
-  def down
-    add_column :products, :part_number, :string
-  end
-end
-
- -

Validation

- -
class Person < ActiveRecord::Base
-
-  # Checkboxes
-  validates :terms_of_service, :acceptance => true
-
-  # Validate associated records
-  has_many :books
-  validates_associated :books
-
-  # Confirmation (like passwords)
-  validates :email, :confirmation => true
-
-  # Format
-  validates :legacy_code, :format => {
-    :with    => /\A[a-zA-Z]+\z/,
-    :message => "Only letters allowed"
-  }
-
-  # Length
-  validates :name,     :length => { :minimum => 2 }
-  validates :bio,      :length => { :maximum => 500 }
-  validates :password, :length => { :in => 6..20 }
-  validates :number,   :length => { :is => 6 }
-
-  # Length (full enchalada)
-  validates :content, :length => {
-    :minimum   => 300,
-    :maximum   => 400,
-    :tokenizer => lambda { |str| str.scan(/\w+/) },
-    :too_short => "must have at least %{count} words",
-    :too_long  => "must have at most %{count} words"
-  }
-end
-
-  # Numeric
-  validates :points,       :numericality => true
-  validates :games_played, :numericality => { :only_integer => true }
-
-  # Non empty
-  validates :name, :presence => true
-
-  # Multiple
-  validate :login, :email, :presence => true
-end
-
- -

Custom validations

- -
class Person < ActiveRecord::Base
-  validate :foo_cant_be_nil
-
-  def foo_cant_be_nil
-    errors.add(:foo, 'cant be nil')  if foo.nil?
-  end
-end
-
- -

API

- -
items = Model.find_by_email(email)
-items = Model.where(first_name: "Harvey")
-
-item = Model.find(id)
-
-item.serialize_hash
-item.new_record?
-
-item.create     # Same an #new then #save
-item.create!    # Same as above, but raises an Exception
-
-item.save
-item.save!      # Same as above, but raises an Exception
-
-item.update
-item.update_attributes
-item.update_attributes!
-
-item.valid?
-item.invalid?
-
- -

http://guides.rubyonrails.org/activerecordvalidations_callbacks.html

- -

Mass updates

- -
# Updates person id 15
-Person.update 15, name: "John", age: 24
-Person.update [1,2], [{name: "John"}, {name: "foo"}]
-
- -

Joining

- -
Student.joins(:schools).where(:schools => { :type => 'public' })
-Student.joins(:schools).where('schools.type' => 'public' )
-
- -

Serialize

- -
class User < ActiveRecord::Base
-  serialize :preferences
-end
-
-user = User.create(:preferences => { "background" => "black", "display" => large })
-
- -

You can also specify a class option as the second parameter that’ll raise an -exception if a serialized object is retrieved as a descendant of a class not in -the hierarchy.

- -
class User < ActiveRecord::Base
-  serialize :preferences, Hash
-end
-
-user = User.create(:preferences => %w( one two three ))
-User.find(user.id).preferences    # raises SerializationTypeMismatch
-
- -

Overriding accessors

- -
class Song < ActiveRecord::Base
-  # Uses an integer of seconds to hold the length of the song
-
-  def length=(minutes)
-    write_attribute(:length, minutes.to_i * 60)
-  end
-
-  def length
-    read_attribute(:length) / 60
-  end
-end
-
- - - -

Callbacks

- -
after_create
-after_initialize
-after_validation
-after_save
-after_commit
-
- - - - - - - - diff --git a/_output/rails-plugins.html b/_output/rails-plugins.html deleted file mode 100644 index 940ecbe78..000000000 --- a/_output/rails-plugins.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - -

Rails-plugins

-

Generate a plugin

- -

Generate a Rails Engine plugin:

- -
rails plugin new myplugin --skip-bundle --full
-
- -

Initializers

- - - -

Subclass Railtie and provide an initializer method.

- -
module NewPlugin
-  class Railtie < Rails::Railtie
-    initializer "newplugin.initialize" do |app|
-
-      # subscribe to all rails notifications: controllers, AR, etc.
-      ActiveSupport::Notifications.subscribe do |*args|
-        event = ActiveSupport::Notifications::Event.new(*args)
-        puts "Got notification: #{event.inspect}"
-      end
-
-    end
-  end
-end
-
- -

Custom routes

- - - -

To create custom routes.rb keywords:

- -
# # routes.rb:
-# myplugin_for x
-#
-class ActionDispatch::Routing
-  class Mapper
-    def myplugin_for(*x)
-    end
-  end
-end
-
- -

Example with a block:

- -
# authenticated do
-#   resources :users
-# end
-#
-def authenticated
-  constraint = lambda { |request| request... }
-
-  constraints(constraint) { yield }
-end
-
- -

Custom generators

- - - -

Basic

- -
# rails g initializer
-# lib/generators/initializer_generator.rb
-class InitializerGenerator < Rails::Generators::Base
-  def create_initializer_file
-    create_file "config/initializers/initializer.rb", "# Add initialization content here"
-  end
-end
-
- - - -

Generating a generator

- -
$ rails generate generator initializer
-
- -

NamedBase

- -

Use NamedBase instead if you want to take an argument. It will be available as -file_name.

- -
class InitializerGenerator < Rails::Generators::Base
-  def lol
-    puts file_name
-  end
-end
-
- -

More

- -
class InitializerGenerator < Rails::Generators::NamedBase
-  # 
-  source_root File.expand_path("../templates", __FILE__)
-  desc "Description goes here."
-end
-
- -

Generators lookup

- -

When invoking rails g XXX:

- - - -

When invoking rails g XXX:YYY:

- - - -

ActiveModel 'acts as'

- -
# yaffle/lib/yaffle/acts_as_yaffle.rb
-module Yaffle
-  module ActsAsYaffle
-    extend ActiveSupport::Concern
-
-    included do
-    end
-
-    module ClassMethods
-      def acts_as_yaffle(options = {})
-        # your code will go here
-      end
-    end
-  end
-end
-
-ActiveRecord::Base.send :include, Yaffle::ActsAsYaffle
-
- - - - - - - - diff --git a/_output/rails-routes.html b/_output/rails-routes.html deleted file mode 100644 index 09062df21..000000000 --- a/_output/rails-routes.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - -

Rails Routes

-

Multiple resources

- -
resources :books
-# PhotosController:
-# index  =>    GET /photos
-# new    =>    GET /photos/new
-# create =>   POST /photos/new
-# show   =>    GET /photos/:id
-# edit   =>    GET /photos/:id/edit
-# update =>    PUT /photos/:id
-# delete => DELETE /photos/:id
-#
-# Helpers:
-# new_book_path
-# book_path(id)
-# edit_book_path(id)
-#
-
-resources :photos do
-  member { get 'preview' }       # /photo/1/preview
-  get 'preview', on: :member     # (..same as the first)
-  collection { get 'search' }    # /photos/search
-end
-
- -

Single resource

- -
resource :coder
-
-# CodersController:
-# new    =>    GET /coder/new
-# create =>   POST /coder/new
-# show   =>    GET /coder
-# edit   =>    GET /coder/edit
-# update =>    PUT /coder
-# delete => DELETE /coder
-
- -

Matching

- -
match 'photo/:id' => 'photos#show'  # /photo/what-is-it
-match 'photo/:id', id: /[0-9]+/     # /photo/0192
-match 'photo/:id' => 'photos#show', constraints: { id: /[0-9]+/ }
-match 'photo/:id', via: :get
-match 'photo/:id', via: [:get, :post]
-
-match 'photo/*path' => 'photos#unknown'    # /photo/what/ever
-
-# params[:format] == 'jpg'
-match 'photos/:id' => 'photos#show', :defaults => { :format => 'jpg' }
-
- -

Get/post

- -

get is the same as match via: :get.

- -
get 'photo/:id' => 'photos#show'
-# same as match 'photo/:id' => 'photos#show', via: :get
-
-post 'photo/:id' => 'photos#update'
-# same as match 'photo/:id' => 'photos#show', via: :post
-
- -

Redirection

- -
match '/stories' => redirect('/posts')
-match '/stories/:name' => redirect('/posts/%{name}')
-
- -

Named

- -
# logout_path
-match 'exit' => 'sessions#destroy', as: :logout
-
- -

Constraints

- -
match '/', constraints: { subdomain: 'admin' }
-
-# admin.site.com/admin/photos
-namespace 'admin' do
-  constraints subdomain: 'admin' do
-    resources :photos
-  end
-end
-
- -

Custom constraints

- -
class BlacklistConstraint
-  def initialize
-    @ips = Blacklist.retrieve_ips
-  end
-
-  def matches?(request)
-    @ips.include?(request.remote_ip)
-  end
-end
-
-TwitterClone::Application.routes.draw do
-  match "*path" => "blacklist#index",
-    :constraints => BlacklistConstraint.new
-end
-
- -

Scopes

- -
scope 'admin', constraints: { subdomain: 'admin' } do
-  resources ...
-end
-
- -

Rack middleware

- -
# Yes, Sprockets is middleware
-match '/application.js' => Sprockets
-
- -

Route helpers

- -
projects_path   # /projects
-projects_url    # http://site.com/projects
-
- -

Default help text

- -
# The priority is based upon order of creation:
-# first created -> highest priority.
-
-# Sample of regular route:
-match 'products/:id' => 'catalog#view'
-
-# Keep in mind you can assign values other than :controller and :action
-
-# Sample of named route:
-match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
-
-# This route can be invoked with purchase_url(:id => product.id)
-
-# Sample resource route (maps HTTP verbs to controller actions automatically):
-resources :products
-
-# Sample resource route with options:
-resources :products do
-  member do
-    get 'short'
-    post 'toggle'
-  end
-
-  collection do
-    get 'sold'
-  end
-end
-
-# Sample resource route with sub-resources:
-resources :products do
-  resources :comments, :sales
-  resource :seller
-end
-
-# Sample resource route with more complex sub-resources
-resources :products do
-  resources :comments
-  resources :sales do
-    get 'recent', :on => :collection
-  end
-end
-
-# Sample resource route within a namespace:
-namespace :admin do
-  # Directs /admin/products/* to Admin::ProductsController
-  # (app/controllers/admin/products_controller.rb)
-  resources :products
-end
-
-# You can have the root of your site routed with "root"
-# just remember to delete public/index.html.
-root :to => 'welcome#index'
-
-# See how all your routes lay out with "rake routes"
-
-# This is a legacy wild controller route that's not recommended for RESTful applications.
-# Note: This route will make all actions in every controller accessible via GET requests.
-match ':controller(/:action(/:id(.:format)))'
-
- -

References

- - - - - - - - - - diff --git a/_output/rails.html b/_output/rails.html deleted file mode 100644 index db7f6bf8d..000000000 --- a/_output/rails.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - -

Rails

-

Helpers

- -
class ApplicationController
-  helper_method :logged_in?
-
-  def logged_in?
-    "Something"
-  end
-end
-
- -

CSS/JS packages

- -
stylesheet_link_tag :monkey
-javascript_link_tag :monkey
-
- -

Forms

- -
# http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html
-
-- form_for @person do |f|
-  = f.label :first_name
-  = f.label :first_name, "First name"
-  = f.text_field :first_name
-
-  = f.label :last_name>
-  = f.text_field :last_name>
-
-  - fields_for @person.permission do |fields|
-    = fields.checkbox :admin
-
-  -# name="person[admin]"
-  - fields_for :person, @client do |fields|
-    = fields.checkbox :admin
-
-  = f.submit
-
-# Also: check_box, email_field, fields_for
-# file_field, hidden_field, label, number_field, password_field
-# radio_button, range_field, search_field, telephonen_field,
-# text_area, text_field, url_field
-
- -

Controllers

- -

http://apidock.com/rails/ActionController/Base

- -
class ProjectsController
-  layout 'project'   # Actually defaults to `projects` based
-                     # on the controller name
-
-  def save
-  end
-
-  def edit
-  end
-end
-
- -

Before filter

- -
class ApplicationController < ActionController::Base
-  before_filter :validate, only: [:save, :edit]
-  before_filter :ensure_auth, except: [:logout]
-
-  before_filter :require_login
-
-  private
-
-  def require_login
-    unless logged_in?
-      flash[:error] = "You must be logged in to access this section"
-      redirect_to new_login_url # halts request cycle
-    end
-  end
-end
-
- -

Default URL optinos

- -
class ApplicationController < ActionController::Base
-  # The options parameter is the hash passed in to 'url_for'
-  def default_url_options(options)
-    {:locale => I18n.locale}
-  end
-end
-
- -

Hashes

- -
session[:what]
-flash[:notice] = "Your session expired"
-params[:id]
-
- -

XML and JSON

- -
class UsersController < ApplicationController
-  def index
-    @users = User.all
-    respond_to do |format|
-      format.html # index.html.erb
-      format.xml  { render :xml => @users}
-      format.json { render :json => @users}
-    end
-  end
-end
-
- -

Redirection

- -
redirect_to action: 'show', id: @entry.id
-redirect_to root_url          # a path
-
- -

Render

- -
render nothing: true
-render template: 'products/show'
-render action: 'something'    # same as `file: 'my/something'`
-                              # Renders the template only, does not execute
-                              # the action
-
- -

Layouts

- -
# app/views/layouts/application.html.erb
-<%= content_for?(:content) ? yield :content : yield %>
-
-# app/views/layouts/news.html.erb
-<% content_for :content do %>
-   ...
-<% end %>
-<% render template: :'layouts/application' %>
-
- - - - - - - - diff --git a/_output/rdoc.html b/_output/rdoc.html deleted file mode 100644 index 2c52d6ba1..000000000 --- a/_output/rdoc.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - -

Rdoc

-

Basic RDoc format

- -
# Foo.
-# 
-# @example
-#
-#   y
-#   g
-#
-# @param [String] param_name The xx and xx.
-#
-# @see http://url.com
-#
-# @return [true] if so
-#
-# == Definition lists
-#
-# list::  hi.
-# +foo+:: parameterized
-#
-# == Definition lists
-# [foo]   also
-# [bar]   like this
-
- -

http://rdoc.rubyforge.org/RDoc/Markup.html

- - - - - - - - diff --git a/_output/rst.html b/_output/rst.html deleted file mode 100644 index 8ee7e31b3..000000000 --- a/_output/rst.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - -

ReStructuredText

-

Comments

- -
.. @theme 2010
-.. include:: ../themes/2010/common.rst
-.. contents::
-.. |substitute| replace:: replacement name
-
- -

Headings

- -
Heading
-=======
-
-.. class:: brief
-
-Hello there. |substitute| **This is bold**
-
-
- - Bullet list with a link_ (or `link with words`_)
- - Yes
-
-.. _link: http://link.org
-
- -

PDF page break

- -
.. raw:: pdf
-
-   PageBreak oneColumn
-
- -

Link targets

- -
Internal link target_.
-
-.. _target:
-
-This is where _target will end up in.
-
- -

Tables (?)

- -
.. class:: hash-table
-
-.. list-table::
-
-   * - :key:`Weekly work hours:`
-     - :val:`50 hours`
-   * - :key:`Cost per hour:`
-     - :val:`PhP 1,500/hour`
-   * - :key:`Weekly rate:`
-     - :val:`PhP 75,000/week`
-
- - - - - - - - diff --git a/_output/sequel.html b/_output/sequel.html deleted file mode 100644 index 8eabfb73b..000000000 --- a/_output/sequel.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - - -

Sequel

-

Cheat Sheet

-

Open a database

-
-  require 'rubygems'
-  require 'sequel'
-
-  DB = Sequel.sqlite('my_blog.db')
-  DB = Sequel.connect('postgres://user:password@localhost/my_db')
-  DB = Sequel.postgres('my_db', :user => 'user', :password => 'password', :host => 'localhost')
-  DB = Sequel.ado('mydb')
-
-

Open an SQLite memory database

-

-Without a filename argument, the sqlite adapter will setup a new sqlite -database in memory. -

-
-  DB = Sequel.sqlite
-
-

Logging SQL statements

-
-  require 'logger'
-  DB = Sequel.sqlite '', :loggers => [Logger.new($stdout)]
-  # or
-  DB.loggers << Logger.new(...)
-
-

Using raw SQL

-
-  DB.run "CREATE TABLE users (name VARCHAR(255) NOT NULL, age INT(3) NOT NULL)"
-  dataset = DB["SELECT age FROM users WHERE name = ?", name]
-  dataset.map(:age)
-  DB.fetch("SELECT name FROM users") do |row|
-    p row[:name]
-  end
-
-

Create a dataset

-
-  dataset = DB[:items]
-  dataset = DB.from(:items)
-
-

Most dataset methods are chainable

-
-  dataset = DB[:managers].where(:salary => 5000..10000).order(:name, :department)
-
-

Insert rows

-
-  dataset.insert(:name => 'Sharon', :grade => 50)
-
-

Retrieve rows

-
-  dataset.each{|r| p r}
-  dataset.all # => [{...}, {...}, ...]
-  dataset.first # => {...}
-
-

Update/Delete rows

-
-  dataset.filter(~:active).delete
-  dataset.filter('price < ?', 100).update(:active => true)
-
-

Datasets are Enumerable

-
-  dataset.map{|r| r[:name]}
-  dataset.map(:name) # same as above
-
-  dataset.inject(0){|sum, r| sum + r[:value]}
-  dataset.sum(:value) # same as above
-
-

Filtering (see also doc/dataset_filtering.rdoc)

-

Equality

-
-  dataset.filter(:name => 'abc')
-  dataset.filter('name = ?', 'abc')
-
-

Inequality

-
-  dataset.filter{value > 100}
-  dataset.exclude{value <= 100}
-
-

Inclusion

-
-  dataset.filter(:value => 50..100)
-  dataset.where{(value >= 50) & (value <= 100)}
-
-  dataset.where('value IN ?', [50,75,100])
-  dataset.where(:value=>[50,75,100])
-
-  dataset.where(:id=>other_dataset.select(:other_id))
-
-

Subselects as scalar values

-
-  dataset.where('price > (SELECT avg(price) + 100 FROM table)')
-  dataset.filter{price > dataset.select(avg(price) + 100)}
-
-

LIKE/Regexp

-
-  DB[:items].filter(:name.like('AL%'))
-  DB[:items].filter(:name => /^AL/)
-
-

AND/OR/NOT

-
-  DB[:items].filter{(x > 5) & (y > 10)}.sql 
-  # SELECT * FROM items WHERE ((x > 5) AND (y > 10))
-
-  DB[:items].filter({:x => 1, :y => 2}.sql_or & ~{:z => 3}).sql 
-  # SELECT * FROM items WHERE (((x = 1) OR (y = 2)) AND (z != 3))
-
-

Mathematical operators

-
-  DB[:items].filter((:x + :y) > :z).sql 
-  # SELECT * FROM items WHERE ((x + y) > z)
-
-  DB[:items].filter{price - 100 < avg(price)}.sql 
-  # SELECT * FROM items WHERE ((price - 100) < avg(price))
-
-

Ordering

-
-  dataset.order(:kind)
-  dataset.reverse_order(:kind)
-  dataset.order(:kind.desc, :name)
-
-

Limit/Offset

-
-  dataset.limit(30) # LIMIT 30
-  dataset.limit(30, 10) # LIMIT 30 OFFSET 10
-
-

Joins

-
-  DB[:items].left_outer_join(:categories, :id => :category_id).sql 
-  # SELECT * FROM items LEFT OUTER JOIN categories ON categories.id = items.category_id
-
-  DB[:items].join(:categories, :id => :category_id).join(:groups, :id => :items__group_id) 
-  # SELECT * FROM items INNER JOIN categories ON categories.id = items.category_id INNER JOIN groups ON groups.id = items.group_id
-
-

- -

-

Aggregate functions methods

-
-  dataset.count #=> record count
-  dataset.max(:price)
-  dataset.min(:price)
-  dataset.avg(:price)
-  dataset.sum(:stock)
-
-  dataset.group_and_count(:category)
-  dataset.group(:category).select(:category, :AVG.sql_function(:price))
-
-

SQL Functions / Literals

-
-  dataset.update(:updated_at => :NOW.sql_function)
-  dataset.update(:updated_at => 'NOW()'.lit)
-
-  dataset.update(:updated_at => "DateValue('1/1/2001')".lit)
-  dataset.update(:updated_at => :DateValue.sql_function('1/1/2001'))
-
-

Schema Manipulation

-
-  DB.create_table :items do
-    primary_key :id
-    String :name, :unique => true, :null => false
-    TrueClass :active, :default => true
-    foreign_key :category_id, :categories
-    DateTime :created_at
-    
-    index :created_at
-  end
-
-  DB.drop_table :items
-
-  DB.create_table :test do
-    String :zipcode
-    enum :system, :elements => ['mac', 'linux', 'windows']
-  end
-
-

Aliasing

-
-  DB[:items].select(:name.as(:item_name))
-  DB[:items].select(:name___item_name)
-  DB[:items___items_table].select(:items_table__name___item_name)
-  # SELECT items_table.name AS item_name FROM items AS items_table
-
-

Transactions

-
-  DB.transaction do
-    dataset.insert(:first_name => 'Inigo', :last_name => 'Montoya')
-    dataset.insert(:first_name => 'Farm', :last_name => 'Boy')
-  end # Either both are inserted or neither are inserted
-
-

-Database#transaction is re-entrant: -

-
-  DB.transaction do # BEGIN issued only here
-    DB.transaction
-      dataset << {:first_name => 'Inigo', :last_name => 'Montoya'}
-    end
-  end # COMMIT issued only here
-
-

-Transactions are aborted if an error is raised: -

-
-  DB.transaction do
-    raise "some error occurred"
-  end # ROLLBACK issued and the error is re-raised
-
-

-Transactions can also be aborted by raising Sequel::Rollback: -

-
-  DB.transaction do
-    raise(Sequel::Rollback) if something_bad_happened
-  end # ROLLBACK issued and no error raised
-
-

-Savepoints can be used if the database supports it: -

-
-  DB.transaction do
-    dataset << {:first_name => 'Farm', :last_name => 'Boy'} # Inserted
-    DB.transaction(:savepoint=>true) # This savepoint is rolled back
-      dataset << {:first_name => 'Inigo', :last_name => 'Montoya'} # Not inserted
-      raise(Sequel::Rollback) if something_bad_happened
-    end
-    dataset << {:first_name => 'Prince', :last_name => 'Humperdink'} # Inserted
-  end
-
-

Miscellaneous:

-
-  dataset.sql # "SELECT * FROM items"
-  dataset.delete_sql # "DELETE FROM items"
-  dataset.where(:name => 'sequel').exists # "EXISTS ( SELECT * FROM items WHERE name = 'sequel' )"
-  dataset.columns #=> array of columns in the result set, does a SELECT
-  DB.schema(:items) => [[:id, {:type=>:integer, ...}], [:name, {:type=>:string, ...}], ...]
-
-

Documents

-
-  http://sequel.rubyforge.org/rdoc/files/doc/association_basics_rdoc.html
-  http://sequel.rubyforge.org/rdoc/classes/Sequel/Schema/Generator.html
-  http://sequel.rubyforge.org/rdoc/files/doc/validations_rdoc.html
-  http://sequel.rubyforge.org/rdoc/classes/Sequel/Model.html
-
-

Alter table

-
-  database.alter_table :deals do
-    add_column :name, String
-    drop_column :column_name
-    rename_column :from, :to
-
-    add_constraint :valid_name, :name.like('A%')
-    drop_constraint :constraint
-
-    add_full_text_index :body
-    add_spacial_index [columns]
-
-    add_index :price
-    drop_index :index
-
-    add_foreign_key :artist_id, :table
-    add_primary_key :id
-    add_unique_constraint [columns]
-    set_column_allow_null :foo, false
-    set_column_default :title, ''
-
-    set_column_type :price, 'char(10)'
-  end
-
-

Model associations

-
-  class Deal < Sequel::Model
-
-    # Us (left) <=> Them (right)
-    many_to_many  :images,
-      left_id:    :deal_id,
-      right_id:   :image_id,
-      join_table: :image_links
-
-    one_to_many   :files,
-      key:        :deal_id,
-      class:      :DataFile,
-
-    many_to_one   :parent, class: self
-    one_to_many   :children, key: :parent_id, class: self
-
-    one_to_many :gold_albums, class: :Album do |ds|
-      ds.filter { copies_sold > 50000 }
-    end
-
-

-Provided by many_to_many -

-
-  Deal[1].images
-  Deal[1].add_image
-  Deal[1].remove_image
-  Deal[1].remove_all_images
-
-

Validations

-
-    def validate
-      super
-      errors.add(:name, 'cannot be empty') if !name || name.empty?
-
-      validates_presence [:title, :site]
-      validates_unique :name
-      validates_format /\Ahttps?:\/\//, :website, :message=>'is not a valid URL'
-      validates_includes %w(a b c), :type
-      validates_integer :rating
-      validates_numeric :number
-      validates_type String, [:title, :description]
-
-      validates_integer :rating  if new?
-
-      # options: :message =>, :allow_nil =>, :allow_blank =>,
-      #          :allow_missing =>,
-
-      validates_exact_length 17, :isbn
-      validates_min_length 3, :name
-      validates_max_length 100, :name
-      validates_length_range 3..100, :name
-      
-      # Setter override
-      def filename=(name)
-        @values[:filename] = name
-      end
-    end
-  end
-
-  deal.errors
-
-

Model stuff

-
-  deal = Deal[1]
-  deal.changed_columns
-  deal.destory  # Calls hooks
-  deal.delete   # No hooks
-  deal.exists?
-  deal.new?
-  deal.hash  # Only uniques
-  deal.keys  #=> [:id, :name]
-  deal.modified!
-  deal.modified?
-
-  deal.lock!
-
-

Callbacks

-
-  before_create
-  after_create
-
-  before_validation
-  after_validation
-  before_save
-  before_update
-  UPDATE QUERY
-  after_update
-  after_save
-
-  before_destroy
-  DELETE QUERY
-  after_destroy
-
-

Schema

-
-  class Deal < Sequel::Model
-    set_schema do
-      primary_key :id
-      primary_key [:id, :title]
-      String :name, primary_key: true
-      
-      String  :title
-      Numeric :price
-      DateTime :expires
-
-      unique :whatever
-      check(:price) { num > 0 }
-
-      foreign_key :artist_id
-      String :artist_name, key: :id
-
-      index :title
-      index [:artist_id, :name]
-      full_text_index :title
-
-      # String, Integer, Fixnum, Bignum, Float, Numeric, BigDecimal,
-      # Date, DateTime, Time, File, TrueClass, FalseClass
-    end
-  end
-
-

Unrestrict primary key

-
-  Category.create id: 'travel'   # error
-  Category.unrestrict_primary_key
-  Category.create id: 'travel'   # ok
-
- - - - - - - - diff --git a/_output/style.css b/_output/style.css deleted file mode 100644 index 4a0b74bf0..000000000 --- a/_output/style.css +++ /dev/null @@ -1 +0,0 @@ -body{font-family:"pt sans",sans-serif;font-size:14px;line-height:1.5}html{background:#505060}body{width:800px;margin:20px auto;padding:20px;-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;-ms-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;-moz-box-shadow:0 2px 3px rgba(0,0,0,0.2);-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.2);-o-box-shadow:0 2px 3px rgba(0,0,0,0.2);box-shadow:0 2px 3px rgba(0,0,0,0.2);background:#fafafa;color:#333}p,ul,ol,pre{margin:15px 0}h1,h2,h3,h4,h5,h6{margin:40px 0 15px 0}h1{font-family:georgia,serif;text-align:center;font-size:24pt;color:#aaa;font-style:italic;font-weight:normal;margin:10px 0;padding:10px 0;border-bottom:dotted 1px #ddd;border-top:dotted 1px #ddd}h2,h3{color:#88a;font-size:1.5em;border-bottom:solid 1px #ddd;padding-bottom:3px}h3{font-size:1.3em}pre,code{font-family:monaco,monospace;font-size:12px;color:#444}pre{line-height:1.6;background:#f7f7f2;padding:10px 35px;-moz-box-shadow:inset 0 0 5px rgba(0,0,0,0.1);-webkit-box-shadow:inset 0 0 5px rgba(0,0,0,0.1);-o-box-shadow:inset 0 0 5px rgba(0,0,0,0.1);box-shadow:inset 0 0 5px rgba(0,0,0,0.1);overflow-x:auto;margin-left:-20px;margin-right:-20px}h2 + pre,h3 + pre{border-top:solid 2px #c0c0dd;margin-top:-16px}ul.pages,ul.pages li{margin:0;padding:0;list-style-type:none}ul.pages{overflow:hidden;margin:40px 0}ul.pages li{width:20%;float:left}ul.pages a{display:block;text-decoration:none;padding:2px 5px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-ms-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}ul.pages a:hover{background:#eee}ul.pages li:first-letter{text-transform:uppercase}.str{color:#080}.kwd{color:#008}.com{color:#7bd;text-shadow:1px 1px 0 rgba(255,255,255,0.3)}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}} diff --git a/_output/textile.html b/_output/textile.html deleted file mode 100644 index be591472a..000000000 --- a/_output/textile.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - -

Textile

-

Pre blocks

- -
<pre>
-I am <b>very serious.</b> -- this will get escaped.
-</pre>
-
- -

Line breaks

- -
Line breaks.
-Just break the lines.
-
- -

Entities

- -
one(TM), two(R), three(C).
-
- -

Inlines

- -
_em_ *strong* __bold-italic__. ??citation??.
-@code@. -strikehtrough-. +insertion+.
-%span%. %{color:red}formatting%.
-"Hypertext":index.html
-"Text link":link
-
-[link]http://link.com
-
-!image.jpg!
-!image.jpg(title text)!
-!image.jpg!:link.html
-
-!>right.jpg!
-
- -

Horizontal line

- -
--
-
- -

Blocks

- -
h1. Header 1
-
-h2. Header 2
-
-bq. Blockquote
-
-p(classname). Class.
-
-p(#id). ID.
-
- -

Lists

- -
## ordered list
-
-* unordered list
-
- -

Footnotes

- -
Footnotes[1].
-
-fn1. Something.
-
- - - - - - - - diff --git a/_output/tig.html b/_output/tig.html deleted file mode 100644 index 1aafa8ef6..000000000 --- a/_output/tig.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - -

Tig

-

Tig shortcuts

- -

Invocation

- -
tig blame FILE
-tig master        # Show a branch
-tig test..master  # Show difference between two bracnhes
-tig FILE          # Show history of file
-tig v0.0.3:README # Show contents of file in a specific revision
-
- -

All views

- - - -

m - Main view - * D - Toggle between date display modes - * A - Toggle between author display modes - * C - Cherry pick a commit

- -

S - Stage view

- - - -

H - Branch view

- - - - - - - - - - diff --git a/_output/tmux.html b/_output/tmux.html deleted file mode 100644 index dfd8f5940..000000000 --- a/_output/tmux.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - -

tmux Terminal Multiplexer

-

Commands

- -
$ tmux
-  -u        # UTF8 mode
-  -S ~/.tmux.socket
-
-$ tmux attach
-
- -

Help

- -
C-b ?
-
- -

Scrolling

- -
C-b [       # Enter scroll mode then press up and down
-
- -

Copy/paste

- -
C-b [       # 1. Enter scroll mode first.
-Space       # 2. Start selecting and move around.
-Enter       # 3. Press enter to copy.
-C-b ]       # Paste
-
- -

Panes

- -
C-b v       # vert
-C-b n       # horiz
-C-b hkjl    # navigation
-C-b HJKL    # resize
-C-b o       # next window
-C-b x       # close pane
-
-C-b { or }  # move windows around
-
- -

Windows

- -
C-b c       # New window
-C-b 1       # Go to window 1
-
- -

Detach/attach

- -
C-b d       # detatch
-C-b ( )     # Switch through sessions
-$ tmux attach
-
- -

Niceties

- -
C-b t    # Time
-
- - - - - - - - diff --git a/_output/ubuntu.html b/_output/ubuntu.html deleted file mode 100644 index 12da20b8d..000000000 --- a/_output/ubuntu.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - -

Ubuntu/Debian

-

Aptitude stuff

- -
aptitude search mysql       # Look for something
-dpkg -S `which tsclient`    # What package does it belong to?
-dpkg -L aria2c              # What does this package provide?
-dpkg -i *.deb               # Install a deb file
-
- -

Apt archives path

- -
/var/cache/apt/archives
-
- - - - - - - - diff --git a/_output/unicode.txt b/_output/unicode.txt deleted file mode 100644 index 57bfcf6db..000000000 --- a/_output/unicode.txt +++ /dev/null @@ -1,19 +0,0 @@ - ▲▼▶ - - ⬅⬆⬇ - - ◢ ◣ ◤ ◥ - - : «» XOR ‹›, (), [], •, ⌘, ⌥, ▲▼, ▸▹, ◇ XOR ◆, ◐◑◒◓ ◢ ◣ ◤ ◥, ★ ☆ , ♠♥♣♦, ⚐⚑, ✂ - - - ࣾ home ࣾ - ℹ information ℹ - ♡ heart ♡ - ⚙ cog or gear ⚙ - ⚿ key ⚿ - ✉ envelope ✉ - ✎ pencil ✎ - ✓ check or tick mark ✓ - ❌ cross mark ❌ - 💬 speech balloon 💬 diff --git a/_output/vim.html b/_output/vim.html deleted file mode 100644 index e49eef365..000000000 --- a/_output/vim.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - -

vim

-
.    - repeat last command
-]p   - paste under the current indentation level
-
- -

Motions

- -
vip           - Select paragraph
-vipipipip     - Select more
-
-ap            - a paragraph
-ip            - inner paragraph
-
-{a,i}p        - Paragraph
-{a,i}w        - Word
-{a,i}s        - Sentence
-
-ab            - A block [(
-aB            - A block in [{
-at            - A XML tag block
-a[ ( { <      - A [], (), or {} block
-a' " `        - A quoted string
-
- -

Example:

- -
yip - Yank inner paragraph
-yap - Yank paragraph (including newline)
-
- -

SCSS!

- -
va{=     - reindent block
-
- - - - - - - - diff --git a/_output/zsh.html b/_output/zsh.html deleted file mode 100644 index de56266d7..000000000 --- a/_output/zsh.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - -

ZSH

-

Stuff

- -
!!                  Last command (sudo !!)
-
-!*                 Last command's parameters (vim !*)
-!^                 Last command's first parameter
-!$                 Last command's last parameter
-
-!?ls<tab>          Command and params of last `ls` command (sudo !?mv<tab>)
-!?ls?:*<tab>       Params of last `ls` command
-
-*(m0)              Last modified today
-*(m-4)             Last modified <4 days ago
-
- -

Change default shell

- -
chsh -s `which zsh`
-
- - - - - - - - diff --git a/rails.md b/rails.md index bf584d00d..1ea1668fd 100644 --- a/rails.md +++ b/rails.md @@ -111,10 +111,25 @@ http://apidock.com/rails/ActionController/Base render nothing: true render template: 'products/show' + render status: 500 + render status: :forbidden + render text: '...' + render layout: 'special_layout' + render layout: false render action: 'something' # same as `file: 'my/something'` # Renders the template only, does not execute # the action + render json: object + render xml: object + + render location: photo_url(photo) + +### Head-only responses + + head :bad_request + head :created, location: photo_path(@photo) + Layouts -------