Skip to content

Instantly share code, notes, and snippets.

import * as React from 'react';
import * as GoogleWebAuth from 'expo-auth-session/providers/google';
import * as GoogleAppAuth from "expo-google-app-auth";
import * as WebBrowser from 'expo-web-browser';
import * as AppAuth from 'expo-app-auth';
import { Platform } from 'react-native';
import Constants, {AppOwnership} from 'expo-constants';
// Call this function once in your Component which handles the Google authentication
// flow; typically done outside of the component decleration (ie: just after your
export function fromObject<T extends jspb.Message, U>(c: new () => T, obj: U): T {
const instance = new c();
Object.keys(obj)
.forEach(key => {
const setterName = makeSetterFuncName(key);
(instance as any)[setterName] = (obj as any)[key];
});
return instance;
}
- Setup Google Compute Account
- Create micro-f1 instance
- SSH into instance (Debian/Jessy)
- Install apt-get deps from https://github.com/eugeneware/docker-wordpress-nginx
- install fail2ban (https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04)
- create a wordpress rule in jails.local
```
[wordpress]
enabled = true
port = http,https
@jonnyreeves
jonnyreeves / counter.js
Created May 30, 2016 12:34
redux-middleware-counter.js
const Counter = props => {
const { count, dispatch } = props;
return (
<div>
<p>Counter value: {props.value}</p>
<button onClick={() => dispatch({ type: 'INC' })}>++</button>
<button onClick={() => dispatch({ type: 'DEC' })}>--</button>
</div>
);
}
@jonnyreeves
jonnyreeves / Dockerfile
Created February 10, 2016 21:50
Kibana4 Dockerfile
FROM java:8-jre
RUN \
useradd --home /home/node -m -U -s /bin/bash node && \
apt-get update && \
apt-get install -y --no-install-recommends git curl && \
rm -rf /var/lib/apt/lists/
USER node
@jonnyreeves
jonnyreeves / cookie_read_test.go
Created February 4, 2016 09:50
Testing Cookie Writes in Golang
@jonnyreeves
jonnyreeves / gist:303e92de419336b0e568
Created July 5, 2015 17:56
Windows GMVault Setup

This guide runs you through setting up a GMVault backup as a Scheduled Task on Windows complete with email notification on failure.

Prerequesit software

  1. Download and install gmvault for windows.
  2. Download BLAT, unzip and copy to %LOCALAPPDATA%/blat
  3. Download and install stunnel to %LOCALAPPDATA%/stunnel

GMVault

  1. Perform an initial sync for your account gmvault sync --db-dir=D:\backup\gmvault your@email.addy
@jonnyreeves
jonnyreeves / example.js
Last active July 2, 2020 21:40
Stubbing XHRs in QUnit with SinonJS Fake Server
QUnit.module("my-module",
{
setup: function () {
// Configure Sinon's FakeServer instance. `autoRespond` ensures that any incoming requests
// will automatically be replied to, otherwise you *must* invoke `this.server.respond` to
// start processing.
this.server = sinon.fakeServer.create();
this.server.autoRespond = true;
// Tells the FakeServer's XHR request factory that we don't want to respond to every
@jonnyreeves
jonnyreeves / Message_Passing.js
Last active December 18, 2015 07:09
Message Passing
// Register a message handler for "some message"
messageBus.addHandler("some_message", function (message, next) {
// do something with the data in an async fashion
$.get(message.url, function () {
if (response.code !== 200) {
// Transition into an error state, terminates processing.
next(new Error("bad http request!"));
}
else {
// Modify the state of the object and pass execution to the next handler
@jonnyreeves
jonnyreeves / gist:3169925
Created July 24, 2012 13:30
AS3 AutoMapper gist.
class PersonModel {
private var _firstName : String;
private var _lastName : String;
public function PersonModel(firstName : String, lastName : String) {
_firstName = firstName;
_lastName = lastName;
}
public function get firstName() : String {