Using Python's built-in defaultdict we can easily define a tree data structure:
def tree(): return defaultdict(tree)
That's it!
Using Python's built-in defaultdict we can easily define a tree data structure:
def tree(): return defaultdict(tree)
That's it!
/ A simplistic way of loading and rendering HAML partials (header.haml, footer.haml, nav.haml... you name it) without Rails | |
/ Useful when using tools like LiveReload http://livereload.com/ | |
/ but don't want to configure a web server just to use PHP include/require constructs (discussion http://help.livereload.com/discussions/questions/22-haml-partials) | |
/ It could be improved/simplified using a helper http://stackoverflow.com/questions/5436769/partial-haml-templating-in-ruby-without-rails/5436973#5436973 | |
/ Check out the Jade version https://gist.github.com/2593727 | |
%html | |
%body | |
%header | |
= Haml::Engine.new(File.read('/path/to/your/partial.haml')).render |
# When an RSpec test like this fails, | |
# | |
# @my_array.should == [@some_model, @some_model2] | |
# | |
# RSpec will call inspect on each of the objects to "help" you figure out | |
# what went wrong. Well, inspect will usually dump a TON OF SHIT and make trying | |
# to figure out why `@my_array` is not made up of `@some_model` and `@some_model2`. | |
# | |
# This little module and technique helps get around that. It will redefine `inspect` | |
# if you include it in your model object. |
This is a handy reference for setting up and using git to contribute to projects on GitHub. It is by no means a complete guide to using git; use http://gitref.org for that.
Update: This site provides some excellent visualizations of what various git commands do. Highly recommended.
First run the following commands, using your real name and GitHub email address:
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
#!/bin/bash | |
xdotool search --name firefox key --window %@ F5 |
/* eslint no-param-reassign:0 */ | |
import React from 'react'; | |
import _ from 'lodash'; | |
const classIdSplit = /([\.#]?[a-zA-Z0-9_:-]+)/; | |
const notClassId = /^\.|#/; | |
export function h(tagName, properties, children = []) { | |
/** |
// License: MIT, feel free to use it! | |
const Intercom = require('intercom-client'); | |
const appId = 'APP_ID' | |
const apiKey = 'APP_KEY' | |
const client = new Intercom.Client(appId, apiKey); | |
const async = require('async-q') | |
//REF: https://developers.intercom.com/reference#iterating-over-all-users | |
//WARNING: you can only have one scroll working at once. you need to wait for that scroll to clear to try again |
var pg = require('pg'), | |
url = require('url'), | |
SocksConnection = require('socksjs'); | |
var db = url.parse(process.env.REDSHIFT_CONN_STRING), | |
dbAuth = db.auth, | |
dbUsername = dbAuth.split(':')[0], | |
dbPassword = dbAuth.split(':')[1], | |
dbName = db.pathname.replace('/', ''); |