Skip to content

Instantly share code, notes, and snippets.

@christiantakle
christiantakle / gist:9854444
Created March 29, 2014 13:22
Feedback on http://t.co/sFZYBp08bV - Sorry for being such an advocate for tap :)
def call(form_object)
form_object.validate!
if User.where(email: form_object.email).exists?
form_object.errros.add(:email, 'email already taken')
end
# Forgot to access the company_name attribute on the form_object
company = Company.create!(name: form_object.company_name)
User.create!(name: form_object.name, email: form_object.email, company: company)
@christiantakle
christiantakle / thunkify
Created March 31, 2014 15:33
//+ thunkify :: (... -> IO ()) -> ... -> ... -> IO ()
//+ thunkify :: (... -> IO ()) -> ... -> ... -> IO ()
function thunkify(fn /*, ... */) {
args = [].slice.call(arguments, 1);
return function(/* ... */) {
fn.apply(this, args.concat([].slice.call(arguments, 0)));
};
}
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"
# Generates the text of asetniop.vim
singles =
a: "a"
s: "s"
e: "d"
t: "f"
n: "j"
i: "k"
o: "l"
p: ";"
@christiantakle
christiantakle / fromDomain
Created July 3, 2014 11:51
Naive implementaion of referrer tracking
//-- Polyfill ---------------------------------------------------------
if ( !String.prototype.contains ) {
String.prototype.contains = function() {
return String.prototype.indexOf.apply( this, arguments ) !== -1;
};
}
//-- Module -----------------------------------------------------------
(function(exports, document, undefined) {
var namespace = 'tools';
@christiantakle
christiantakle / First class z-index (CSS)
Created August 6, 2014 08:05
A good way keeping control of your used z-indexs to avoid confusing or bugs by choosing arbitary numbers
// _config.scss
$z-layers: (
bottomless-pit: -9999,
default: 1,
dropdown: 3000,
overlay: 4000
modal: 4001
);
// _functions.scss
@christiantakle
christiantakle / Looking at instagram
Created August 8, 2014 08:21
@floydophone What is the style workflow @ instagram I see no styling loading in the network tab - but you're using class' in the markup.
// In chrome dev-console
[].splice
.call(document.styleSheets,0)
.map(function(x){ return x.href })
// => [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
@christiantakle
christiantakle / Module: -> Bootstrap Grid Interface for ReactJS.js
Last active August 29, 2015 14:07
Generic Bootstrap Grid wrapper for ReactJS, WIP
(function (exports, DOM, undefined) {
'use strict';
var namespace = 'ReactLayout';
// Data Column = Column { size :: Integer, component :: ReactComponent }
//-- Constants ------------------------------------------------------
var COLUMNS_TOTAL = 12,
CONTAINER = 'row-fluid',
CELL = 'span';
{
"dependencies": {
"jshint": "latest",
"uglifyjs": "latest",
"watch": "latest"
},
"config": {
"github_url": "https://api.github.com/repos/MarkBiesheuvel/markbiesheuvel.nl/commits?page=1&per_page=10",
"maps_url": "https://maps.googleapis.com/maps/api/staticmap?size=640x200&zoom=7&markers=color%3Ablue%7Clabel%3AH%7C51.469941%2C5.472258&markers=color%3Ayellow%7Clabel%3AW%7C51.574344%2C5.13781",
},
//-- Helpers ----------------------------------------------------------
@function push-get-size($key) {
$sizes: map-get($push-config, sizes);
@return map-get($sizes, $key);
}
//-- Config -----------------------------------------------------------
$push-spacing: util-rhythm(1);
$push-key-half: "-_5x"; // 0.5 | half
$push-key-double: "-2x";