Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
kn1ght_t

kn1ght_t

  • 138
    вклад
  • 32
    вопроса
  • 198
    ответов
  • 43%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • В чем разница асинхронного и синхронного метода(nodejs javascript)?

    kn1ght_t
    kn1ght_t @kn1ght_t
    надо читать вам про event loop

    смысл в том, что обычный синхронный код выполняется последовательно строчка за строчкой в основном потоке, а асинхронный код откладывается в очередь задач и выполняется после того, как выполнится синхронный код.

    а эти fs.readFileSync и прочие содержат приписку Sync, как бы намекая, что эти методы могут быть долгими (например, большой файл читать надо) и весь остальной код их будет ждать, что не хорошо для серверного кода, с другой стороны вполне себе замечательно для служебных скриптов, когда ожидается, что такой скрипт будет запущен одним клиентом
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как эффективнее организовать алгоритм парсинга JSON в данном случае?

    kn1ght_t
    kn1ght_t @kn1ght_t
    "Думал сначала парсить комментарии, собирая в словарь с ключами ID новостей, но там у меня вышел так же цикл в цикле N*M"

    почему? сначала парсим все комментарии в словарь
    это M операций

    потом идем по всем новостям - это N операций

    итого N + M

    где тут цикл в цикле?
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как прочитать куки со скобками?

    kn1ght_t
    kn1ght_t @kn1ght_t
    при чем тут квадртаные скобки? квадратные скобки - это часть ключа
    у вас ключи:
    DELIVERY[CITY]
    DELIVERY[REGION]

    соответственно по этим ключами и надо получать значения
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Как сделать так что бы функция активировалась сразу за предыдущей?

    kn1ght_t
    kn1ght_t @kn1ght_t
    я бы сделал через промис:

    const makeColor = ({selector, startClass = 'black', endClass, timeOut = 1000, }, i = 0) =>
    	() => new Promise((resolve) => {
          setTimeout(() => {
            const node = document.querySelector(selector);
            const isEven = i % 2 === 0;
    
            node.classList.remove(isEven ? startClass : endClass);
            node.classList.add(isEven ? endClass : startClass);
            i++;
    
            resolve();
          }, timeOut)
        });
    
    const red = makeColor({selector: '.red-item', endClass: 'red'});
    const green = makeColor({selector: '.green-item', endClass: 'green'});
    const yellow = makeColor({selector: '.yellow-item', endClass: 'yellow'});
    
    red()
    	.then(green)
    	.then(yellow);


    demo: https://jsfiddle.net/4d2g3h69/
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как нажать кнопку на чужом сайте через консоль?

    kn1ght_t
    kn1ght_t @kn1ght_t
    const buttons = document.querySelectorAll('button.datagrid-action[type="button"][aria-label="Добавить в любимые треки"]');
    
    Array.from(buttons).forEach(b => {
    	b.click();
    });
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Что не так с timestamp?

    kn1ght_t
    kn1ght_t @kn1ght_t
    в одном случае timestamp в секундах
    в другом - в миллисекундах

    то есть нужно умножить\поделить на 1000
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • В чем разница между const {title} = this.props и this.props.title?

    kn1ght_t
    kn1ght_t @kn1ght_t
    Разницы нету, а ошибка у вас скорее всего из-за замыкания

    Просто через this.props.value вы напрямую обращаетесь к свойству, а при деструктуризации вы в какой-то момент времени сохраняете значение в замыкании
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Почему роутинг не работает в React?

    kn1ght_t
    kn1ght_t @kn1ght_t
    наверное, вы используете обычные теги ссылок (а):
    <a href="/news">News</a>

    а нужно использовать компонент Link из роутера:
    <Link to="/news">News</Link>

    update: для интеграции бутстрапа и реакт роутера нужно использовать https://github.com/react-bootstrap/react-router-bo...
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как сделать горизонтальную прокрутку на сайте?

    kn1ght_t
    kn1ght_t @kn1ght_t
    например
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Каким образом лучше использовать React & SVG?

    kn1ght_t
    kn1ght_t @kn1ght_t
    По идее можно сделать из свг реакт-компонент и закидывать любые параметры (в том числе цвет) через пропсы
    но такую динамическую штуку не закэшировать
    поэтому, если цветов на каждую иконку не так уж и много, то лучше свг с цветами хранить отдельными файлами, как и делают у вас в проекте

    могу быть не прав
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как реализовать скролл?

    kn1ght_t
    kn1ght_t @kn1ght_t
    там все просто сделано, когда скролл доходит до блока, у него ставится:
    position: fixed;

    как самый простой вариант через css, написать:
    position: sticky;
    но надо смотреть на поддержку браузерами, в ие оно может и не работать

    если в контексте реакта, то гуглится по запросу "react sticky"
    пример
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как приостановить дизмаунт компонента чтобы отработала анимация?

    kn1ght_t
    kn1ght_t @kn1ght_t
    https://github.com/reactjs/react-transition-group
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему компонент бесконечно вызывает componentDidMount?

    kn1ght_t
    kn1ght_t @kn1ght_t
    Значит, компонент выпадает из дерева, надо смотреть в родительский компонент, что-то заставляет его не рендериться при каких-то условиях
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как посчитать и вывести сумму?

    kn1ght_t
    kn1ght_t @kn1ght_t
    const sum = state.productsList.reduce((acc, product) => acc + product.price, 0);
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как организовать загрузку изображений, предпросмотр, отправку и сохранение на сервере в vue.js и node.js?

    kn1ght_t
    kn1ght_t @kn1ght_t
    примерно так:

    const receiveFile = (filepath, req, res) => {
      const wstream = fs.createWriteStream(filepath, {flags: 'wx'});
    
      req
        .pipe(wstream)
        .on('error', (e) => {
          if (e.code === 'EEXIST') {
            res.statusCode = 409;
            res.end('File Already Exists');
            return;
          }
    
          res.statusCode = 500;
          res.end('Internal Server Error');
        })
        .on('close', () => {
          res.statusCode = 201;
          res.end('File Created');
        });
    
      res.on('close', () => {
        if (res.finished) return;
        fs.unlink(filepath, (err) => {});
      });
    };
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как с помощью консоли chrome удалить слово с веб-страницы?

    kn1ght_t
    kn1ght_t @kn1ght_t
    document.querySelectorAll("*").forEach(node => {
      const nodeValue = node.childNodes[0] && node.childNodes[0].nodeValue;
      if (nodeValue && ~nodeValue.indexOf("куплен")) {
        node.remove();
      }
    });
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать колонки с 9тью элементами FlexBox?

    kn1ght_t
    kn1ght_t @kn1ght_t
    https://jsfiddle.net/na9zd2pe/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как работать с yandex map React?

    kn1ght_t
    kn1ght_t @kn1ght_t
    берете это (биндинги yandex-карт к реакту): https://github.com/gribnoysup/react-yandex-maps

    и делаете как-то так (думаю, понятно, что происходит):
    import { YMaps, Map, Placemark } from "react-yandex-maps";
    
    const mapData = {
      center: [55.751574, 37.573856],
      zoom: 5,
    };
    
    const coordinates = [
    	[55.684758, 37.738521],
    	[57.684758, 39.738521]
    ];
    
    const App = () => (
      <YMaps>
        <Map defaultState={mapData}>
          {coordinates.map(coordinate => <Placemark geometry={coordinate} />)}
        </Map>
      </YMaps>
    );


    можно передавать различные пропсы: https://react-yandex-maps.now.sh/geo-objects/map
    в общем, в документации все есть
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно ли получить список всех возможных тегов toster.ru?

    kn1ght_t
    kn1ght_t @kn1ght_t
    const puppeteer = require('puppeteer');
    const fs = require('fs');
    const endOfLine = require('os').EOL;
    
    const pageStart = "https://toster.ru/tags/?page=";
    const selector = ".card__head-title a";
    const fileName = "tags.txt";
    const pages = 62;
    
    (async () => {
      const browser = await puppeteer.launch();
    
      const promises = [];
      for (let i = 1; i <= pages; i++) {
        promises.push(browser.newPage().then(async page => {
          const url = pageStart + i;
          console.log(url);
          await page.goto(url, {timeout: 100000});
          return await page.$$eval(selector, elements => {
            return Array.from(elements).map(element => element.innerText);
          });
        }));
      }
    
      const pagesData = await Promise.all(promises);
    
      const logger = fs.createWriteStream(fileName, {
        flags: 'a'
      });
    
      pagesDataByLines = pagesData.reduce((acc, el) => ([...acc, ...el]));
    
      pagesDataByLines.forEach((line, index) => {
        logger.write(`${index}. ${line} ${endOfLine}`);
      });
    
      await browser.close();
    })();


    первый раз писал scraper, так что 99.99%, что здесь что-то костыльно, но работает =)
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Почему ответ 5555?

    kn1ght_t
    kn1ght_t @kn1ght_t
    потому что "5" встают между элементами массива, а между 5 элементами - 4 расстояния
    ""5""5""5""5""
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • Следующие →
Самые активные сегодня
  • vabka
    Василий Банников
    • 10 ответов
    • 0 вопросов
  • Drno
    • 9 ответов
    • 0 вопросов
  • SoreMix
    soremix
    • 7 ответов
    • 0 вопросов
  • Vindicar
    Vindicar
    • 4 ответа
    • 0 вопросов
  • telegram_value_maker
    Евгений
    • 4 ответа
    • 0 вопросов
  • Алексей Гончаров
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации