In your command-line run the following commands:
brew doctorbrew update
In your command-line run the following commands:
brew doctorbrew update| import { createCipheriv, createDecipheriv, randomBytes } from "crypto"; | |
| const ENCRYPTION_KEY: string = process.env.ENCRYPTION_KEY || ""; // Must be 256 bits (32 characters) | |
| const IV_LENGTH: number = 16; // For AES, this is always 16 | |
| /** | |
| * Will generate valid encryption keys for use | |
| * Not used in the code below, but generate one and store it in ENV for your own purposes | |
| */ | |
| export function keyGen() { |
Disclaimer: This piece is written anonymously. The names of a few particular companies are mentioned, but as common examples only.
This is a short write-up on things that I wish I'd known and considered before joining a private company (aka startup, aka unicorn in some cases). I'm not trying to make the case that you should never join a private company, but the power imbalance between founder and employee is extreme, and that potential candidates would
FWIW: I (@rondy) am not the creator of the content shared here, which is an excerpt from Edmond Lau's book. I simply copied and pasted it from another location and saved it as a personal note, before it gained popularity on news.ycombinator.com. Unfortunately, I cannot recall the exact origin of the original source, nor was I able to find the author's name, so I am can't provide the appropriate credits.
| <script src="/upup.min.js"></script> | |
| <script> | |
| UpUp.start({ | |
| 'content-url': 'schedule.html?user=joe', // show this when the user is offline | |
| 'assets': [ // define additional assets needed while offline: | |
| 'img/logo.png', // such as images, | |
| 'css/offline.css', // custom stylesheets, | |
| 'schedule.json?user=joe', // dynamic requests with data per user, | |
| 'js/angular.min.js', // javascript libraries and frameworks, | |
| 'mov/intro.mp4', // videos, |
| const curry = fn => (...args) => fn.bind(null, ...args); | |
| const map = curry((fn, arr) => arr.map(fn)); | |
| const join = curry((str, arr) => arr.join(str)); | |
| const toLowerCase = str => str.toLowerCase(); | |
| const split = curry((splitOn, str) => str.split(splitOn)); |
| // See https://blog.isquaredsoftware.com/presentations/react-redux-ts-intro-2020-12/#/36 for slides | |
| // My basic render function structure: | |
| function RenderLogicExample({ | |
| someBoolean, // 1) Destructure values from `props` object | |
| someList, | |
| }) { | |
| // 2) Declare state values | |
| const [a, setA] = useState(0); | |
| const [b, setB] = useState(0); |
| function mapValues(obj, fn) { | |
| return Object.keys(obj).reduce((result, key) => { | |
| result[key] = fn(obj[key], key); | |
| return result; | |
| }, {}); | |
| } | |
| function pick(obj, fn) { | |
| return Object.keys(obj).reduce((result, key) => { | |
| if (fn(obj[key])) { |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent| var RecursiveChildComponent = React.createClass({ | |
| render() { | |
| return <div> | |
| {this.recursiveCloneChildren(this.props.children)} | |
| </div> | |
| }, | |
| recursiveCloneChildren(children) { | |
| return React.Children.map(children, child => { | |
| if(!_.isObject(child)) return child; | |
| var childProps = {someNew: "propToAdd"}; |