(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.
var parser = document.createElement('a'); | |
parser.href = "http://example.com:3000/pathname/?search=test#hash"; | |
parser.protocol; // => "http:" | |
parser.hostname; // => "example.com" | |
parser.port; // => "3000" | |
parser.pathname; // => "/pathname/" | |
parser.search; // => "?search=test" | |
parser.hash; // => "#hash" | |
parser.host; // => "example.com:3000" |
#!/usr/bin/env ruby | |
require 'english' | |
require 'rubocop' | |
ADDED_OR_MODIFIED = /A|AM|^M/.freeze | |
changed_files = `git status --porcelain`.split(/\n/). | |
select { |file_name_with_status| | |
file_name_with_status =~ ADDED_OR_MODIFIED |
var scales = { | |
'natural major': [0,2,4,5,7,9,11,12], | |
'ionian': [0,2,4,5,7,9,11,12], | |
'major': [0,2,4,5,7,9,11,12], | |
'chromatic': [0,1,2,3,4,5,6,7,8,9,10,11,12], | |
'spanish 8 tone': [0,1,3,4,5,6,8,10,12], | |
'flamenco': [0,1,3,4,5,7,8,10,12], | |
'symmetrical': [0,1,3,4,6,7,9,10,12], | |
'inverted diminished': [0,1,3,4,6,7,9,10,12], | |
'diminished': [0,2,3,5,6,8,9,11,12], |
(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.
# AR transactions wrap a block of code, issuing a rollback if any errors are raised. | |
# | |
#(note: this gist makes use of SecondBase https://github.com/customink/secondbase) | |
require 'secondbase/model' | |
AR = ActiveRecord::Base | |
SB = SecondBase::Base | |
# The transaction returns the return value of the block | |
AR.transaction { 14 } #=> 14 |
Inspired by "Parsing CSS with Parsec".
Just quick notes and code that you can play with in REPL.
By @kachayev
var Dialog = React.createClass({ | |
mixins: [Portal], | |
createPortal: function() { | |
this.dialog = $(this.portalNode).dialog({ | |
autoOpen: false, | |
title: this.props.title, | |
close: this.props.onClose | |
}).data('ui-dialog'); | |
}, |
// ------------ | |
// counterStore.js | |
// ------------ | |
import { | |
INCREMENT_COUNTER, | |
DECREMENT_COUNTER | |
} from '../constants/ActionTypes'; | |
const initialState = { counter: 0 }; |
I would recommend @acdlite's redux-actions over the methods suggested in this Gist.
The methods below can break hot-reloading and don't support Promise-based actions.
Even though 'redux-actions' still uses constants, I've come to terms with the fact that constants can be good, especially in bigger projects. You can reduce boilerplate in different places, as described in the redux docs here: http://gaearon.github.io/redux/docs/recipes/ReducingBoilerplate.html