Deriving a new Array from an existing Array:
['■','●','▲'].slice(1, 3) ⟼ ['●','▲']
['■','●','■'].filter(x => x==='■') ⟼ ['■','■']
['▲','●'].map(x => x+x) ⟼ ['▲▲','●●']
['▲','●'].flatMap(x => [x,x]) ⟼ ['▲','▲','●','●']If you have any issues with macOS, or need anything related to it check this documentation
Install Xcode Command Line tools :
Node Version Manager (https://github.com/nvm-sh/nvm) works perfectly across native node installations as well as emulated Rosetta installations. The trick I am using here is to install one LTS version of node under Rosetta and another stable version as native binary.
| # The following packages are needed during `make` | |
| # - openssl-devel so you don't get: | |
| # ContentHash.cpp:13:10: fatal error: openssl/sha.h: No such file or directory | |
| # - redhat-rpm-config so you don't get: | |
| # gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory | |
| # - python-devel so you don't get: | |
| # pywatchman/bser.c:31:10: fatal error: Python.h: No such file or directory | |
| sudo dnf install openssl-devel redhat-rpm-config python-devel libtool | |
| # The rest is just instructions from |
Note:
When this guide is more complete, the plan is to move it into Prepack documentation.
For now I put it out as a gist to gather initial feedback.
If you're building JavaScript apps, you might already be familiar with some tools that compile JavaScript code to equivalent JavaScript code:
| import * as fs from "fs"; | |
| import { createSession } from "chrome-debugging-client"; | |
| createSession(async (session) => { | |
| let browser = await session.spawnBrowser("canary"); | |
| let api = await session.createAPIClient("localhost", browser.remoteDebuggingPort); | |
| let tabs = await api.listTabs(); | |
| let tab = tabs[0]; | |
| let client = await session.openDebuggingProtocol(tab.webSocketDebuggerUrl); | |
| await client.send("Profiler.enable"); |
| <!-- | |
| Copyright 2016 Google Inc. All rights reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and |
It sometimes happen you need change code on a machine from which you cannot push to the repo.
You’re ready to copy/paste what diff outputs to your local working copy.
You think there must be a better way to proceed and you’re right. It’s a simple 2 steps process:
1. Generate the patch:
git diff > some-changes.patch| 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])) { |