Руслан Куянец | Reactify
5.86K subscribers
696 photos
52 videos
39 files
276 links
Я IT-специалист, ментор и основатель проекта YeaHub и сообщества Reactify. Здесь рассказываю про Frontend и IT.

Менторство:
https://reactify.ru

YouTube канал:
https://youtube.com/@reactify-it

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
Мне нравится IT за возможность бесконечно развиваться. Приятно и круто, когда твоя экспертиза не ограничивается одной областью. Я считаю, что хороший специалист должен мыслить архитектурно, понимать инфраструктуру и не ограничиваться своей узкой частью, а видеть, как работает приложение целиком.

Помню, как писал пост о том, какие технологии я знаю и с чем успел поработать. Также был список того, с чем хотел бы поработать для полного счастья. В этом списке были Kubernetes и умение создавать инфраструктуру продуктов. И вот я это сделал. Я полностью, от начала и до конца, мигрировал всю инфраструктуру на Kubernetes в YeaHub. Теперь это стартап с enterprise-уровнем инфраструктуры в полном фарше.

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

Круто, что мои ученики изучают процессы разработки на реальном боевом проекте с таким сложным стеком. Мы изучаем разработку на примере YeaHub, учимся работать в команде и писать качественный код. Сейчас мы создаем приложение на Next.js, чтобы ученики получили ещё и опыт с этим стеком.

А ещё наша команда растёт. YeaHub объединяет менторов, которые хотят, чтобы их ученики умели работать, а не просто проходили собесы. Для меня это тоже прокачка, только уже в сторону менеджера, руководителя. Сейчас у нас 100 человек на проекте YeaHub, из которых большинство — новички. Сложно всё это поддерживать и контролировать. Легко, когда ты Product Owner в команде из 20 опытных специалистов, но сложно, когда ты Product Owner в команде из 100 человек, 90% которых — новички без опыта 😅

В общем, большие планы у нас. Работаем дальше 💪🚀

ПС. На 1 скрине расписание в YeaHub. На 2 скрине scrum-доска. На 3 скрине наша документация

Пост, где я говорю о своих навыках и планах:
https://t.me/reactify_IT/1404

Описание инфраструктуры YeaHub:
https://t.me/yeahub/75
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6🤝2
👩‍💻 ВЕСЬ React в одном собеседовании.

Уже собираем интересные вопросы и задачи. Выбран кандидат на прохождение собеса 🤝

Будет пушка 🏆
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45👍5🤝4
Как думаете, нормально ли назвать канал Куянец Руслан | Reactify и сделать ребрендинг?)
Anonymous Poll
30%
Да, будешь человеком, а не обезличенным каналом
7%
Отпишусь
27%
Все равно
36%
Не меняй, итак классно все
8😁4👍2
Готовность 5 минут, скоро съемки 👩‍💻

Вопросы + Задачи

Новый герой видео - Владимир.

Во вторник (надеюсь) выйдет видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥234👍4
Видео оказалось дольше, чем по JS. Сняли одним дублем, без остановки, без монтажа и вставок.

Оцените потом, как надо отвечать на собеседованиях, какие глубокие ответы дает Владимир 💪
🔥36👍5🤝2
👩‍💻 ВЕСЬ React в одном собеседовании. 100 вопросов + 20 задач за 2 часа

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

Рекомендую посмотреть это видео, как и предыдущее. Считай, сразу готов к собесам 😎

Видео уже на канале!
Я не оставляю ссылку, так как видео лучше продвигается, если заходить на него напрямую с YouTube. Это помогает улучшить его рейтинг и увеличить шансы на органическое продвижение.

🔗 Ссылка на вопросы и задачи

00:00:00 Введение: тема собеседования по React
00:01:44 Что такое React
00:02:43 React как библиотека
00:03:40 SPA-приложения
00:05:25 Компонентный подход
00:06:12 JSX
00:07:11 Состояние и props
00:08:05 Рендеринг списков
00:09:44 Условный рендеринг
00:12:38 Триггеры рендера
00:13:08 Изменение пропсов и перерендер
00:14:25 Роль хуков в React
00:15:41 Основные хуки
00:16:37 Дополнительные хуки
00:18:34 Оптимизация с помощью мемоизации
00:21:02 Жизненные циклы компонентов
00:23:01 Фазы жизненного цикла
00:24:21 Жизненные циклы компонента
00:25:13 Жизненные циклы в функциональных компонентах
00:26:47 Ленивая инициализация состояния
00:27:28 React Children
00:28:27 Обработка данных запроса
00:32:59 Рефакторинг компонента
00:37:38 Оптимизация функции
00:41:07 Работа с запросами и событиями
00:42:37 Сервис «Хаб»
00:43:54 Функциональность тренажёра
00:44:55 Задания на консоль
00:46:23 React Memo
00:51:14 Рефакторинг кода
00:54:24 Обработка событий в React
00:55:54 React Fragment
00:56:15 Проп-дриллинг
00:57:10 Контексты в React
00:57:33 Контролируемые и неконтролируемые входы
00:58:27 Порталы в React
00:59:54 Создание контекста
01:00:54 useEffect vs useLayoutEffect
01:01:32 Использование useRef
01:02:31 Кастомные хуки
01:03:30 Мемоизация и кэширование
01:06:04 Хуки как декораторы
01:07:11 UserUseContext
01:08:04 ImperativeHandle
01:09:24 Поднятие и опускание состояния
01:11:06 Реф и форвард реф
01:13:12 Пьюр компонент
01:14:14 Эра баундере (Error Boundary)
01:15:25 React Router
01:16:18 Render Props
01:18:40 Синтетические события
01:19:40 Управляемый и неуправляемый input
01:22:33 Кастомный хук toggle
01:26:26 Пример с меню
01:27:02 Рендеринг компонентов
01:28:30 Изменение состояния isValid
01:31:52 Оптимизация рендеринга
01:33:10 Рефакторинг кода и оптимизация
01:37:53 StrictMode
01:38:51 Код-сплит и ленивая загрузка
01:40:15 Анлодинг (загрузка при монтировании)
01:41:24 React Lazy и Suspense
01:42:23 Инструменты разработчика React
01:43:23 Оптимизация в React
01:44:49 Дополнительные оптимизации
01:45:40 Мемоизация и код-сплитинг
01:46:37 Батчинг в React
01:48:58 Реактивность в React
01:50:53 Реализация реактивности
01:51:20 Прокси-объекты и паттерны
01:52:15 Эвристики React
01:53:55 Принудительный рендер
01:54:20 Кастомный хук с debounce
01:57:47 Рекурсивное отображение структуры
02:02:46 Компонент «Файл»
02:06:38 Рефакторинг рендеринга файлов
02:08:50 Завершение и React 18
02:09:44 Конкурентный режим и хуки
02:10:14 Управление конкурентным режимом
02:11:00 React 19: новые возможности
02:11:44 Планировщик Fiber
02:12:44 Фазы рендеринга и коммита
02:12:48 Конкурентный режим и приоритеты
02:13:49 Серверные компоненты
02:15:09 Серверный рендеринг и гидрация
02:16:14 Асинхронные обновления в React
02:17:51 Виртуальный и теневой DOM
02:18:42 Типы элементов в React
02:19:11 Принцип единой ответственности
02:20:05 Принцип открытости-закрытости
02:21:42 Принципы SOLID в React
02:22:31 Render-пропсы и слоты
02:23:25 Антипаттерн компоновщика
02:24:22 Изучение паттернов
02:26:18 Подготовка к собеседованиям

#react #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
134🔥13👍6
Forwarded from React Frontend | YeaHub
🖥 Middle Frontend разработчик в компанию Аэрофлот

Техническое собеседование. Лето 2025. Вилка: 300к+. Опыт в резюме: 3+ года. Проект:
редизайн сайта Аэрофлота (система бронирования), поддержка старого сайта, дизайн-
система. Были практические задачи (Event Loop, реализация метода groupBy).

Вопросы:
- SEO - для чего нужно, как достигается?
- Как реализовать глубокое копирование обьекта без использования JSON.stringify и
StructuredClone? Какие сложности могут возникнуть?
- Event Loop, что относится к микро и макро задачам?
- Что такое мемоизация, и как её можно использовать для оптимизации производительности?
- Как работает сборщик мусора (garbage collector) в JavaScript? Какие есть стратегии для
управления памятью?

Все 29 вопросов можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥5👍4
Forwarded from YeaHub
🚀 Прокачиваем подготовку к собеседованиям на максимум!

Если ты ещё не заглядывал(а) в 👍 «Авось Прорвёмся» — самое время.
Это проект Ани для самостоятельной подготовки, где есть:
- 1000+ записей реальных собеседований с разбором задач и вопросов;
- контакты рекрутеров;
- гайды по резюме, трудоустройству и стратегиям поиска работы.
- задачи и вопросы с собеседований

Мы в YeaHub продолжаем добавлять собеседования из этих чатов — теперь их можно проходить в тренажёре, тренируя ответы на реальные вопросы работодателей.

🎧 Сначала слушай, как проходят настоящие собесы,
💡 потом — разбирай и практикуй те же кейсы в тренажёре.


Направления: iOS, Android, Frontend, Python, Go, Java, C#, QA, Analytics.

👉 Обучайтесь, общайтесь, растите вместе с YeaHub и Авось Прорвемся
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍43🤝1
👩‍💻 Как учить Redux и не утонуть в абстракциях

Redux часто вводит новичков в ступор: куча обёрток, абстракций, бойлерплейта, бесконечные конфиги… Нужно держать в голове, что где-то «в одном месте лежат данные», а использовать их можно совсем в другом. Всё это может сбивать с толку.
Разберёмся, как подойти к изучению Redux так, чтобы не перегореть и быстро прийти к результату.

🤔 1. Нужно ли знать старый Redux?

Сегодня знать классический Redux (до RTK) — не обязательно. Но понимать, как он устроен, всё же полезно для кругозора.
Лучше начать с Redux Toolkit (RTK) — это современный, удобный способ работы с Redux.

👉 План простой:
- Изучи RTK: пройди короткий курс, сделай мини-проект.
- Потом, для интереса, быстро глянь, как всё было «по-старинке» — чтобы понимать эволюцию и причины появления RTK.

Продвинутый Redux. Redux Toolkit, RTK query, TypeScript.
Полный курс Redux Toolkit + RTK Query для начинающих

📚 2. Освой базу (и не перегружайся)

На старте тебе нужно знать только основу Redux Toolkit:
- как создавать slice,
- как конфигурировать store,
- как использовать dispatch и useSelector,
- и как подключить всё через Provider.

Этого достаточно, чтобы начать. Не лезь сразу в thunk-и, middleware или сложные конфиги — это придёт позже. Главное — понять саму идею:
где-то создаются данные → ты можешь их менять → компонент реагирует и перерисовывается.


👨🏻‍💻 3. Практикуйся на реальных мини-проектах

Следующий шаг — практика. Смотри практические видео или мини-курсы вроде «Админка за 6 часов» — где используется React, RTK и другие знакомые технологии. А так же можно прогнать много небольших проектов, чтобы запомнить воркфлоу.

🔁 Идея проста:
- Делай много маленьких проектов, а не один гигантский.
- Лучше 10 разных по часу, чем один на 10 часов.

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

Build and Deploy a React Cryptocurrency App and Master Redux Toolkit

🚀 4. Создай свой проект

Когда чувствуешь уверенность — делай свой проект:
- подключи API,
- добавь дизайн,
- используй привычный шаблон, но адаптируй под себя.

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

😎 5. Главное — практика

На полноценное освоение основ Redux Toolkit достаточно около 2 недель.
Всё остальное время — практика и интеграция с другими инструментами.
Учись не «изолированно», а в реальных проектах, где Redux работает вместе с React, API, роутингом и UI-библиотеками.

Redux + Redux Toolkit | Продвинутый полный курс

