Задачки по ноде

Просто немного задачек по Node.JS.

  1. Напишите функцию, которая принимает на вход массив урлов и обходит их - но так, чтобы она обходила не более пяти адресов одновременно, чтобы не создавать избыточной нагрузки на сервер.
  2. Напишите функцию, которая принимает на вход имя каталога и печатает всего его файлы и подкаталоги.
  3. Напишите свою реализацию Reduce
  4. Напишите функцию для клонирования объекта, опишите ограничения
  5. Сделайте аналог крона - чтобы некая функция вызывалась раз в 2 секунды. Описать варианты реализации и ограничения.
  6. Напишите три способа поприветствовать Джона, используя эти данные и функцию:
    1
    2
    3
    4
    5
    6
    7
    8
    const person = {
    firstName: 'John',
    lastName: 'Doe'
    }

    function greet(greeting, message) {
    return `${greeting} ${this.firstName}. ${message}`;
    }
  7. С бекенда приходит такой массив c возрастом учеников:
    1
    2
    3
    4
    5
    var arr = [
    { name: 'Vasya', age: 10 },
    { name: 'Petya', age: 20 },
    // ...
    ];
    Нужно получить средний возраст.
  8. Напишите функцию, которая получает содержимое веб странички и делает пять ретраев в случае, если сервер недоступен. Нужно сделать в трёх вариантах - на асик эвейте, на промисах и на коллбеках.

Умный дом - теперь и у геккона

Оригинал поста на хабре

Недавно при странных обстоятельствах у меня появился вот такой зверь:

В целом он довольно неприхотлив, но хотелось обеспечить ему самые приятные условия для его хладнокровного существования. Не то чтобы это были какие-то нетривиальные задачи, мне просто показалось интересным, что у технологий есть ещё и такое внезапное применение.

Что нужно было сделать:

  • Поддерживать ему минимальную температуру ночью, но так, чтобы он не перегрелся

  • Поддерживать минимальную влажность

  • Включать ему ультрафиолетовую лампу в 5 утра, когда он любит выползать поваляться на камушке.

Вроде бы несложно. У меня был мешок реле, датчиков, Home Assistant и Arduino. Но если ты начал собирать умный дом, становится трудно остановиться. Единственное, что у меня вызывало опасение - это Arduino. Нет ничего более беспомощного, безответственного и испорченного, чем Arduino. Я знал, что рано или поздно я перейду и на эту дрянь.

Казалось бы, всё просто - засунь туда датчиков, подключи к ESP, да щёлкай релешками. Но хотелось точных датчиков, маленьких и автономных, и достаточно стабильной работы, чтобы не сварить и не заморозить животное. И тут оказался прям большой простор для разных вопросов и работы.

Алиса, открой ворота - или MVP умного дома за пару вечеров

Оригинал поста на хабре

TLDR: Схожих постов на хабре десятки, но мне хотелось показать, что внезапно можно очень быстро сделать классные штуки, которые не ради вау эффекта, а реально помогают жить.

Будет про:

  • Home Asistant
  • Алису и её станции
  • Ардуины и MQTT
  • управление воротами Came
  • локальное управление яндекс розетками
  • датчики движения
  • Влажность, температуру и CO2
  • Автоматический полив цветочков
  • Как при помощи всего этого развлечь детей и как они находят свои способы с этим играть.

Предпосылки

Мне всегда казалось, что умный дом это и сложно и какой-то бессмысленный выпендрёж.

Сложно - потому что надо изучать всякие там зигби, ставить шлюзы, контроллеры, интегрировать какие-то штуки, и вообще по хорошему надо нанимать бородатых дядек, которые сделают всё как нужно. И ещё и наверняка проводку для этого менять надо.

Выпендрёж - потому что меня всегда смущал основной вариант умного дома - управление светом. До сих пор не могу понять, зачем управлять им голосом, хлопками или датчиками движения. Поднять пятую точку и нажать выключатель - хоть какая-то разминка!

Кроме того, живу я с детьми по съёмной жилплощади, а хозяева за такую самодеятельность вряд ли спасибо скажут. Да и с собой не прихватишь при выезде. Как мне казалось.

