В этой статье я расскажу как с помощью генераторов можно модифицировать рекурсию так, чтобы она использовала кучу вместо стека и при этом почти не отличалась от обычной рекурсии.Постановка проблемыПусть дана некоторая рекурсивная функция, которую сложно выразить обычным циклом. Для примера я возьму функцию АккерманаНаивная реализацияconst ackermann1 = (m, n) => { if (m === 0) { return n + 1; } if (n === 0) { return ackermann1(m - 1, 1); } return ackermann1(m - 1, ackerman…
Не так давно потребовалось узнать, что сайт был загружен из кэша — для просмотра и сравнения скорости “холодного” старта и скорости повторной загрузки, когда статические ресурсы уже закэшированы браузером.Сначала казалось, что это простая задача, которую можно решить быстрым и надежным способом (и, скорее всего, есть готовые статьи на эту тему), но оказалось, что хороший способ найти не так просто, так же, информации на эту тему не особо много.Эта статья показывает способы, с помощью которых мо…
Сайт в наше время является визитной карточкой не только компаний, которые продают товары и оказывают услуги. Свои веб-страницы заводят рок-группы, блогеры, благотворительные фонды. Даже у животных есть свои собственные сайты. Все это говорит о том, что специалисты по созданию сайтов востребованы. И научиться этому может каждый, даже школьник без специальных навыков. HTML и CSS — это понятия, которые многим взрослым и детям знакомы с занятий школьной информатики, с уроков html для детей. С их по…
Привет, друзья!По долгу службы я очень много времени трачу на ревью кода своей команды. Ревью кода на столько глубоко вошло в мою жизнь, что отрывок из одного из них я решил переложить на бумагу. В этой небольшой заметке вашему вниманию предлагается диалог разработчика и его лида на код ревью. Посмотрим, как они приходят к финальному решению, какие стадии претерпевает код в процессе рефакторинга, как рассуждают лид и его подопечный и какое красивое итоговое решение у них получится.Если вам это …
Всем привет!Напомню, что в первой части я рассказал о том, как выбирал игру и как начинался процесс ее создания. В конце статьи было голосование, о чем написать в следующей части и большинство выбрало тему сервера, по этому сегодня статья о нем.Последние несколько лет я использую исключительно облачную инфраструктуру для запуска проектов, это не только позволяет существенно экономить финансовые ресурсы на этапе разработки, но и дает возможность в дальнейшем легко масштабировать мощности по мере…
Привет Хабр. На связи Даня, Angular-разработчик из команды Т-Бизнеса.У меня для вас статья по работе с динамическими компонентами. Мы подробно рассмотрим процесс создания этих компонентов, будут детальные примеры кода и пошаговое руководство всего процесса создания. Я добавил комментарии и описания, чтобы прояснить важные моменты и улучшить понимание концепций.Добро пожаловать под кат!Для чего оно нужноФреймворк Angular преподносит немало трудностей во время работы с ним. Большое влияние на это…
Всем привет, Хабрчане! Во время подготовки к очередному тех-собесу, я задался вопросом: а как в V8 работает Garbage Collector, что такое Heap и Stack, про которые я неоднократно слышал? После прочтения нескольких англоязычных и русскоязычных ресурсов понял, что одни копают очень глубоко, а другие дают лишь минимальную базу. Я решил сделать что-то среднее и с агрегировать все эти знания в одну статью, плавно погружая читателя в тему.Кстати, я начинающий Node.js разработчик и это моя первая стать…
В этой статье мы подробно рассмотрим, как реализовать анимацию с эффектом Hover для карточек, как показано ниже. Основные трудности, которые нам предстоит решить:При движении мыши отображается граница и световой эффект текущего края карты.Эффект только рядом с курсором: Существует несколько подходов для реализации этого эффекта. Можно рассчитать зону вокруг курсора и применять эффект только в этой области, но это может быть слишком ресурсоемко.Альтернативный подход — использовать маску. Можно…
Привет, Хабр! Представляю вашему вниманию перевод третьей статьи автора Marja Hölttä из цикла Understanding ECMAScript. Материал статьи актуальный для версии EcmaScript2025. Перевод первой статьи. Перевод второй статьи. В этой части мы углубимся в дефиниции языка спецификации ECMAScript и её синтаксис. Если вы не знакомы с безконтекстной (context-free) грамматикой, сейчас самое время ознакомиться с основами, поскольку спецификация использует context-free грамматику для определения языка. В ка…