#redux #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥178👍5🤝2
💻 Вся база по JavaScript и React

Я выпустил два видео общей продолжительностью около 5 часов — это полноценная подготовка по всему фронтенду.
Здесь собраны примерно 90% всех вопросов, которые вам могут задать на собеседованиях.

Есть еще темы вроде TypeScript, Next.js, сетей, общих вопросов и верстки — их тоже спрашивают, но это малая часть по сравнению с основным объёмом, который покрывают эти два видео.

🔥 Дальше хочу сделать видео “Весь лайвкодинг по JavaScript за 2 часа”

Планирую собрать 200+ задач, примеров из консоли, рефакторингов и пройтись по всем типам и темам задач, которые встречаются на собесах.
Ранее я уже проводил подобное занятие на менторстве — получилось около 2 часов, но тогда не успел охватить всё.
Теперь хочу подготовить полный роадмап по лайвкодингу и снять полноценное видео.

А пока — можете проверять свои знания и готовиться к собесам по уже выпущенным видео 👇

👩‍💻 ВЕСЬ React в одном собеседовании. 100 вопросов + 20 задач за 2 часа

👩‍💻 ВЕСЬ JavaScript в одном собеседовании. 200 вопросов + 70 задач за 2 часа
Please open Telegram to view this post
VIEW IN TELEGRAM
6044🔥15👍10
Честность и репутация

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

Как доказать человеку, что это действительно работает: что ученик получает созвоны, стажировку, курсы; что ментор не забьёт и что офферы и результаты — реальные. Проблема честных людей сегодня — нужно доказать, что ты честный. Скама много, инфоцыган — тьма. Когда я искал дизайнера для улучшения платформы с курсами, меня заскамили три человека — вот такая я «бабушка». Раньше я всегда находил исполнителей и всё шло гладко, а в этот раз случилась какая-то чёреда неудач. В итоге потерял примерно 40–50 тысяч рублей и в итоге сам сделал работу.

Сейчас действительно много обмана: все хотят лёгких денег. Люди, которые когда-то презирали скаммеров, сами начинают обманывать ради выгоды — интересно, в какой момент это происходит и как они это себе оправдывают? Ведь жить с собой им потом.

Я очень впечатлительный человек. Мой путь от «завода за 40к» до айтишника и основателя продукта начался с того дня, когда я бросил пить и курить — полностью и навсегда. У меня есть страх: если я снова начну пить, я всё потеряю. Не потому что я алкоголик, а потому что верю в карму, в обещания и в сделку с самим собой. Я тот, кем являюсь — я не обманываю людей, трепетно отношусь к своей репутации; знаю, что если обману — это вернётся.

Я хотел бы жить в мире, где просят помощи только те, кто действительно в ней нуждается, а не попрошайки, которые на этом наживаются. Часто на улице мне не по себе: раньше я останавливался и пытался помочь, а теперь чаще прохожу мимо, боясь, что это очередной обман. И потом переживаю, что поступил плохо.

Вывод: будьте внимательны, тщательно проверяйте, что покупаете и с кем работаете. Проверяйте всё много раз — не экономьте на надёжности. Когда я выбирал дизайнера, был выбор: специалист с аудиторией и портфолио за 60к и другой без следов работы за 25к. Лучше бы я взял того за 60к — получил бы качество и сэкономил время, чем копаться с тремя недобросовестными подрядчиками.

Так же меня уже несколько раз обманывали сами ученики. Получали абсолютно всё: и звонки, и полное обучение на протяжении 6–8 месяцев, и поддержку, и стажировку. Потом выходили на рынок — и пропадали. Кто-то удалял переписку и больше не отвечал, кто-то просто игнорировал, а кто-то даже аккаунт в Telegram удалил.

И ведь самое интересное — со всеми у нас были отличные отношения: общались, шутили, встречались. И всё равно вот так… Если тебе человек помог достичь цели, почему нельзя его отблагодарить? Ведь это не предоплата, а именно постоплата — после результата, после выхода на работу. Это не “заплати и надейся”, это “добился — поблагодари”.

