Skip to content

Instantly share code, notes, and snippets.

@friedemannsommer
friedemannsommer / google-cloud-pubsub.d.ts
Last active June 12, 2017 11:48
declaration file for Google Cloud PubSub
declare module '@google-cloud/pubsub' {
import stream from 'stream'
import events from 'events'
interface ConfigurationObject extends Object {
projectId?: string
keyFilename?: string
email?: string
credentials?: CredentialsObject
autoRetry?: boolean
@friedemannsommer
friedemannsommer / merge-sort.js
Created April 3, 2017 12:21
Javascript merge sort implementation
/* usage example */
console.log(
mergeSort(
[1, 8, 6, 8, 6, 4, 2, 10, 89, 5456, 55],
(a, b) => {
if (a > b) {
return -1
} else if (a < b) {
return 1
}
@friedemannsommer
friedemannsommer / server.js
Last active December 15, 2016 16:02
dependency free node file server (only for debugging purpose)
const http = require('http')
const path = require('path')
const url = require('url')
const fs = require('fs')
const port = 8080
const mimeTypes = {
'.html': 'text/html',
'.js': 'application/javascript',
'.css': 'text/css',
/**
* @url http://stackoverflow.com/questions/1855884/determine-font-color-based-on-background-color
* @url http://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color
**/
function perceptiveLuminance(color) {
return 1 - (0.299 * color.r + 0.587 * color.g + 0.114 * color.b) / 255
}
function getFontColor(backgroundColor) {
if (perceptiveLuminance(backgroundColor) < 0.5) {
function stacktrace() {
var stack;
function trace(fn) {
return (typeof fn !== 'function')
? []
: trace(fn.caller).concat([fn.toString().split('(')[0].substring(9)]);
}
try {
function parseUrl(uri) {
// @source http://jsperf.com/url-parsing/34
var matches = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/.exec(uri);
return {
href: uri || '',
host: matches[10] || '',
hash: matches[17] || '',
port: matches[12] || '',
origin: (matches[4] || '') + (matches[5] || '') + (matches[10] || ''),
search: matches[16] || '',
function forEach(list, callback) {
var keys = Object.keys(list);
var index = -1;
var length = keys.length >>> 0;
while (++index < length) {
callback(list[keys[index]], keys[index], list);
}
}
function forEach(list, callback) {
var index = -1;
var length = list.length >>> 0;
while (++index < length) {
callback(list[index], index, list);
}
}
function functionArguments(fn) {
if (fn.length > 0) {
var fnString = Function.prototype.toString.call(fn);
var firstIndex = fnString.indexOf('(');
var lastIndex = fnString.indexOf(')');
if (firstIndex > -1 && lastIndex > firstIndex) {
firstIndex++;
return fnString.substr(firstIndex, lastIndex - firstIndex).replace(/\s+/g, '').split(',');
#!/bin/bash
# Some help from the various places like these.
# http://www.zimuel.it/install-php-7/
# http://www.hashbangcode.com/blog/compiling-and-installing-php7-ubuntu
# https://gist.github.com/m1st0/1c41b8d0eb42169ce71a
sudo apt-get update
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password development'