View aws_iot.ino
#define ESP8622 | |
#include <ESP8266WiFi.h> | |
#include <WiFiClient.h> | |
#include <AmazonIOTClient.h> | |
#include "Esp8266AWSImplementations.h" | |
#include <Wire.h> | |
#include <MechaQMC5883.h> |
View website-deploy.js
const { join } = require('path'); | |
const { Stack, RemovalPolicy, ScopedAws, CfnOutput } = require('@aws-cdk/cdk'); | |
const { Bucket } = require('@aws-cdk/aws-s3'); | |
const { BucketDeployment, Source } = require('@aws-cdk/aws-s3-deployment'); | |
const { | |
CloudFrontWebDistribution, | |
ViewerProtocolPolicy, | |
PriceClass, | |
OriginProtocolPolicy, | |
} = require('@aws-cdk/aws-cloudfront'); |
View Demo
import React, { useState } from 'react'; | |
import { render } from 'react-dom'; | |
const todosStore = { | |
todos: { | |
'1': { | |
id: '1', | |
text: '', | |
}, | |
}, |
View async-await-promise-all-error-handling.js
const defaultFirst = 'A`' | |
const defaultSecond = 'B`' | |
const defaultThird = 'C`' | |
async function doFirst() { | |
// throw new Error('Error A') | |
return await 'A' | |
} | |
async function doSecond() { |
View compose-graphql-queries.js
export const Gists = props => | |
<div> | |
{ | |
props.viewer.gists && | |
props.viewer.gists.map(x => <p>{x.description}</p>) | |
} | |
</div> | |
export const GistsWithGraphQL = compose( | |
withGraphQL(variables => Fragment`fragment gists on Gist { |
View bank-account-system-poc.js
const account = openBankAccount({name: 'Max Muster'})({}) | |
account.deposit(1000) | |
account.withdraw(800) | |
account.withdraw(800) | |
// use compose(...) building block | |
const { calculateBalance, name, transactions, save} = compose(withBalanceCalculation({}), withStore())(account) | |
console.log(`${name}: ${calculateBalance()} [${transactions.map(x => x.deposit || 0 - x.withdraw)}]`) | |
console.log(save()) | |
// same stuff, but use the handy way |
View demonstration.js
// demonstrate | |
const simulateActions = [ | |
addTodo({text: 'todo 1'}), | |
addTodo({text: 'todo 2'}), | |
toggleTodo({index: 0}), | |
toggleTodo({index: 1}), | |
]; | |
const actual = simulateActions.reduce(todosReducer, []); | |
console.log(actual); |
View app.js
const require1 = require('./require1'); | |
const require2 = require('./require2'); | |
const require3 = require('./require3'); | |
console.log(require1.getValue()); | |
console.log(require2.getValue()); | |
console.log(require3.getValue()); |
View order-saga.js
const Rx = require('rx'); | |
// simulate transactions | |
const bookCar = id => Rx.Observable.return({sagaId: id, 'Car A': true}).delay(1000); | |
const bookHotel = id => Rx.Observable.return({sagaId: id, 'Hotel B': true}).delay(1000); | |
const bookFlight = id => Rx.Observable.return({sagaId: id, 'Flight C': true}).delay(1000); | |
// simulate error | |
//const bookFlight = id => Rx.Observable.throw({sagaId: id, 'Flight C': true}).delay(1000); | |
// transaction compensation (idempotence) |
View coin-changer.js
const Rx = require('rx'); | |
const coinsStream = Rx.Observable.fromArray([1,2,5,10,20,50,100].reverse()); | |
Rx.Observable | |
// bind CoinResource lifetime to the stream lifetime | |
.using(() => new CoinResource(9), resource => coinsStream.map(x => ({ amount: resource.getValue(), coin: x }))) | |
// calculations | |
.reduce((state, e) => { | |
const amount = (state.length > 0) ? state[state.length-1].rest : e.amount; |
NewerOlder