После нескольких таких случаев я решил навести порядок и разработал договор. Теперь и ученик спокоен — его не обманут, и я уверен — мой труд не пропадёт зря.

Просто накипело. Решил поделиться.
41👍10🔥7😢5
🔥 10 способов оптимизировать React-бандл

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

1️⃣ Tree shaking
Webpack умеет автоматически выкидывать неиспользуемый код.
Главное — использовать import/export, а не require().
Например, если ты импортировал только map из lodash, в бандл не попадёт весь lodash, а только нужная часть.
Это работает в продакшн-сборке (mode: 'production') и помогает избавиться от «мёртвых» зависимостей.

2️⃣ Code splitting / Lazy loading
Разделяем приложение на отдельные чанки, чтобы не грузить всё сразу.
В React это делается просто:
const Settings = React.lazy(() => import('./Settings'));

Компонент подгружается только при переходе на нужную страницу — это ускоряет загрузку первого экрана и экономит трафик пользователю.

3️⃣ Dynamic imports
Похожи на lazy loading, но гибче: модуль можно подгрузить в любой момент, например, при клике или определённом событии.
button.onclick = async () => {
const { run } = await import('./heavyModule');
run();
};

Так можно динамически подгружать тяжёлые утилиты, графики или редакторы, которые нужны не всем пользователям.

4️⃣ Vendor splitting
Отделяем сторонние библиотеки (React, Lodash, Axios и т.д.) от остального кода.
Они попадают в отдельный чанк (vendors.js), и браузер может кешировать его между обновлениями приложения.
При следующем релизе пользователь скачает только изменившийся код, а не всё приложение заново.

5️⃣ Bundle analyzer
Инструмент webpack-bundle-analyzer показывает визуально, какие файлы занимают больше всего места в бандле.
Это помогает быстро понять, стоит ли заменить тяжёлую библиотеку на более лёгкий аналог или удалить неиспользуемые импорты.
Пример: часто moment.js можно заменить на dayjs, и размер падает на десятки килобайт.

6️⃣ Compression (gzip / brotli)
После сборки важно сжимать файлы перед отправкой пользователю.
На сервере (или CDN) включается gzip или brotli, и вес бандла уменьшается в 2–3 раза.
Например, 600 KB превращаются в 200 KB — и страница загружается ощутимо быстрее.

7️⃣ Minification
Минификация удаляет пробелы, переносы строк, комментарии и переименовывает переменные.
Инструменты вроде Terser или esbuild делают это автоматически при продакшн-сборке.
В итоге код становится компактнее и быстрее загружается, но функционально не меняется.

8️⃣ Dead code elimination
Webpack и Babel умеют находить и удалять код, который никогда не выполнится.
Например:
if (process.env.NODE_ENV !== 'production') {
console.log('debug info');
}

В продакшн-версии эти строки просто не попадут в итоговый бандл.
Это избавляет от лишнего мусора и ускоряет работу.

9️⃣ Asset optimization
Изображения, шрифты и SVG тоже влияют на размер бандла.
Используй оптимизацию — например, image-webpack-loader или svgo.
Преобразуй картинки в современные форматы (.webp, .avif), чтобы они весили меньше.
Иногда просто переконвертация PNG → WebP уменьшает размер в 5–10 раз.

🔟 Prefetch / Preload
Позволяет браузеру заранее подгружать чанки, которые скоро понадобятся.
<link rel="prefetch" href="settings.chunk.js">

Например, пользователь на главной странице, но браузер уже «знает», что он, скорее всего, откроет настройки — и подгружает их заранее.
Это улучшает перформанс без лишней нагрузки на сеть.

⚡️ Даже простое применение этих приёмов может сократить размер бандла в 2–3 раза и сделать приложение визуально «быстрее» для пользователя.
А если подключить анализатор и немного поработать с динамическими импортами — результат будет заметен сразу.


#react #frontend #webpack #vite #оптимизация #performance
#оптимизации #react #frontend #webpack
13🔥10👍7🤝2