О чём расскажут на HolyJS 2022 Autumn

6903839751630d85b8aae5adccd5387f.jpeg

Как получить от ESLint максимум пользы? Что можно впихнуть в библиотеку на два килобайта? Как выжать больше производительности, когда очевидные оптимизации уже сделаны? Почему слоны умные и параноидальные? Всё это будет в программе HolyJS (да-да, про слонов тоже). Собрали описания всех докладов в этом хабрапосте и разделили на тематические блоки.

Конференция в этот раз пройдёт в два этапа: сначала два дня будут полностью онлайновыми, а вот в третий день можно будет хоть прийти на офлайн-мероприятие в Москве, хоть подключиться удалённо. Другие подробности (вроде точного расписания) и билеты — на сайте.

Оглавление

Инструменты

Навстречу новому developer experience с Leporello.js: придумываем livecoding-среду разработки для функционального программирования

29e14968fe6ae277051204e66fe28b89.jpegДмитрий Васильев

После появления библиотеки React в мире JavaScript наблюдается рост интереса к функциональному программированию.

Спикер обсудит процесс разработки и отладки функциональных программ и расскажет, какие новые уникальные возможности с точки зрения developer experience открывает функциональное программирование. Покажет новый концепт IDE для функционального программирования и расскажет о его разработке.

Архитектура приложения через Storybook

8d8fa6e2a6eac0f9b56f3038032ca58b.pngИван Нагайко

VK

Спикер расскажет, как спроектировать приложение через Storybook, который по сути является не библиотекой, а концепцией разработки. На примере практических кейсов на React, которые легко применимы и к другим библиотекам и фреймворкам, будут затронуты проблемы библиотек, с которыми сталкивался спикер.

Из доклада вы получите практический гид внедрения Storybook: от момента, когда пора внедрять эту концепцию, до проблемы внедрения и примеров решения, особенностей работы store со Storybook, разбора DI-компонентов.

How to build large react-redux application without code mess

72fb4a616d678fc9fea8020beb723496.jpegKonstantin Astapov

Rambler&Co

React с хуками — мощный способ для быстрого и простого создания веб-приложений. Однако по мере роста приложения компоненты оказываются перегружены «состояниями», «эффектами» и «коллбэками». Описание бизнес-логики превращается в путаницу. Разделение компонентов на более мелкие не особо помогает, поскольку между ними сохраняется много путаницы. Порой люди используют Redux, но это добавляет своих сложностей.

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

Менеджмент зависимостей в JavaScript

701ccbf3d04a1c812a138688c6eaeca1.jpegНикита Балихин

Газпромбанк

Михаил Потапов

Тинькофф

Фронтенд-разработчик и немного motion-дизайнер, обожает писать код и разбираться в концептуальных принципах работы инструментов, чтобы они были использованы по назначению. Любит придумывать абстракции, упрощающие жизнь других разработчиков.

ESLint — больше чем просто extend

f12ac1ef74125d58d555cc0c2a8fc565.jpegДенис Красновский

Домклик

ESLint — мощный инструмент, и при должном обращении он будет служить верой и правдой. Но зачастую вся работа с ним сводится к extend-у от всем известного плагина. Как раскрыть его потенциал, как сократить время проверки кода, как сделать реюзабельный конфиг, что будет, если попытаться внедрить его в большой компании, и при чем тут вообще Prettier — узнаете из доклада Дениса.

UI

Воркшоп. Пишем игру на React и разбираемся с react-reconciler

4ed09cec767b1f72047d58b79040bd04.jpegСергей Константинов

Райффайзен Банк

Из воркшопа вы узнаете, как воспользоваться на практике пакетом react-reconciler, чтобы написать свой собственный рендерер в PIXI.js, что позволит вам управлять библиотекой pixi привычными инструментами из реакта и создавать игры на JSX.

Поэтапно пройдём от первоначальной отрисовки спрайта на страницу до реализации полноценной игры. Затронем работу reconciler’a на примерах реализации интерактивности, работы с анимациями. В конечном счете напишем удобную в использовании библиотеку для разработки графики на react’e c JSX.

Бонусом посмотрим на то, как с помощью кодогенерации с использованием библиотеки recast для работы с AST-деревьями, можно создать свой игровой движок для «программирования мышкой».

Воркшоп. Улучшаем доступность маркетплейса для незрячих, учитывая опыт большого e-commerce проекта

670a5a4e7346dbc85cf6c202e014ee10.jpegИлья Сидорчик

Яндекс Маркет

Илья Сидорчик со своей командой сделал Яндекс Маркет доступнее для незрячих покупателей и тех, кто пользуется сайтом с клавиатуры. В процессе разработчики столкнулись с неочевидными проблемами: Почему трудно найти кнопку на видном месте? Как удаление role=«button» у кликабельного элемента может сделать лучше? Почему в VoiceOver работает, а в NVDA нет?

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

  1. Исправим главные баги.

  2. Доработаем UI Kit (заголовок, картинку, попап и др.).

  3. Сделаем навигацию с клавиатуры.

  4. Поправим тачовую версию.

  5. Протестируем вручную и автоматически.

Планировщик задач: не замораживаем вкладку при открытии страницы

e757ab956a14c36dacae22b640fd97c8.jpegВиктор Хомяков

Яндекс

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

Рассмотрим проблему большого TBT (Total Blocking Time) при открытии страниц в браузере, не зависящего от выбора фреймворков и библиотек. Виктор расскажет, как уменьшить TBT, не ухудшая другие показатели.

Батчинг в React

2ab2bd58a5daebdc16ff2c217b844e48.jpegДмитрий Грош

Wis Software

Дмитрий обратил внимание, что на собеседованиях мало кто из разработчиков отвечает на вопрос о батчинге. Некоторые даже впервые слышат такое слово. Спикер расскажет об этом явлении в React. Как это работало в старых версиях и как работает сейчаc.

Графика и анимации

High refresh web

9369790f3d8c666bc84c7fc592b96a95.jpegАлександр Мышов

2ГИС

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

Хаки и ветчина из JS-геймдева, которые подходят для велосипедных оптимизаций приложений в вебе

005e2bd70b48c861730312b08814b511.jpegИван Попелышев

White Frame

Доклад для тех, кто пишет свои игры или высоконагруженные распределенные модели данных. Например, стартап с бесконечной доской и тасками на ней.

Спикер рассмотрит связь некоторых высокоуровневых концептов и простого кода на JS. Полученные знания могут пригодиться при написании своих велосипедов и при изучении низкоуровневых вставок в коде популярных библиотек. Весь доклад построен на GameDev-опыте, в частности — разработки рендерера PixiJS.

Анимации и их оптимизация в корпоративных проектах

d1bea971d1b9d0b102344a105063156d.jpegРоман Троицкий

Комус-тех

Анимации на сайте позволяют управлять вниманием пользователя, делают просмотр более приятным, а информацию более запоминающейся. Для SPA анимация является еще более важным элементом, позволяющим сгладить рендер страницы и имитировать поведение нативного приложения.

Несмотря на удешевление производительности устройств, анимации все еще остаются достаточно «тяжелой» историей для браузера, и приходится прикладывать немало усилий для плавности анимации и высокого FPS. На примере анимаций с реальных проектов, написанных на Nuxt 2 с библиотеками GSAP 3 и Lottie, разберем следующие нюансы создания вау-эффекта с помощью анимаций:

  • дорогие для анимации свойства, вызывающие пересчет лэйаута;

  • альтернативы will-change как «подсказка браузеру»;

  • request animation frame;

  • дебаг производительности.

Case-study

Ситидрайв: поездка продолжается

4b8103162aca8efd0fd7b5373d792600.jpegАртем Акутин

Ситидрайв

Удивительная и местами невеселая история о том, как в Ситидрайв удается давать клиентам доступ к десяти тысячам машин круглые сутки. Рецепт одного из крупнейших каршерингов: NodeJS, Redis, RabbitMQ и маленькая щепотка удачи.

А почему бы не вынести все конфиги в отдельный пакет, сократив бойлерплейт до нуля?

eeefe43d16e99c44d3c3ce5bf25fabc1.jpegИван Малюгин

Билайн

Вам когда-нибудь приходилось копировать конфиги ESlint, Babel, Webpack и других инструментов из проекта в проект? В вашем package.json уже столько плагинов, что среди них невозможно найти реальные зависимости проекта? А что, если вы можете избавиться от всех лишних зависимостей вынесением в отдельные тематические пакеты? И все конфиги сократятся до одной строки импорта, а бойлерплейт — до 100 байтов.

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

Как на самом деле работать над перформансом веб-приложения

137f2884cb665df0f1617c1e859e0e42.jpegНаталья Стусь

Яндекс

Когда мы гуглим «как улучшить скорость веб-приложения», обычно находим один и тот же набор практик — «сжимайте все, что можно сжимать» или «поделите код на чанки».

Но если все это уже сделано, можно ли улучшить еще? Тут нет серебряной пули, потому что надо заняться исследованием перформанса именно вашего приложения. Спикер расскажет о концепциях, подходах и проблемах, которые появлялись в их команде Авто.ру в ходе решения этой задачи.

Разбираем слона (и это не имеет никакого отношения к JS)

52700863b28deff0f5eb05f13764a6ba.jpegСергей Абдульманов

Туту.ру

Сергей Абдульманов уже знаком многим по докладам, хабрапостам (@milfgard) и другим проявлениям. Кажется, он может прийти на любую IT-площадку и рассказать там про что-то «неайтишное» так, что в итоге люди не будут упрекать в оффтопике. В этот раз будет разбирать слона:

  1. Зачем слоны такие умные и параноидальные?

  2. Что можно встроить в руку: датчик запаха и шноркель. Как после этого пользоваться рукой. 

  3. Другие детали слона: термопанели на голове, рации в ногах, как слон одевается.

  4. Слон — царь зверей. Кто кому даёт люлей в буше. Почему это имеет отношение к формуле давления.

  5. Деплой слонёнка.

  6. Как мы почти убили слонов и сейчас восстанавливаем.

  7. Вот почему слон такой умный и параноидальный!

Бэкенд

Event Sourcing: глубокое погружение

8ce702da0952a81022921352d0f28a1a.jpegАнтон Жуков

Контрол Системс

На пути построения Event Sourcing-системы вам предстоит столкнуться со множеством трудностей и подводных камней. Придется принимать важные архитектурные решения, и неправильный выбор принесет значительные проблемы или даже похоронит ваш проект. Спикер занимался темой Event Sourcing более четырех лет и прошелся по всем возможным граблям. В этом докладе он поделится своим опытом.

WebTransport

05ae598fe5edaff053696e40d85639f2.jpegАндрей Власов

Сбер

6454308d8f3ae51cb1ce068f84540fa0.jpegВасилий Маркитан

Сбер

Вы узнаете о технологии WebTransport и ее применении. Сейчас она находится в стадии draft и активно разрабатывается W3C.

Доклад знакомит разработчиков с текущим состоянием технологии, мотивацией ее появления и сравнит с существующими решениями.

В докладе предусмотрена и практическая часть. Будет продемонстрировано взаимодействие с API WebTransport и показано, как происходит развертывание необходимого локального окружения. Так разработчики смогут пощупать технологию заранее и быть готовыми к ее выходу из статуса draft.

Workshop: how to develop, build, and deploy Node.js microservices with NestJS & Pulumi

1cd4470d648f863f07c7b5c456213b5f.jpegAndrew Reddikh

Emma

0f079380622b7b0f8c172a98277520aa.pngAlexander Korzhikov

ING

На воркшопе вы получите представление о ключевых принципах, необходимых для разработки, построения и поддержки набора микросервисов на стеке Node.js. Будет рассмотрена специфика создания обособленных докеризованных сервисов на TypeScript с использованием монорепозитория и Turborepo. Воркшоп состоит из обзорной части и упражнений по созданию облачной среды при помощи фреймворка Pulumi. Подойдет разработчиками, которые хотят научиться техникам с использованием Pulumi и Docker для Node.js. 

Эти спикеры уже выступали с другим воркшопом на летней HolyJS — можно посмотреть в нашем плейлисте в ожидании новых знаний.

Сколько это стоит

fb2b8da93ba4117e27c9f473cd62380c.jpegАндрей Мелихов

Osome

Попробуем посчитать, что нам нужно для того, чтобы запустить более-менее приличный сервис на Node.js на VDS (blue-green деплой, балансировка, база данных, логи) и сравним с подходом на AWS-стеке (лямбды, RDS, API-gateway). А может быть даже удастся сравнить и Selectel с Yandex.Cloud.

Языки

Воркшоп. Дивный Elm-овый мир без мутаций и side-эффектов. Искусство чистых касаний

b5e480572cb8bc7d892c3460ab819f47.jpegЯн Новак

Snapview

Функциональная парадигма сейчас пронизывает фронтенд, но мало кто знает, что Elm стоял у истоков этого тренда (да и вообще мало кто знает про Elm). Ян расскажет, что такое Elm и как его правильно готовить. 

Главная задача доклада — показать участникам новый способ думать. Что-то такое, с чем они, скорее всего, еще никогда не сталкивались. Вдобавок показать, что на этом вполне себе хорошо пишется фронтенд.

Доклад будет интересен продвинутым разработчикам (уровня middle и выше), которые хотят узнать новое, размять мозги и, вообще, выйти из зоны комфорта мира трех китов (React, Vue, Angular).

State management

Гигантизм Reatom

288c21a1278ecd81a8142cd6b0bd8c48.jpegАртём Арутюнян

dbeaver

Что, как и зачем можно впихнуть в библиотеку на два килобайта и как на ее основе можно построить приложение любой сложности?

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

Эффектор. Бизнес-логика с легкостью

d25264371c52de602e33a2f7e603a031.jpegЯн Лаврюшев

Pink Unicorn

Обзор менеджера состояний «Эффектор» и пакетов экосистемы.

Другое

Генерируем видео на JavaScript

aca65ea1ed0cfde859995c8db1ac014e.jpegСтёпа Михайлюк

Альфа-Банк

Если ввести в поисковую строку «генерация видео на JavaScript», то гугл вернет 100500 ссылок на видеоплееры. И 99% этих плееров — это просто интерфейс поверх HTMLVideoElement.

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

There and back again, или Нужно ли становиться руководителем

a57e3479b2cf26080d4846299f053ecd.jpegВиталий Харисов

Яндекс

6978f98cf6243a1638e860d3ecc88f08.jpegВладимир Гриненко

Яндекс

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

Какие преимущества разработчика, который в прошлом был руководителем? Нужно ли становиться руководителем? Как им стать? Что делать, если все-таки стал? Как жить, если уже давным-давно руководитель?

Напоследок

На этом программа не заканчивается — ещё будут, например, доклады от партнёров.

Но ещё важнее, что участвовать в HolyJS — это не только сидеть и смотреть видео. Понятно, что собравшиеся в Москве вволю пообщаются, но и у онлайн-участников будут не только монологи: дискуссии после каждого доклада в формате видеосозвона, чаты для вопросов спикерам и не только.

А нам остаётся напомнить, что все остальные подробности про конференцию и билеты — на её сайте. 

© Habrahabr.ru