Тем не менее, накопилось значительное количество несистематизированных огрызков:

  1. Ещё в далёком 2016 я собрал свой датчик CO2, темпераруты и влажности.
  2. На новый год ребёнок выпросил себе светодиодную ленту. Потратив какое-то время, я выбрал RGB ленту с умным контроллером MagicHome, которая внезапно сопряглась с Алисой. И это было прикольно.
  3. На новый год мы украсили на улице ёлку гирляндами. Когда мне надоело включать её руками, я заказал розетку яндекса и составил расписание включения. Заодно подключил так же уличный свет, выключатель которого висел крайне неудобно. К слову, розетки с честью выдержали нерегламентированные -15 на улице и продолжали бодро щёлкать реле.
  4. Периодически я призывал домой клининговый сервис, и каждый раз был квест с тем, как им оставить и забрать ключи. Очень хотелось решить это при помощи какого-то способа удалённого управления раздвижными воротами.
  5. У детей завелось две Яндекс.Станции, с которыми они активно общаются и слушают музыку.

В общем, я решил, что критическая масса накопилась, и пора бы посмотреть, что можно сделать. Я думал, это будет долгоиграющий проект на долгие зимние вечера, но внезапно всё получилось буквально за пару вечеров, чему я страшно удивился.

Шедоуран 2021 отчёт

Недавно приехал с шедоурана и таки решил сесть написать небольшой отчёт.

Уже чувствую, что всё будет очень плохо структурировано, но как есть.

Общие впечатления

Вписался за неделю и считаю, что поиграл просто огненно. Отлично воевал, приключался, успел сделать завязку до игры и отыграть её на игре, много общался и социалил, отлично вжился в своего персонажа-риггера.

Как «активный гражданин» приучает людей к фишингу

Оригинал поста на хабре

Сначала я написал этот пост на пикабу, решив что там более релевантная аудитория и тема, но его там забанили вместе с моим аккаунтом. Что с одной стороны обидно, с другой забавно, и показывает, насколько похоже на фишинг то, чем занимается “активный гражданин”. Что даже написать об этом нельзя, чтобы тебя не посчитали мошенником.

Снимаем покрытие кода с уже запущенного Node.JS приложения

Оригинал поста на хабре

И снова я про тестирование и покрытие.

Наверное, вы уже поперхнулись кофе от вопроса “Зачем снимать покрытие с запущенного приложения” - но такая потребность периодически возникает.

Например:

  • Узнать покрытие интеграционных тестов без инстурментализации кода, завершения приложения и выгрузки репорта какими-то сторонними средствами;
  • Узнать без долгого ковыряния кода, по каким именно модулям приложения прошёл запрос;
  • Определить “мёртвый” код, который по факту не используется в приложении;
  • Узнать список транзитивных зависимостей, которые используются на определённые запросы.

Интересно? Поехали!

Как мигрировать с mocha на jest в 15 простых шагов — и зачем

Оригинал поста на хабре

Уже давно я заглядывался на фреймворк для тестирования jest, в котором есть огромное количество всяких вкусных фишек, одна из которых - многопоточное выполнение тестов. При условии того, что у меня был проект на 5000 юнит тестов, миграция обещала быть крайне полезной. Далее я расскажу 14 простых шагов, за которых мне удалось мигрировать - пусть и с некоторыми оговорками - и что мы в результате получили. Спойлер - всё получилось очень круто.

Зачем нужно столько разработчиков?

Оригинал поста на хабре

Статья предназначена скорее для людей, которые напрямую не участвуют в разработке, и удивляются, почему нужно столько людей и времени чисто на поддержку проекта, который вроде как стабильно работает.

Для наглядного пояснения представим себе, что наш проект это корабль. Который мы уже некоторое время назад спустили с верфи, и он плывёт, радуя наш взор своим изящным профилем, а наш карман - золотыми дублонами. И вроде бы всё хорошо, но почему-то ему требуется куча людей только на то чтобы продолжать плыть. А хотелось бы, чтобы они вместо этого строили новые корабли….

Deno - время Node.JS уходит?

Оригинал поста на хабре

Прошло примерно 18 месяцев с внутреннего релиза Deno, вышел preview release, появилось несколько статей на Хабре, и Райан ездит по конференциям и рассказывает о нём. Однако я нигде так и не видел сколько-нибудь вдумчивого разбора этого проекта - почему-то все ограничиваются переводом документации…

Что же, давайте попробуем это сделать сейчас. Последние 5 лет я пишу на Node.JS, а компания OneTwoTrip, где я сейчас работаю, пишет проекты на ноде около 9 лет (да, это я писал историю про 9 лет в монолите на ноде). Так что анализ должен выйти неплохой. Тем более что я его уже рассказал на Moscow Node.JS Meetup 10, и было интересно. Кстати, если вам удобнее слушать, а не читать, то послушать и посмотреть можно вот тут. Моё выступление второе, я чувак в розовой рубашке.