Opinions are like assholes, every one has got one.
This one is mine.
Punctuation is a bikeshed. Put your semicolons, whitespace, and commas where you like them.
| =Navigating= | |
| visit('/projects') | |
| visit(post_comments_path(post)) | |
| =Clicking links and buttons= | |
| click_link('id-of-link') | |
| click_link('Link Text') | |
| click_button('Save') | |
| click('Link Text') # Click either a link or a button | |
| click('Button Value') |
| echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
| . ~/.bashrc | |
| mkdir ~/local | |
| mkdir ~/node-latest-install | |
| cd ~/node-latest-install | |
| curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
| ./configure --prefix=~/local | |
| make install # ok, fine, this step probably takes more than 30 seconds... | |
| curl https://www.npmjs.org/install.sh | sh |
| # | |
| # Wide-open CORS config for nginx | |
| # | |
| location / { | |
| if ($request_method = 'OPTIONS') { | |
| add_header 'Access-Control-Allow-Origin' '*'; | |
| # |
| // Get a reference to the image element | |
| var elephant = document.getElementById("elephant"); | |
| // Take action when the image has loaded | |
| elephant.addEventListener("load", function () { | |
| var imgCanvas = document.createElement("canvas"), | |
| imgContext = imgCanvas.getContext("2d"); | |
| // Make sure canvas is as big as the picture | |
| imgCanvas.width = elephant.width; |
| //addEventListener polyfill 1.0 / Eirik Backer / MIT Licence | |
| (function(win, doc){ | |
| if(win.addEventListener)return; //No need to polyfill | |
| function docHijack(p){var old = doc[p];doc[p] = function(v){return addListen(old(v))}} | |
| function addEvent(on, fn, self){ | |
| return (self = this).attachEvent('on' + on, function(e){ | |
| var e = e || win.event; | |
| e.preventDefault = e.preventDefault || function(){e.returnValue = false} | |
| e.stopPropagation = e.stopPropagation || function(){e.cancelBubble = true} |
| /** | |
| * Adapted from gist by josedaniel | |
| * https://gist.github.com/1001363 | |
| */ | |
| if (!window.localStorage){ | |
| function createCookie(name,value,days) { | |
| if (days) { | |
| var date = new Date(); | |
| date.setTime(date.getTime()+(days*24*60*60*1000)); | |
| var expires = "; expires="+date.toGMTString(); |
| meteor create --example todos | |
| meteor bundle myapp.tgz | |
| tar xzf myapp.tgz | |
| cd bundle | |
| (create package json with settings below) | |
| jitsu databases create mongo <dbname> | |
| (grab dbstring) | |
| jitsu env set PORT 3000 | |
| jitsu env set MONGO_URL <dbstring> | |
| jitsu deploy |
To make this steak:
| /** | |
| * TaskRepository class deals with task persistence | |
| */ | |
| function TaskRepository() { | |
| this.tasks = []; | |
| this.nextId = 1; | |
| } | |
| /** | |
| * Find a task by id | |
| * Param: id of the task to find |