type below:
brew update
brew install redis
To have launchd start redis now and restart at login:
brew services start redis
| # First, we need to find our device. BEFORE inserting your USB drive, run the | |
| # following: | |
| diskutil list | |
| # This will output a bunch of info about all of the disk drives connected to | |
| # your Mac. Each entry will have a header in the form "/dev/diskX", where X is | |
| # some number starting at 0. Now, insert your USB drive and run the command | |
| # again. You should see a new entry. Make note of the name (ie, /dev/diskX). | |
| diskutil list |
type below:
brew update
brew install redis
To have launchd start redis now and restart at login:
brew services start redis
| // data example | |
| // [ | |
| // { | |
| // "color": "rgb(0, 0, 255)", | |
| // "list": [ | |
| // { | |
| // "value": 226454, | |
| // "year": 1970 | |
| // }, | |
| // { |
| import React, { useState, useEffect } from "react"; | |
| import { scaleLinear, scaleTime } from "d3-scale"; | |
| import { min, max, axisLeft, axisBottom, select, line, curveBasis } from "d3"; | |
| import source from "./source.json"; | |
| const WIDTH = 600; | |
| const HEIGHT = 400; | |
| const OFFSET = 40; |
| import React from {useEffect, useState, useReducer} 'react' | |
| const initialState = { | |
| username: 'Ivan', | |
| surname: 'Petrov', | |
| age: 30, | |
| profession: 'developer' | |
| } | |
| const reducerFunction = (acc, rec) => { |
| function recursion(obj, prevPath) { | |
| const pathCompleted = (obj.path !== 'root') ? `/${obj.path}` : `${obj.path}` | |
| prevPath += pathCompleted | |
| if (typeof obj.children === 'undefined') { | |
| return prevPath | |
| } | |
| return obj.children.reduce((acc, rec) => { | |
| return [...acc, recursion(rec, prevPath)] |
| let data = { | |
| nmb: 2, | |
| children: [{ | |
| nmb: 4, | |
| children: [{ | |
| nmb: 2, | |
| children: [{ | |
| nmb: 1 | |
| }] | |
| }] |
| //не работает | |
| (arr, num) => { | |
| return arr.reduce((acc, rec, index, array) => { | |
| const zero = (num % rec === 0); | |
| const valInArr = (array.indexOf(num / rec) !== -1) | |
| if (zero && valInArr) { | |
| return [...acc, rec] | |
| } | |
| return acc; | |
| }, []); |
| (planetId) => { | |
| // в данной константе ханится шаблонная строка. при обращении к ней, когда в функцию передана переменная planetId | |
| // мы получаем готовый url, по которому можем запросить наш объект планеты. то же самое можно сделать и с помощью функции | |
| const planetLink = `https://swapi.co/api/planets/${planetId}/?format=json`; | |
| // попробовав перейти по ссылке с id равному 1 (https://swapi.co/api/planets/1/?format=json), видим, что | |
| // films представлены массивом внутри объекта Planet. Получается, нам понадобится несколько промисов, чтобы раскрыть это дело! | |
| // Итак, что нам нужно получить? Планету. Ок, это один запрос. Что еще? Фильмы, которые к ней относятся. Да не просто фильмы, | |
| // а все фильмы, да так, чтобы заменить в объекте Planet ссылки на фильмы объектами этих фильмов! | |
| // давайте напишем первую функцию, которая возвращает промис. в ней запросим данные нашей планеты. |
| (planetId) => { | |
| const planetLink = `https://swapi.co/api/planets/${planetId}/?format=json`; | |
| const getPlanet = (link) => axios.get(link).then((it) => it.data); | |
| const getFilms = (filmsLinksArr) => Promise.all(filmsLinksArr.map(filmUrl => axios.get(filmUrl))).then(films => films.map(film => film.data)); | |
| return new Promise(resolve => { | |
| getPlanet(planetLink).then(planet => { | |
| getFilms(planet.films).then(filmsArr => { | |
| return Promise.all( | |
| filmsArr.map(film => { |