TODO
- Team agreed on technology set
- Licenses, cost of infrastructure etc. covered
- Operating model (including SLAs) determined
TODO
| Object Oriented Programming | |
| I Objects / Classes are main units of design | |
| II Objects are namespaces (expression problem, duality with Functional Programming) | |
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | |
| III Delegation / Inheritance (type dependency) | |
| IV Constructors (vs data constructors) | |
| V Mutability (shared state) | |
| VI Fluent API (http://paqmind.com/blog/fluent-api-debunked/) | |
| VII Instance |
| import * as R from "ramda" | |
| let Atom = R.curry((options, actions) => { | |
| console.log(`@ Atom "${options.name || ""}" is called`) | |
| return {$: "$"} | |
| }) | |
| let withLog = R.curry((options, Atom) => { | |
| return (actions) => { | |
| console.log(`@ Shell "withLog" is called`) |
My code from: https://gist.github.com/penguinboy/762197
let isPlainObj = (o) => Object.prototype.toString.call(o) == "[object Object]"
// this ^ is enough. If you check prototypes – you're doing it wrong. If somethings pretends to be plain – we have to accept that
// e.g. this: https://github.com/jonschlinkert/is-plain-object is an entirely WRONG approach
let flattenObj = (obj, keys=[]) => {
return Object.keys(obj).reduce((acc, key) => {
return Object.assign(acc, isPlainObj(obj[key])| /* | |
| Pascal's Triangle | |
| 1 | |
| 1 1 | |
| 1 2 1 | |
| 1 3 3 1 | |
| 1 4 6 4 1 | |
| The numbers at the edge of the triangle are all 1, and each number inside the triangle is the sum of | |
| the two numbers above it. Write a procedure that computes elements of Pascal's triangle by means of |
| Parallel – 2+ processes (or cores) | |
| Concurrent – whatever | |
| Parallel is for increasing throughput | |
| Concurrent is for decreasing latency | |
| Parallel is for non-interactive (performance) (few inputs, deterministic or non-deterministic) | |
| Concurrent is for interactive (experience) (many inputs, non-deterministic) | |
| Parallel – how fast it gets result |
| // Publish-Subscribe | |
| // Observable – Observer | |
| // Publisher - Listener | |
| // Emitter - Handler | |
| /* | |
| Updates: | |
| 0) off | |
| 1) once | |
| 2) raise event on add listener |
| Nightmare.action("clickNth", function (selector, n, done) { | |
| debug(".clickNth() on " + selector + ":" + n) | |
| this.evaluate_now(function (selector, n) { | |
| document.activeElement.blur() | |
| var element = document.querySelectorAll(selector)[n] | |
| if (!element) { | |
| throw new Error('Unable to find element by selector: ' + selector) | |
| } | |
| var event = document.createEvent('MouseEvent') | |
| event.initEvent('click', true, true) |