I've been trying to understand how to setup systems from
the ground up on Ubuntu. I just installed redis onto
the box and here's how I did it and some things to look
out for.
To install:
| // Generate unique IDs for use as pseudo-private/protected names. | |
| // Similar in concept to | |
| // <http://wiki.ecmascript.org/doku.php?id=strawman:names>. | |
| // | |
| // The goals of this function are twofold: | |
| // | |
| // * Provide a way to generate a string guaranteed to be unique when compared | |
| // to other strings generated by this function. | |
| // * Make the string complex enough that it is highly unlikely to be | |
| // accidentally duplicated by hand (this is key if you're using `ID` |
| document.getElementsByTagName('button')[0].onclick = function () { | |
| scrollTo(document.body, 0, 1250); | |
| } | |
| function scrollTo(element, to, duration) { | |
| var start = element.scrollTop, | |
| change = to - start, | |
| currentTime = 0, | |
| increment = 20; | |
| /* Polyfill indexOf. */ | |
| var indexOf; | |
| if (typeof Array.prototype.indexOf === 'function') { | |
| indexOf = function (haystack, needle) { | |
| return haystack.indexOf(needle); | |
| }; | |
| } else { | |
| indexOf = function (haystack, needle) { | |
| var i = 0, length = haystack.length, idx = -1, found = false; |
| import Foundation | |
| struct EquatableValueSequence<T: Equatable> { | |
| static func ==(lhs: EquatableValueSequence<T>, rhs: T) -> Bool { | |
| return lhs.values.contains(rhs) | |
| } | |
| static func ==(lhs: T, rhs: EquatableValueSequence<T>) -> Bool { | |
| return rhs == lhs | |
| } |
| //: # Swift 3: Base64 encoding and decoding | |
| import Foundation | |
| extension String { | |
| //: ### Base64 encoding a string | |
| func base64Encoded() -> String? { | |
| if let data = self.data(using: .utf8) { | |
| return data.base64EncodedString() | |
| } | |
| return nil |
| // | |
| // HMAC.swift | |
| // | |
| // Created by Mihael Isaev on 21.04.15. | |
| // Copyright (c) 2014 Mihael Isaev inc. All rights reserved. | |
| // | |
| // *********************************************************** | |
| // | |
| // How to import CommonCrypto in Swift project without Obj-c briging header | |
| // |
| /* | |
| I've wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace | |
| so it's better encapsulated. Now you can have multiple random number generators | |
| and they won't stomp all over eachother's state. | |
| If you want to use this as a substitute for Math.random(), use the random() | |
| method like so: | |
| var m = new MersenneTwister(); |
| // getComponent is a function that returns a promise for a component | |
| // It will not be called until the first mount | |
| function asyncComponent(getComponent) { | |
| return class AsyncComponent extends React.Component { | |
| static Component = null; | |
| state = { Component: AsyncComponent.Component }; | |
| componentWillMount() { | |
| if (!this.state.Component) { | |
| getComponent().then(Component => { |