Skip to content

Instantly share code, notes, and snippets.

@f5io
f5io / emitter.js
Created February 24, 2014 09:58
Publish/Subscribe implementation
var _listeners = {};
function on() {
var args = [].slice.call(arguments);
var ev = args[0],
fn = args[1],
scope = args[2];
_listeners[ev] = _listeners[ev] || [];
_listeners[ev].push({ fn : fn, scope : scope });
@f5io
f5io / angrify.js
Last active August 29, 2015 14:13
Angry functions in JavaScript.
/**
* A quick implementation of this idea in JavaScript.
* https://www.reddit.com/r/shittyprogramming/comments/2sxbh9/program_with_all_obscure_c_features_ideas/cnu1qpm
*/
function angrify(fn) {
return function() {
try {
fn.apply(this, arguments);
} catch(e) {
@f5io
f5io / craigrobbins.js
Last active August 29, 2015 14:19
Open up craigrobbins.co.uk and paste the following in the console. Then click anywhere!
(function($) {
var audio = new Audio();
audio.src = 'data:audio/mp3;base64,SUQzAwAAAAAAEFRDT04AAAAGAAAAT3RoZXL/+pDAv8oAABVeLuYZKgACvhglw7WgAfBYg33wCvAG/wgQAuPAxwAJgfwFB4Eo4DQH/AzIcL5hb8AUU/8A6oBIWAMIEKAmH//ACTgHSwJAACgYtgFAn/+AMcAKgBfcLnA1WOM3///ELhq8d4rcd5cE7ltD///0iPFxkoGIBBgarHG4euK5////+JwFxjljJnyAFQMSDsNwvuM4MgFkYbf/////////mwncWeKXGUFkHiaFwF8LTBjyTEAx8DIClBjx3mIoHKAhHc0yBJlLQdGhx9RUFCQ5eGDDBhREMEAkSNpCRlnyQIYDJARpFRhA5hxBlhoZbKh4xgkQkig6CiY0NOjlMKsGZZtEo7GEUkCuBpSvAyB5ZhmkRs2ps1IY7GT5kxhii4lTMoEW+ZMiYkaYkmPLyVeJa0ArXn+M2jKxIBKiJEChLchQEUCTDjyI4FhhIPLbITSIeJAQEvTUeSkjRdRChsDAV3F4Em3kYnflE4HqEJsJxYlVAIPERQZkNiARDBEZADDwsEphZdItKcIHNgoyAWbkqazjJzO+4HUB3xn/+pLATywXg9VkwS4N50mCwRflwd3pMcECSzPjMpk51kgQ4A2MyAM6EgAudpBxMjCgEgRkcTVAYZMSVFCZztxikBlwZlz5gjANNAIUCgw6FNghLLGDAGjTGDOjYkLAlYUrS1hEAdRMl9QMaRdBAVMFc4NIGXFOeyV+X5QoGg4EDu23yFS5Ejy+8Ntaa24qdMrnYd4YlhODgmT/MYgEMy2mO8oOEmFMTQzMOBqMbDEAy6aEzGmFBjqCOkRlA4JQoynl5DHzIyZfMERAIIAQhBQKIhUIPQ4xBwErQIRYxsYM3gDMQA5ZsN+cDACkyo8250MHiIINBzHiwIPBhc9KUADy5RkQachcdE
import { h, render, CustomComponent } from 'yolk';
const createCustomComponent = CustomComponent.extend;
const Custom = createCustomComponent({
onMount (props, node) {
this._instance = {
update: (props) => {
this._instance.currentProps = props;
console.log(this._instance.currentProps);
@f5io
f5io / angular-placeholder.js
Created November 1, 2013 12:35
AngularJS placeholder shiv directive.
angular.module('namespace.directives', []).directive('placeholder', ['$timeout', function($timeout) {
var i = document.createElement('input'),
support = ('placeholder' in i);
if (support) return {};
return {
restrict: 'A',
link: function(scope, elm, attrs) {
if (attrs.type === 'password') {
return;
}
@f5io
f5io / widowmaker.js
Created January 3, 2014 11:07
Trollololololololololol
(function(d) {
var tags = 'h1 h2 h3 h4 h5 h6 p div'.split(' ');
var elems = [];
for (var t in tags) {
elems = elems.concat(Array.prototype.slice.call(d.getElementsByTagName(tags[t])));
}
for (var e in elems) {
const zip = (arr, length = 2) =>
Array.from({ length }, (_, i) =>
arr.filter((_, j) =>
j % length === i));
const memoize = (fn) => {
const cache = new Map();
const memo = (...a) => {
const key = a.reduce((hash, val) =>
hash += val === Object(val) ?
JSON.stringify(val) :
val, '');
if (!cache.has(key)) cache.set(key, fn(...a));
return cache.get(key);
}
@f5io
f5io / ab.rb
Last active August 30, 2016 11:53
require 'formula'
class Ab < Formula
homepage 'http://httpd.apache.org/docs/trunk/programs/ab.html'
url 'http://www.apache.org/dist/httpd/httpd-2.4.23.tar.bz2'
sha1 '5101be34ac4a509b245adb70a56690a84fcc4e7f'
def patches
{
# The ab tool of the latest stable httpd (2.4.2) does not work
require 'formula'
class Ab < Formula
homepage 'http://httpd.apache.org/docs/trunk/programs/ab.html'
url 'http://www.apache.org/dist/httpd/httpd-2.4.23.tar.bz2'
sha1 '5101be34ac4a509b245adb70a56690a84fcc4e7f'
def patches
{
# The ab tool of the latest stable httpd (2.4.2) does not work