Reactify | Frontend Разработка @reactify_it Channel on Telegram

Reactify | Frontend Разработка

@reactify_it


Reactify - это активное Frontend сообщество для бесплатного обучения веб-разработке.

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

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

Закрытый чат:
https://community.reactify.ru

Связь:
@ruslan_kuyanets

Reactify | Frontend Разработка (Russian)

Reactify - это активное Frontend сообщество для бесплатного обучения веб-разработке. Мы предлагаем менторство и поддержку новичкам и опытным разработчикам. Наша цель - создать дружелюбное и вдохновляющее сообщество для всех, кто интересуется Frontend разработкой. У нас вы можете найти полезные статьи, обучающие видео, и многое другое. Мы также проводим вебинары и мастер-классы, чтобы помочь вам развиваться в этой области. Присоединяйтесь к нам, чтобы улучшить свои навыки и обменяться опытом с другими участниками сообщества. Для получения дополнительной информации посетите наш сайт по менторству, подписывайтесь на наш YouTube канал и присоединяйтесь к нашему сообществу. При возникновении вопросов не стесняйтесь связаться с нами по указанному контакту. Присоединяйтесь к Reactify и станьте частью нашего процветающего сообщества Frontend разработчиков!

Reactify | Frontend Разработка

11 Jan, 17:41


📹 Контент план

Во вторник на YouTube выйдет видео с важными концепциями функций в JavaScript. Это те темы, которые часто спрашивают на собеседованиях, а также дают задачи на лайвкодинге. Темы сложные, но важные. Постараюсь объяснить их просто и показать примеры задач, которые встречаются на интервью.

Также я в процессе съемки двух видео: SOLID в React и ООП в React. Плюс готовлю видеогайд по деплою фронтенд приложений. Это будет сборка, которую я разработал методом проб и ошибок, и её можно легко адаптировать под разные проекты.

Есть планы начать новый плейлист по DOM API. На YouTube нет нормальных курсов на эту тему, поэтому я написал материал для учеников и думаю теперь записать серию видео.

Напоминаю, что 12 января — последний день, чтобы записаться на менторство со скидкой 20%. Осенью я пробовал активно рекламировать менторство, но понял, что это не мой подход. Я не хочу агрессивно рекламировать обучение. О менторстве буду писать редко, только если появятся значимые обновления, достижения или что-то, чем действительно стоит поделиться

Всем хороших выходных 🤝

Обзор менторства и отзывы:
@mentor_reactify

Reactify | Frontend Разработка

10 Jan, 12:48


🖥 Гайд: 80% всего Git & GitHub для работы.

Многие начинающие разработчики сталкиваются с трудностями в изучении Git. Большинство видео на YouTube перегружают ненужными командами, что только отпугивает новичков.

В этом гайде я объясняю основную логику работы с Git, чтобы вы могли уверенно использовать 80% возможностей инструмента, которые действительно нужны для повседневной работы.

Кстати, в моем практическом видеокурсе React Новости я специально имитирую командную работу, чтобы вы могли почувствовать себя частью настоящей команды:
https://youtu.be/bD0UXb7kD_k?si=H0ojGCXvf_UxrfLi

Reactify | Frontend Разработка

09 Jan, 08:54


👩‍💻 5 продвинутых паттернов в React

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

- Slot Pattern (Component Injection)
- Render Prop
- Proxy Component
- Function as a Child
- Compound Components

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

#frontend #react #patterns

Reactify | Frontend Разработка

07 Jan, 08:41


😎 Годные видео на канале уже залетели!

Особенно видос про дженерики – это просто топчик. Если бы мне такое видео попалось в начале карьеры, я бы точно быстрее вырос как разработчик. Объяснил логику дженериков, как будто объясняю себе молодому, и добавил кучу примеров. Короче, обязательно к просмотру! 🔥

А в четверг выйдет бомбическое видео – 5 продвинутых паттернов в React.
Будет много примеров, и не абстрактных, а таких, что прям сразу можно брать и использовать в реальных проектах. 20 минут концентрированной годноты. Если бы я такое видео посмотрел на старте, то, наверное, сеньором стал бы лет на пять раньше. 😅

Reactify | Frontend Разработка

07 Jan, 08:26


🖥 Что делает конструкция [K in Status]: \[${K}]``?

Вот код из видео, который вызывает вопросы:


type Status = 'success' | 'error' | 'loading';

type StatusWithBrackets = {
[K in Status]: `[${K}]`
}[Status];


💡 Что здесь происходит?

1️⃣ **[K in Status]: \[${K}]`** Мы создаем объект на уровне типов. Для каждого значения из Status ('success' | 'error' | 'loading'`) генерируются ключи и их значения. Например:

{
success: "[success]",
error: "[error]",
loading: "[loading]"
}


2️⃣ [Status]
Эта часть "вытаскивает" все значения, которые соответствуют ключам Status.
То есть:

"[success]" | "[error]" | "[loading]"


🛠️ Итог: StatusWithBrackets превращается в объединение строк:
"[success]" | "[error]" | "[loading]".


#typescript

Reactify | Frontend Разработка

06 Jan, 09:37


🖥 Задачи с собеседований по TypeScript

Напиши нативный Pick<>
Напиши нативный Omit<>
Напишите кастомный Partial<Type>
Напишите кастомный Record<Keys, Type>

🔗 Сборник заданий по TypeScript

🔗 Платформа для решения задач

#typescript #livecoding #interview

Reactify | Frontend Разработка

06 Jan, 09:15


🖥 5 типичных задач по TypeScript для Frontend собеседований

В этом видео мы разберем 5 типичных задач по TypeScript, которые могут встретиться на собеседовании на фронтенд-разработчика!

- Типизация функций
- Дженерики (Generics)
- Extends, keyof, typeof
- Утилитарные типы (Utility Types)
- Маппинг типов (Mapped Types)

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

#frontend #typescript

Reactify | Frontend Разработка

04 Jan, 11:41


Мои цели на Новый год — и как я помогаю другим достигать своих

В 2025 году я поставил перед собой амбициозные цели:
- 30 000 подписчиков на YouTube.
- 50 000 пользователей YeaHub.
- 100 трудоустроенных учеников.

Я уже начал активную работу:
- Опубликовал два новых видео на YouTube (еще два выйдут на следующей неделе).
- Написал сценарии для будущих выпусков.
- Завершил важные курсы и материалы для своих учеников.
- Расширил YeaHub — добавлены каналы для разных IT-специальностей, которые уже активно ведутся.

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

Реалии рынка труда в 2025 году

Сейчас ситуация на рынке такова, что даже самый талантливый новичок сталкивается с жесткими требованиями:
- Сложно найти работу джуном
- Джуновская зарплата — около 50 000 ₽.
- Возможность попасть на бесплатную стажировку — с перспективой 30 000–50 000 ₽ на старте.

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

Можно ли стать таким специалистом без опыта? Да, это возможно.

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

Для этого нужно:
- Умение писать код — понятный и качественный.
- Знание основного стека технологий.
- Навык ориентироваться в проекте и понимать, как он устроен.
- Знание командных процессов: работа с ветками, ревью кода, CI/CD.
- Способность писать такой код, к которому у других разработчиков не будет вопросов.

Как я могу вам помочь

Если ваша цель на 2025 год — это:
- Трудоустройство.
- Смена профессии.
- Поиск более высокооплачиваемой работы.

Я знаю, как устроен рынок, какие требования сейчас у компаний. Подготовлю к собеседованиям — и покажу, как их проходить. Научу, как получать офферы и строить карьеру в IT.

За время менторства я создал сильное сообщество и крутую программу обучения, которая дает результат. Уверен, она понравится и вам.

Обзор программы и отзывы:
https://t.me/mentor_reactify

Цены и тарифы:
https://reactify.ru

‼️ До 12 января действует скидка 20% на все уровни обучения.

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

Для связи:
@ruslan_kuyanets

Reactify | Frontend Разработка

03 Jan, 10:22


🖥 5 типичных задач по TypeScript на собеседованиях

Советую изучить дженерики в TypeScript перед просмотром моего нового видео с разбором задач. Дженерики — одна из самых частых тем на собеседованиях, поэтому важно их понимать. В видео "Логика дженериков в TypeScript: Generics, Extends и Conditional Types" я подробно разобрал эту сложную тему, объясняя, как дженерики работают, где и зачем их использовать. Это поможет вам не только в задачах, но и в реальных проектах.

Видео с разбором задач выйдет в понедельник. Не пропустите! 🎥

https://youtu.be/2oJAXXjFhnI?si=uIgzOSihpfGqwYK4

Reactify | Frontend Разработка

03 Jan, 10:04


🖥 Практика This

Каким будет вывод этого фрагмента кода?

function f() {
this.x = 5;
console.log(this);
}
var o = new f();
console.log(o.x);


Каким будет вывод этого фрагмента кода?

var o = {
f: function() {
return this;
}
}
console.log(o.f())


Каким будет вывод этого фрагмента кода?

var o = {
f: function() {
return this;
}
}
var o2 = {f: o.f};
console.log(o.f());
console.log(o2.f())


Каким будет вывод этого фрагмента кода?

function f() {
console.log( this );
}

let user = {
g: f.bind(null)
};

user.g();


Каким будет вывод этого фрагмента кода?

function sayHi() {
alert( this.name );
}
sayHi.test = 5;

let bound = sayHi.bind({
name: "Вася"
});

alert( bound.test );


#this #frontend #javascript

Reactify | Frontend Разработка

03 Jan, 09:59


🖥 5 главных правил THIS для Frontend собеседований

В этом видео мы разберем 5 главных правил использования this в JavaScript, которые помогут вам не запутаться и успешно пройти собеседование на фронтенд-разработчика!

- Как работает this в стрелочных функциях.
- Почему важно, как вызывается функция, а не где она создается.
- Как this ведет себя в методах объектов.
- Как режим выполнения (strict или нестрогий) влияет на значение this.
- Как управлять this с помощью методов bind, call и apply.

🔗 СХЕМА-ШПАРГАЛКА ИЗ ВИДЕО

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

#this #frontend #javascript

Reactify | Frontend Разработка

02 Jan, 09:44


Новый год — новые возможности! 🎉

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

2024 год был сложным. Были ошибки, трудности, но и много побед. Много хороших дел и помощи другим. В 2025 году предстоит ещё больше работы над собой.

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

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

«Красная таблетка» Андрея Курпатова,
«Хочу и буду» Михаила Лабковского,
«Квантовый воин» Джона Кехо.

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

Когда я сталкивался с трудностями, особенно на этапе изучения JavaScript, я вспоминал одну важную мысль из этих книг: «Ты не понимаешь это сейчас только потому, что ещё не сталкивался с этим раньше. Всё придёт с опытом. Главное — не останавливаться».

Всё возможно. Главное — начать. 💡

Reactify | Frontend Разработка

01 Jan, 09:14


🎉 Друзья, с Новым годом!

Пусть 2025 год принесет вам развитие, крутые проекты и достойные зарплаты! 🚀
Берегите здоровье, делайте перерывы от компьютера и находите время на себя. 💪
Желаю удачи в новых начинаниях, вдохновения и достижения целей!
Пусть удаленка будет комфортной, а работа приносит удовольствие.
И пусть вокруг будут интересные люди и полезные знакомства!

С новым годом и новым кодом! 🎄

Reactify | Frontend Разработка

30 Dec, 09:30


🖥 Задания для закрепления Дженериков в TypeScript.

Посмотрите видео -> Выполните задания самостоятельно.

Задание 1
Создайте функцию createArray с использованием дженериков. Функция должна принимать два аргумента:
- Тип элемента T,
- Количество элементов length — число, указывающее количество элементов в массиве.

Функция должна возвращать массив из указанного числа элементов типа T. Все элементы массива должны быть равными null.

Напишите тесты для функции:
- Проверьте, что она корректно создаёт массивы для различных типов (`number`, string, `boolean`).
- Проверьте, что длина массива соответствует указанному числу length.

function createArray(length: any): any {
// Реализуйте функцию
}

// Пример теста
const numberArray = createArray(3); // Ожидается: [null, null, null]
const stringArray = createArray(2); // Ожидается: [null, null]


Задание 2
Создайте дженерик Box<T> для упаковки значений. Функция должна принимать значение типа T и возвращать объект с этим значением в свойстве value.

Напишите функцию getBoxValue(box) для извлечения значения из упакованного объекта. Функция должна:
- Возвращать значение из объекта,
- Выбрасывать ошибку, если тип T не соответствует ожидаемому.

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

type Box = {
// Реализуйте дженерик
};

function getBoxValue(box: any): any {
// Реализуйте функцию
}

// Пример теста
const stringBox = { value: 'Hello' };
const extractedValue = getBoxValue(stringBox); // Ожидается: 'Hello'


Задание 3
Используйте дженерики для создания функции mergeArrays<T>(arr1, arr2), которая сливает два массива в один.

Функция должна принимать два массива типа T[] и возвращать новый массив, который содержит все элементы из обоих массивов.

Напишите тесты для функции:
- Проверьте, что она корректно сливает массивы для различных типов (`number`, `string`).
- Проверьте, что она сохраняет правильный тип массива.


function mergeArrays(arr1: any, arr2: any): any {
// Реализуйте функцию
}

// Пример теста
const mergedNumbers = mergeArrays([1, 2], [3, 4]); // Ожидается: [1, 2, 3, 4]
const mergedStrings = mergeArrays(['a', 'b'], ['c', 'd']); // Ожидается: ['a', 'b', 'c', 'd']


#typescript #frontend #generics #дженерики

Reactify | Frontend Разработка

30 Dec, 09:13


🖥 Логика Дженериков в TypeScript: Generics, Extends и Conditional Types

В этом видео рассмотрена одна из ключевых тем в TypeScript — Дженерики (Generics). Вы узнаете, как использовать дженерики для создания универсального и переиспользуемого кода.

Мы подробно разберем:
- Примеры работы с дженериками на функциях, классах, интерфейсах, типах, компонентах и хуках.
- Условные типы (conditional types) и ограничения через extends.
- Логику использования дженериков, чтобы вы могли применять их эффективно и уверенно.

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

После просмотра этого видео вы сможете:
- Разрабатывать универсальные функции и компоненты.
- Переиспользовать код без потери строгой типизации.
- Понимать сложные структуры и писать более читаемый и надежный код.

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

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

#typescript #frontend #generics #дженерики

Reactify | Frontend Разработка

28 Dec, 07:40


Компания: Промсвязьбанк

Позиция: Мидл+

Вилка: 250к-300к

Задачи:
1. На вход дается массив чисел и число-сумма. Нужно вернуть true/false в зависимости от того, есть ли в массиве два числа, которые в сумме дают это число. Нужно решить со сложностью O(n)

2. На вход дается массив кортежей. В каждом кортеже два числа: время подключения пользователя к трансляции и время, когда он отключился. Нужно найти максимальное количество единовременных пользователей.

3. В каком порядке выведутся консоль логи. Измениться ли порядок, если мы вызовем клик по кнопке с помощью button.click()

const container = document.querySelector('#grayContainerOne')
const button = document.querySelector('#buttonOne')

button.addEventListener('click', () => {
Promise.resolve()
.then(() => console.log('STEP 1'))

console.log('STEP 2')
})

container.addEventListener('click', () => {
console.log('STEP 3')
})


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

#interview

Reactify | Frontend Разработка

26 Dec, 06:54


🎮 Изменение свойств DOM и их влияние на Repainting и Layouting

Когда изменяется DOM, браузер перерасчитывает его внешний вид и положение на экране. Этот процесс делится на два этапа:

- Layout (или reflow) – перерасчёт геометрии элементов (размеры, положение, отступы и т.д.).
- Repainting – перерисовка внешнего вида элементов (цвет, тень, шрифт и т.д.) без изменения их размеров или положения.

1. Layout (Reflow)
Что вызывает Layout? Изменения, влияющие на размеры, положение или геометрию элементов. После Layout, браузеру необходимо заново отрисовать элемент (Repainting).

Примеры действий:

// Изменение размеров элемента:
element.style.width = "200px";
element.style.height = "100px";

// Изменение положения (например, top, left, margin, padding):
element.style.margin = "20px";
element.style.top = "50px";

// Добавление или удаление DOM-элементов:
const newDiv = document.createElement("div");
document.body.appendChild(newDiv);

// Изменение шрифта, которое изменяет размеры текста:
element.style.fontSize = "24px";

// Изменение значения display или position:
element.style.display = "block";
element.style.position = "absolute";

Оптимизация: Layout – затратный процесс, поэтому избегайте его частого вызова. Например, изменения в цикле следует группировать через requestAnimationFrame.

2. Repainting
Что вызывает Repainting? Изменения внешнего вида элемента, которые не влияют на его размеры или положение.

Примеры действий:

// Изменение цвета фона:
element.style.backgroundColor = "blue";

// Изменение цвета текста:
element.style.color = "red";

// Изменение тени:
element.style.boxShadow = "5px 5px 10px gray";

// Прозрачность:
element.style.opacity = "0.5";

Оптимизация: Хотя Repainting менее затратный, чем Layout, частые изменения могут вызывать визуальные задержки. Используйте classList для массового применения стилей.

✔️ Советы для оптимизации производительности
Избегайте частого обращения к Layout-метрикам. Методы, такие как offsetWidth, offsetHeight, getComputedStyle и подобные, вызывают синхронный Layout. Если нужно получить несколько значений, лучше сохранять их в переменные.

// Пример (неоптимально):
const width = element.offsetWidth;
const height = element.offsetHeight;

// Пример (оптимально):
const { offsetWidth, offsetHeight } = element;


Используйте классы вместо инлайн-стилей. Вместо применения стилей по одному:

element.style.color = "white";
element.style.backgroundColor = "black";

// Применяйте класс:
element.classList.add("dark-theme");


Используйте transform и opacity для анимаций. Эти свойства не вызывают Layout или Repainting. Браузер оптимизирует их через GPU:

element.style.transform = "translateX(100px)";
element.style.opacity = "0.5";


Группируйте изменения через requestAnimationFrame. Это поможет избежать промежуточных пересчётов:

requestAnimationFrame(() => {
element.style.width = "300px";
element.style.height = "150px";
});


#browser #repainting #reflow

Reactify | Frontend Разработка

24 Dec, 07:46


🔼 Почему важно использовать lazy-loading

Lazy-loading (ленивая загрузка) — это способ загружать ресурсы (изображения, компоненты) только тогда, когда они нужны. Это улучшает скорость загрузки страницы, снижает нагрузку на сервер и экономит трафик.

⚠️ Проблема

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

✔️ Решение

Lazy-loading изображений
Современный HTML позволяет указать атрибут loading="lazy":

<img src="example.jpg" alt="Описание" loading="lazy" />

Это простой и поддерживаемый способ ленивой загрузки.

Lazy-loading компонентов в React
В React можно использовать React.lazy и Suspense:

import React, { Suspense } from 'react';

const HeavyComponent = React.lazy(() => import('./HeavyComponent'));

function App() {
return (
<div>
<h1>Главная страница</h1>
<Suspense fallback={<div>Загрузка...</div>}>
<HeavyComponent />
</Suspense>
</div>
);
}

Компонент HeavyComponent загрузится только тогда, когда он понадобится.

💎 Преимущества
- Ускоряет загрузку страницы.
- Снижает объем передаваемых данных.
- Улучшает производительность и SEO.

Используйте lazy-loading, чтобы сделать ваши проекты быстрее и удобнее для пользователей.

#lazy #react #optimization

Reactify | Frontend Разработка

18 Dec, 06:57


📎 Основные инструменты для анализа и форматирования кода

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

Вот ключевые инструменты, которые помогут избежать этих проблем:

✔️ ESLint — Линтер для JavaScript/TypeScript

Проблема: Ошибки и несоответствие стандартам кода.
Решение:
- Находит баги и предупреждает о потенциальных проблемах.
- Проверяет стиль написания (например, использование ; или длину строк).
- Исправляет часть ошибок автоматически.


const unusedVar = 42; // unusedVar не используется
console.log('Hello')


✔️ Prettier — Инструмент для форматирования кода

Проблема: Разный стиль оформления у разработчиков.
Решение: Приводит код к единому виду (отступы, кавычки, длина строк и др.).


// До форматирования:
function test ( ) {console.log( "Hello!" )}

// После Prettier:
function test() {
console.log("Hello!");
}


✔️ Stylelint — Линтер для CSS/SCSS

Проблема: Ошибки и несоответствие стандартам в стилях.
Решение: Проверяет чистоту и стандарт кода CSS/SCSS.


button {
color: red;
color: blue; /* Ошибка: дублирование свойства */
}


✔️ PostCSS — Обработчик CSS

Проблема: Сложность управления стилями в крупных проектах.
Решение:
- Добавляет вендорные префиксы.
- Минифицирует стили для производительности.


/* Исходный код: */
display: flex;

/* После PostCSS: */
display: -webkit-box;
display: -ms-flexbox;
display: flex;


✔️ Husky — Автоматизация проверки перед коммитом

Проблема: Внесение невалидного кода в репозиторий.
Решение: Запускает проверки (линтеры, тесты) перед коммитом.

Пример: Husky не позволит закоммитить файлы, не прошедшие ESLint.

✔️ lint-staged — Проверка только изменённых файлов

Проблема: Долгое время проверки всего проекта.
Решение: Проверяет только изменённые файлы в коммите, ускоряя процесс.

Пример: Если вы изменили только app.js, линтер будет запущен только для этого файла.

Эти инструменты помогают писать код, который легко поддерживать, тестировать и развивать.

#eslint #husky #prettier #postcss

Reactify | Frontend Разработка

15 Dec, 09:08


💡 Гайд по процессам. Отвечаю на вопросы про опыт, по YeaHub

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

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

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

Вопросы из видео:
1. Расскажи про команду
2. По какой методалогии работали?
3. Расскажи подробнее про процессы
4. Кто давал задачи?
5. Как проходило ревью?
6. Как проходил релиз?
7. С кем из команды взаимодействовали?

Reactify | Frontend Разработка

14 Dec, 13:29


🎄 Скоро Новый год, а это значит — время подарков!

Антон Назаров и его канал ОМ запустили классный розыгрыш с крутыми призами. Участвовать легко, и шанс выиграть есть у каждого. Нужно всего подписаться на 3 канала.

Если хотите попробовать, вот ссылка на участие: Розыгрыш.

Удачи всем! 🚀

Может тоже запустить розыгрыш небольшой😅

Что разыграть?🤔

Reactify | Frontend Разработка

12 Dec, 06:39


Челендж до конца недели

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

1. Переменные и типы данных

Напишите функцию greet(name), которая принимает имя и возвращает строку:
"Привет, [Имя]!"

console.log(greet("Иван")); // Привет, Иван!


2. Массивы и циклы

Дан массив чисел. Напишите функцию sumArray(arr), которая возвращает сумму всех чисел массива.

console.log(sumArray([1, 2, 3, 4])); // 10


3. Объекты

Создайте объект user с полями name, age и методом introduce, который возвращает строку:
"Привет, меня зовут [Имя], мне [Возраст] лет!"

const user = { name: "Иван", age: 30, introduce() { /* код */ } };
console.log(user.introduce()); // Привет, меня зовут Иван, мне 30 лет!


4. Функции высшего порядка

Напишите функцию filterArray(arr, callback), которая принимает массив и функцию-условие, возвращает новый массив с элементами, которые прошли условие.

console.log(filterArray([1, 2, 3, 4], (num) => num % 2 === 0)); // [2, 4]


5. Замыкания

Напишите функцию createCounter(start), которая возвращает объект с методами:
- increment(): увеличивает значение на 1;
- decrement(): уменьшает значение на 1;
- value(): возвращает текущее значение.

const counter = createCounter(5);
counter.increment();
console.log(counter.value()); // 6
counter.decrement();
console.log(counter.value()); // 5


6. Работа с DOM

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

<button id="counter">Нажми меня</button>
<script>
// код
</script>


7. Асинхронное программирование

Напишите функцию fetchData(url), которая делает запрос на указанный URL и возвращает данные. Используйте fetch.

fetchData("https://jsonplaceholder.typicode.com/todos/1").then(console.log);


8. Работа с API

Напишите функцию getPosts(), которая запрашивает список постов с того же API и выводит их на страницу в виде списка.

<ul id="posts"></ul>
<script>
// код
</script>


9. TypeScript

Напишите универсальную функцию fetchData<T>(url: string): Promise<T>, которая делает запрос на указанный URL и возвращает данные с типизацией через дженерик.

- Получение списка постов:

fetchData<Post[]>("https://jsonplaceholder.typicode.com/posts").then(console.log);


- Получение списка пользователей:

fetchData<User[]>("https://jsonplaceholder.typicode.com/users").then(console.log);

Reactify | Frontend Разработка

11 Dec, 06:55


💡 Как понять программирование, если вы не технарь?

Недавно я выступал с докладом в ОМ на важную тему: как гуманитариям и людям без технического образования освоить программирование. В этом посте я собрал основные советы из своего доклада, которые помогут вам преодолеть барьеры и достичь цели.

Развивайте навык обучения
Умение учиться — ключ к освоению программирования. Экспериментируйте с подходами, чтобы найти свой эффективный стиль:

- Читайте материал вслух, затем кратко перескажите своими словами.
- Ведите конспекты, создавайте шпаргалки для быстрого повторения.
- Изучайте темы через разные форматы: видео, книги, интерактивные задания. Это поможет понять материал с разных сторон.

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

Определитесь с мотивацией и целями
Перед началом обучения важно принять твёрдое решение двигаться вперёд. Постоянные сомнения и мысли вроде "вдруг я трачу время впустую?" могут сбить с пути. Для этого:

- Выпишите причины, почему хотите стать разработчиком.
- Определите плюсы и перспективы профессии.
- Поставьте цели с конкретными дедлайнами.

Уверенность в себе и чёткий план помогут не отвлекаться и эффективно использовать время.

Регулярность — залог успеха
Изучение программирования требует постоянства. Большие перерывы приводят к откатам: забываются концепции, снижается мотивация. Найдите комфортный ритм, чтобы занятия стали привычкой.
Если чувствуете, что подходите к сложной теме, не откладывайте. Работайте над ней, пока материал свеж в голове. Это поможет быстрее преодолеть барьер и закрепить знания.

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

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

Погружайтесь в среду
Для эффективного обучения окружите себя программированием:

- Общайтесь с единомышленниками, участвуйте в чатах и встречах.
- Погружайтесь в профессиональную среду через участие в опенсорс-проектах или взаимодействие с более опытными разработчиками.
- Читайте статьи, смотрите доклады, изучайте новые инструменты.

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

Не забывайте об отдыхе
Перерывы и смена активности важны для усвоения информации. Часто решение приходит не во время напряжённых размышлений, а после отдыха. Дайте себе время, чтобы «созреть».
Иногда спустя неделю или даже месяц изучение знакомой темы может стать легче. Новые нейронные связи сформируются, а информация ляжет на уже усвоенные знания.

Reactify | Frontend Разработка

06 Dec, 08:08


Куда пропал?

Сейчас все мое свободное время посвящено развитию YeaHub и менторству. Мы уже запустили платформу, активно дорабатываем её функционал и разрабатываем новые сервисы. Моя цель — создать центральное место для всех IT-специалистов, сформировать активное сообщество, организовывать конференции, митапы и объединять единомышленников для реализации новых проектов и продвижения платформы.

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

Менторство активно развивается: каждую неделю проводим 6–7 групповых занятий — лекции, митапы, собеседования и лайвкодинг. Создали полный курс по фронтенду, завершили курс по Webpack, подготовили материалы по линтерам и форматерам и другим технологиям и инструментам. Ученики трудоустраиваются. Практику расширяем на платформе YeaHub, приходит много новых ребят, заряженных на результат.

С января планирую вернуться к съёмке видео на YouTube. Основные темы — материалы из обучения, такие как Webpack, архитектура приложений, инструменты и другие важные аспекты. Также хочу записать новые курсы по JavaScript и CSS на основе текущих материалов с менторства.

Увольняюсь с текущей работы, чтобы больше времени уделять развитию проектов. Планирую снять офис в центре Краснодара, который станет мини-студией для записи видео и работы.

На этих выходных выступаю с докладом «Как понять программирование, если вы не технарь?» в ОМ. А 16 декабря стартует мастермайнд, где вместе с IT-специалистами, блогерами, менторами и стартаперами будем обсуждать точки роста и возможности для развития. Веду активную айтишную жизнь

Если среди моих подписчиков есть бэкендеры, владеющие Nest.js, и вы хотите принять участие в развитии YeaHub, обязательно пишите! Мы создаём платформу с огромными возможностями.

Как у вас дела? Что нового происходит? Кстати, с наступающим Новым годом! 🎄

https://github.com/YeaHubTeam/yeahub-platform

Reactify | Frontend Разработка

27 Nov, 06:40


🥇 Топ 6 сложных вопросов в JavaScript (По версии YeaHub)

1. Объясните концепцию прототипного наследования в JavaScript.
Для новичков это сложно, так как прототипное наследование отличается от классического, и требует понимания работы с prototype и цепочки прототипов.

2. Что такое __proto__ и prototype?
Термины часто путают, и для их понимания нужно хорошо разобраться в механизме наследования JavaScript.

3. Какие есть способы оптимизации ресурсоемких операций в JavaScript для улучшения производительности рендеринга контента?
Вопрос охватывает широкий круг тем: от дебаунсинга/троттлинга до работы с Web Workers и Virtual DOM.

4. Какие ключевые метрики используются для оценки производительности веб-сайта?
Метрики вроде FCP, LCP, TTI и CLS требуют понимания принципов работы браузеров и инструментов анализа.

5. Что такое CSS Houdini?
Вопрос сложен, так как Houdini относится к продвинутым возможностям CSS, с которыми новички редко сталкиваются.

6. Какие техники используются для критического CSS и ленивой загрузки стилей?
Вопрос требует знания оптимизаций загрузки, которые выходят за рамки базового понимания JavaScript.

❗️ Почему эти вопросы сложны?
- Неочевидные темы для новичков. Начинающие часто изучают основы: переменные, циклы, функции, но не погружаются в нюансы, как, например, прототипное наследование или CSS Houdini.
- Широкий охват знаний. На собеседовании могут ожидать объяснений с примерами и понимания теории, что сложно освоить быстро.
- Редкость на практике. Некоторые темы, как CSS Houdini или критический CSS, менее распространены и не всегда встречаются в повседневной работе.

Не согласны с подборкой? Присоединяйтесь к YeaHub (@yeahub_community) и предлагайте свои вопросы или оценки! Вместе сделаем IT лучше и удобнее для всех 🚀

👍 @yeahub

Reactify | Frontend Разработка

22 Nov, 07:22


Грейд: Мидл+/Сеньор

Компания: Wildberries

Опыт: 3.5

Этап: Финал

Вилка: 250к - 300к

Пример собеседования, на котором копают опыт и софты. Куча вопросов. Собеседование проходило недавно

Вопросы:
- Можешь рассказать, почему решил уйти с текущего проекта?
- Что тебе больше всего нравится в твоей работе?
- Приходилось ли тебе взаимодействовать с другими командами, и что обычно включало это взаимодействие?
- Как вы получали задачи: был ли бэклог, кто их формировал?
- Какую роль ты играл в декомпозиции задач? Какие подходы предлагал, по какому принципу действовал?
- Можешь вспомнить задачу, которая была самой неопределенной? Как справлялся с ней?
- Что, на твой взгляд, важнее — интересы бизнеса или интересы пользователя?
- Продвигаешь ли ты свои идеи и новшества в команде? Как ты аргументируешь свои предложения?
- По каким признакам или метрикам определяешь, что команда действительно продуктивна и приносит ценность?
- Какой был состав команды, в которой ты работал?
- Как у вас проходило код-ревью? Что для тебя в нем важно, и что бы не хотелось видеть?
- Бывали ли сложности в общении с коллегами? Может, вспомнишь какой-то спорный случай?
- Сталкивался ли ты с неэффективными процессами? Как к этому относишься?
- Приходилось ли тебе принимать риски — продуктовые или технические? Как ты к ним подходил?
- Были ли ситуации, когда горели сроки? Как ты считаешь, кто в этом виноват?
- Как ты организуешь свое личное развитие, что читаешь? Какие видишь перспективы?
- Интересно ли тебе попробовать себя в роли менеджера?
- Был ли у тебя опыт самостоятельного ведения проектов?
- Какая из задач была для тебя самой сложной? Почему?
- Как ты организуешь работу над задачей? Используешь ли планирование?
- Получал ли ты развивающий фидбек по своим софт-скиллам? Как на это реагировала?
- Как оцениваешь задачи? Вспомни случай, когда пришлось работать с претензией или получать обратную связь — как действовал?
- Какие у тебя ожидания от новой команды?
- Какие ожидания у тебя к руководителю?
- Как ты оцениваешь качество своей работы?

Reactify | Frontend Разработка

21 Nov, 16:59


Какие претензии у айтишников к новичкам?

Это дополнение к посту о Дедовщине в IT. Стрим про Гейткиперов)
Залетайте на стрим 🔥

https://www.youtube.com/watch?v=fGl689uzDuY

Reactify | Frontend Разработка

20 Nov, 16:15


🚀 [Версия 1.0.0] - Релиз платформы!

Привет, друзья! 🎉 Мы рады сообщить, что первая версия нашей платформы готова и доступна! В этой версии:

✔️ Добавлен сервис подготовки к собеседованиям.

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

🔥 Что дальше? Следите за обновлениями – скоро будет ещё больше интересных возможностей!

👍 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru

#release #news #update #yeahub

Reactify | Frontend Разработка

20 Nov, 12:06


👀 Контроль сотрудников на работе: история из личного опыта

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

Рабочий день начинался с обязательного включения тайм-трекера. Программа фиксировала всё: время работы, активность на клавиатуре и мыши, а также записывала экран. Если активность снижалась, мог последовать вопрос от тимлида: "Почему у тебя так мало активности? Ты целый день ничего не делал?".

Самое сложное заключалось в том, что после 10 минут бездействия таймер сбрасывался на 10 минут назад и останавливался. Нужно было набирать ровно 8 часов активности — ни минутой меньше. Представьте, как я бегал в туалет, делал чай или обедал! У меня не было ноутбука, поэтому я буквально каждые 8 минут возвращался к компьютеру, чтобы не сбился таймер.

Работать в таких условиях было невероятно тяжело. Обычное чтение документации или размышления над задачей превращались в стресс: нельзя просто сидеть и думать, обязательно нужно было шевелить мышкой. Ты не сосредотачиваешься на задачах, а следишь за таймером.

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

А у вас был подобный опыт? Делитесь в комментариях!
Если интересна тема, рекомендую видео Антохи: https://youtu.be/3eMAc4Dc5sY.

Флешбеки до сих пор... 😬

Reactify | Frontend Разработка

18 Nov, 09:34


🤫 Почему ИИ не заменит программистов

Ко мне часто приходят на консультации по фронтенд-разработке, и один из самых популярных вопросов звучит так:
"А стоит ли вообще начинать учиться, если ИИ скоро заменит программистов? Я боюсь, что выучу всё, а работы не будет, потому что всё будут делать машины."

Я решил поделиться своими мыслями на эту тему. Вот несколько причин, почему я уверен, что ИИ не заменит программистов:

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

Креативность и нестандартное мышление
Программирование — это не просто написание кода. Это поиск новых решений, генерация идей и эксперименты. ИИ отлично справляется с рутиной, но творческий процесс, интуиция и способность мыслить "вне коробки" остаются человеческой прерогативой.

Командная работа
Разработка — это всегда коллективный процесс. Обсуждения, обмен мнениями, компромиссы и гибкость — ключевые элементы успешного проекта. Навыки общения и эмоциональный интеллект пока что неподвластны машинам.

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

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

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

Недавно слышал мнение, что ИИ достиг своего "потолка эффективности". Увеличение мощностей больше не дает таких же резких улучшений, как раньше. Это отражает принцип Парето: 20% усилий дают 80% результата.

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

А что вы думаете?

#ai

Reactify | Frontend Разработка

13 Nov, 14:08


🥸 Дедовщина в IT

Я давно вышел из всех чатов, где "помогают" новичкам. Почему? Из-за дедов, которые самоутверждаются на начинающих. Сколько раз я видел, как новичка прессуют: "это не твое", "иди обратно на завод", "ты тупой". Как только начинаешь говорить о курсах, сразу: "Какие курсы? Ты чего? Книги читай, и только на английском! Документацию учи!"

IT — обычная сфера, как и все. Не надо делать из нее романтику или заставлять каждого изучать computer science, алгоритмы и т.п. Хороший фронтендер — это человек, который применяет технологии, справляется с задачами и умеет писать код.

Если будет время, посмотрите это видео на досуге. База 💯.

https://www.youtube.com/watch?v=MGWZP4OjCHM

Reactify | Frontend Разработка

06 Nov, 07:38


👩‍💻 React Новости

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

Ставьте лукас, если смотрели React Новости 👍

🔗 Ссылка на видео

Reactify | Frontend Разработка

05 Nov, 17:23


🥵 Стресс после трудоустройства

Трудоустройство в IT — это всегда вызов. Независимо от уровня опыта, у большинства возникают одинаковые опасения: "Разберусь ли в проекте?", "Не разочарую ли команду?", "Смогу ли выполнить ожидания?" Эти вопросы сопровождают нас не только в начале карьеры, но и спустя годы работы.

Новое место — это не просто новые задачи, но и новые процессы, технологии, подходы, и самое главное — ожидания. Даже опытные разработчики сталкиваются с внутренним страхом, что не подойдут по требованиям или что нагрузка окажется непосильной. Именно из-за этого многие специалисты годами остаются в одной компании, опасаясь перемен.

Такой стресс и страх не редкость, и он знаком почти каждому, кто когда-либо сталкивался с переменами. Помните, что важно давать себе время на адаптацию, ведь никто не требует, чтобы вы стали экспертом за одну ночь. Спокойная уверенность и доверие к своим силам помогут снизить стресс и сделать адаптацию легче.

💡 Вот несколько советов для снижения стресса на новом месте:

1. Дайте себе время
Не требуйте от себя всего сразу. Привыкание к проекту занимает время.

2. Задавайте вопросы
Никто не ожидает, что вы всё знаете. Спрашивайте — это быстрее приведет к пониманию задач.

3. Осваивайте поэтапно
Беритесь за одну задачу за раз, избегайте перегрузки.

4. Найдите коллег для поддержки
Опытные сотрудники могут поделиться знаниями и упростить адаптацию.

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

6. Снимите самокритику
Ошибки неизбежны. Оценивайте свои усилия, а не только результаты.

7. Берегите здоровье
Режим сна и питания помогут избежать выгорания.

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

https://www.youtube.com/live/KMsrfLvRLN0?si=TEFseo6--7wDmqGF&t=520

Reactify | Frontend Разработка

05 Nov, 08:24


⛔️ Топ причин, по которым могут уволить во время испытательного срока

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

На пет-проектах многие привыкают работать без четких стандартов: если текст не выровняли, то "потом как-нибудь". Ведь заказчика нет, никто не будет настаивать на исправлениях. Но это не норма. В продакшн-разработке у вас есть макет, и вы обязаны реализовать его точно до пикселя.

1. Невнимательность к качеству верстки
Представьте, что вы — мидл-разработчик в компании с зарплатой 200к. Если на проверку вы отправите верстку, не соответствующую макету, вас не только неоднократно отправят на доработку, но и запомнят как ненадежного сотрудника. Поверьте, никто не захочет тратить дни на тестирование вашего кода, если вы каждый раз правите только одно замечание, а следом появляются новые. Это загружает тестировщика, который гоняет вас с правками 4-5 дней, и раздражает коллег, вынужденных ревьюить один и тот же код снова и снова.

💡 Что делать:
- Проверяйте верстку на соответствие макету с помощью Pixel Perfect.
- Старайтесь устранять все замечания разом, чтобы не засыпать коллег бессмысленными коммитами.


2. Отправка неаккуратных Pull Request
Задача — отправлять чистый, аккуратный коммит с минимальным количеством файлов и изменений. Если в файле не было задачи или необходимости в правках, не вносите туда изменения, даже если это просто пробел, кавычка или отступ. Изменение структуры, не связанной с задачей, отвлекает и создает беспорядок в истории проекта.

💡 Что делать:
- Добавляйте в PR только те файлы, которые реально были затронуты задачей.
- Не меняйте стили и форматирование файлов, если это не связано с вашей задачей.


3. Отправка нерабочей функциональности
Если вы сделали кнопку для открытия меню, убедитесь, что меню действительно открывается. Когда тестировщик запускает ваше приложение и видит, что оно не работает, это считается серьезной ошибкой. Подобные ошибки сразу попадают в "черный список". Ошибки функциональности — это прямой показатель недоработки перед сдачей.

💡 Что делать:
- Тестируйте каждую функцию локально перед отправкой на ревью.
- Проверяйте на разных разрешениях экрана и в разных браузерах, чтобы избежать багов.


4. Игнорирование пограничных случаев
Ваш код должен обрабатывать все возможные случаи, в том числе и пограничные. Например, пустые данные, необычные пользовательские вводы, нестандартные разрешения экранов. Это позволяет избежать "неожиданных" ошибок на продакшене и сохранить положительную репутацию кода.

💡 Что делать:
- Обдумайте все сценарии, в которых может использоваться функциональность, и протестируйте их.
- Чаще перезагружайте страницу, чтобы понять, возникнет ли ошибка, если данные придут пустыми, или нужного поля не будет


❗️ Следите за тем, что вы даете на проверку!

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

Учитесь работать над ошибками и доводить каждую задачу до идеала.

#frontend #work

Reactify | Frontend Разработка

03 Nov, 10:13


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

В итоге не всегда самые компетентные и талантливые специалисты находят работу — часто именно те, кто умеет «адаптироваться» под автоматические фильтры и алгоритмы. Это ситуация, когда накрутка и ухищрения становятся частью игры. И все потому, что качественная работа выполняется лишь единицами. «Смузихлеб» — явление, где эффективность приносится в жертву потоку задач.

Накрутка, фильтры и нейронки не нужны, если каждый начнет выполнять свою работу на 100%.

Посмотрите видео Антохи, рекомендую 👍

🔗 https://www.youtube.com/watch?v=XMh6jFELLsw

Reactify | Frontend Разработка

01 Nov, 09:12


🖥 Функция-конструктор в JavaScript

Она позволяет задавать шаблон для объектов, чтобы каждый новый объект, созданный через этот конструктор, имел определенные свойства и методы. Давайте разберем, как работает функция-конструктор.

✏️ Создание функции-конструктора
Функция-конструктор выглядит как обычная функция, но она пишется с заглавной буквы по соглашению, чтобы отличаться от других функций. Внутри конструктора используется this для задания свойств создаваемого объекта.


function Person(name, age) {
this.name = name; // свойство name
this.age = age; // свойство age
}


🎮 Создание объектов с помощью конструктора
Чтобы создать объект с помощью конструктора, используется оператор new. Он:

- Создает новый пустой объект.
- Связывает его с this внутри конструктора.
- Возвращает этот объект.


const person1 = new Person("Alice", 25);
console.log(person1.name); // Alice
console.log(person1.age); // 25


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


function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log(`Hi, I'm ${this.name}`);
};
}

const person1 = new Person("Alice", 25);
person1.sayHello(); // Hi, I'm Alice


⚙️ Оптимизация с prototype
Для методов можно использовать prototype, чтобы метод существовал в одном экземпляре и не копировался для каждого объекта.


function Person(name, age) {
this.name = name;
this.age = age;
}

Person.prototype.sayHello = function() {
console.log(`Hi, I'm ${this.name}`);
};

const person1 = new Person("Alice", 25);
const person2 = new Person("Bob", 30);

person1.sayHello(); // Hi, I'm Alice
person2.sayHello(); // Hi, I'm Bob


💭 Как работает this в конструкторе
В функции-конструкторе this указывает на новый объект, который создается при вызове через new. Это позволяет настраивать свойства и методы нового объекта.

💎 Продвинутые аспекты
- Наследование. Используя прототипы, можно создавать наследуемые свойства и методы.
- Проверка с instanceof. Для проверки, создан ли объект через конструктор, можно использовать instanceof.


console.log(person1 instanceof Person); // true


#javascript #this #function

Reactify | Frontend Разработка

31 Oct, 06:48


👩‍💻 Принципы Redux

Redux основывается на нескольких ключевых принципах, которые помогают организовать и управлять состоянием приложения.

🔒 Единое хранилище (Single Source of Truth)

В Redux есть только одно общее хранилище, которое содержит все состояние приложения. Это облегчает управление состоянием и делает его предсказуемым.

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


const initialState = {
todos: [],
user: null,
};

// Всё состояние хранится в одном объекте
const state = {
todos: ['Задача 1', 'Задача 2'],
user: { name: 'Иван', age: 30 },
};


👀 Состояние только для чтения (Read-Only State)

Единственным способом изменения состояния является отправка действия (action). Это гарантирует, что изменения состояния происходят только через определенные точки (actions), что делает их предсказуемыми.

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


// Действие для добавления задачи
const addTodo = (text) => ({
type: 'ADD_TODO',
payload: text,
});

// Изменение состояния только через действие
store.dispatch(addTodo('Новая задача'));


Чистые функции редюсеры (Pure Functions)

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

Чистые функции делают состояние предсказуемым и упрощают отладку. Они не имеют побочных эффектов и не влияют на внешние состояния.


const todoReducer = (state = initialState, action) => {
switch (action.type) {
case 'ADD_TODO':
return {
...state,
todos: [...state.todos, action.payload],
};
default:
return state; // Возвращаем новое состояние, не изменяя текущее
}
};


⬇️ Однонаправленный поток данных (Unidirectional Data Flow)

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

Однонаправленный поток данных упрощает понимание, как данные перемещаются в приложении. Он делает отладку проще, поскольку вы всегда знаете, откуда приходят данные и как они изменяются.


// Пример потока данных
const mapStateToProps = (state) => ({
todos: state.todos,
});

// Компонент получает данные
const TodoList = ({ todos }) => (
<ul>
{todos.map((todo, index) => (
<li key={index}>{todo}</li>
))}
</ul>
);

// Связываем компонент с Redux
export default connect(mapStateToProps)(TodoList);


#redux #frontend #react #flux

Reactify | Frontend Разработка

18 Oct, 08:06


Паттерн Адаптер в JavaScript. Продвинутый Frontend на реальных примерах

В этом видео мы рассмотрим Паттерн Адаптер (Adapter) в контексте JavaScript и Frontend разработки.

Для проекта Рецептов используем Webpack, JavaScript.

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

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

#frontend #patterns #adapter

Reactify | Frontend Разработка

14 Oct, 15:17


✉️ YeaHub объединяет IT-специалистов.

YeaHub — это IT-платформа, предоставляющая разнообразные сервисы для профессионального развития специалистов в сфере информационных технологий. Платформа включает в себя функции для карьеры, обучения, менторства, собеседований и участия в конференциях и соревнованиях.

Пользователи могут создавать профессиональные профили, публиковать статьи, общаться и обмениваться опытом с другими специалистами, а также участвовать в мероприятиях и проектах. Верификация знаний гарантирует, что все участники являются квалифицированными профессионалами. Доступ к сервисам платформы бесплатен для активных участников сообщества. YeaHub стремится к взаимной поддержке и совместному росту в динамично меняющемся мире IT.

Мы стремимся создать центральное место и единую точку входа в мир IT, охватывая все сферы: обучение, развитие, карьеру, общение и личный брендинг. Это будет социальная сеть, специально разработанная для IT-специалистов.

В первую очередь мы реализуем сервисы для обучения и развития, включая:

✔️ Проверку знаний и подготовку к собеседованиям
✔️ Платформу для публикации и чтения статей
✔️ Сервис для анонсирования и участия в мероприятиях в IT
✔️ Полный roadmap по всем профессиям в области технологий

В дальнейшем мы планируем запустить более 20 дополнительных сервисов. Главная особенность нашей платформы заключается в едином профиле, который будет отображать всю активность пользователя в IT: количество написанных статей, имеющиеся навыки, посещенные мероприятия и многое другое.

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

#yeahub

Reactify | Frontend Разработка

11 Oct, 07:07


⁉️ Почему использование классов полезно

- Инкапсуляция логики: Классы позволяют группировать связанные функции и данные вместе. В нашем примере ApiService отвечает только за HTTP-запросы, а TodoService — за управление задачами. Это разделение ответственности облегчает понимание и поддержку кода.
- Повторное использование кода: Общие методы, такие как get, post, put, delete в ApiService, могут быть использованы разными сервисами (не только TodoService). Это уменьшает дублирование кода и облегчает внесение изменений в одном месте.
- Удобство тестирования: Классы облегчают написание модульных тестов. Можно протестировать методы классов изолированно, замокав зависимости, такие как API-запросы.
- Масштабируемость: При росте приложения можно легко добавлять новые сервисы, наследуя или расширяя существующие классы. Это делает архитектуру приложения гибкой и устойчивой к изменениям.
- Поддержка и читаемость: Структурированный код легче читать и поддерживать, особенно в больших командах. Классы с четко определенными методами и назначением позволяют быстро понять, где искать нужную функциональность.
- Вынесение общих частей: Общие части, такие как базовый URL или заголовки запросов, можно определить в одном месте (ApiService), что упрощает их изменение и управление.

Использование классов для организации функциональности API и бизнес-логики способствует созданию чистой архитектуры, улучшает качество кода и облегчает дальнейшую разработку и поддержку приложения.

#frontend

Reactify | Frontend Разработка

11 Oct, 07:07


Организация кода с использованием классов в JavaScript

Организация кода с использованием классов в JavaScript позволяет структурировать функциональность приложения, делая его более читаемым, поддерживаемым и масштабируемым. Рассмотрим два примера классов: один для управления API-запросами, другой для работы с задачами TODO.

⌛️ Класс для организации API-запросов
Этот класс будет отвечать за выполнение HTTP-запросов к различным конечным точкам API. Он может содержать методы для GET, POST, PUT, DELETE и других типов запросов, а также обрабатывать общие параметры, такие как заголовки и обработка ошибок.


class ApiService {
constructor(baseURL, defaultHeaders = {}) {
this.baseURL = baseURL;
this.defaultHeaders = defaultHeaders;
}

async request(endpoint, method = 'GET', data = null, headers = {}) {
const config = {
method,
headers: { ...this.defaultHeaders, ...headers },
};

if (data) {
config.headers['Content-Type'] = 'application/json';
config.body = JSON.stringify(data);
}

try {
const response = await fetch(`${this.baseURL}${endpoint}`, config);
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.message || 'Ошибка сети');
}
return await response.json();
} catch (error) {
console.error(`Ошибка при выполнении запроса: ${error.message}`);
throw error;
}
}

get(endpoint, headers = {}) {
return this.request(endpoint, 'GET', null, headers);
}

post(endpoint, data, headers = {}) {
return this.request(endpoint, 'POST', data, headers);
}

put(endpoint, data, headers = {}) {
return this.request(endpoint, 'PUT', data, headers);
}

delete(endpoint, headers = {}) {
return this.request(endpoint, 'DELETE', null, headers);
}
}


🖥 Класс для работы с TODO
Этот класс будет использовать ApiService для взаимодействия с сервером и управлять задачами TODO. Он будет включать методы для создания, получения, обновления и удаления задач.


class TodoService {
constructor(apiService) {
this.api = apiService;
this.endpoint = '/todos';
}

// Получить все задачи
getAllTodos() {
return this.api.get(this.endpoint);
}

// Получить задачу по ID
getTodoById(id) {
return this.api.get(`${this.endpoint}/${id}`);
}

// Создать новую задачу
createTodo(todoData) {
return this.api.post(this.endpoint, todoData);
}

// Обновить существующую задачу
updateTodo(id, updatedData) {
return this.api.put(`${this.endpoint}/${id}`, updatedData);
}

// Удалить задачу
deleteTodo(id) {
return this.api.delete(`${this.endpoint}/${id}`);
}
}


✔️ Пример использования

const api = new ApiService('https://api.example.com', {
Authorization: 'Bearer your-token-here',
});

const todoService = new TodoService(api);

// Получить все задачи
todoService.getAllTodos()
.then(todos => console.log(todos))
.catch(error => console.error(error));

// Создать новую задачу
todoService.createTodo({ title: 'Новая задача', completed: false })
.then(todo => console.log('Создано:', todo))
.catch(error => console.error(error));

Reactify | Frontend Разработка

08 Oct, 17:52


Какие проблемы вас ждут во время обучения и как их обойти?

Недавно выступал для студентов с докладом. Список проблем из видео:
🌧 Что учить? Так много технологий, как выбрать?
🌧 Я ничего не запоминаю, слишком много терминов
🌧 Я не могу понять тему
🌧 Я не могу писать код сам
🌧 Мой код не работает
🌧 Я застрял, не знаю, что учить дальше
🌧 Я теряю мотивацию и мне лень учиться

Будет полезно посмотреть для новичков. Начало с 48:40 минуты

https://boosty.to/m0rtymerr/posts/b82357bd-fa1b-4f6d-8205-6acf9ed92f91?share=post_link

Reactify | Frontend Разработка

07 Oct, 07:18


YeaHub, уже скоро, но это не точно😅

Скоро сделаю пост о платформе YeaHub. Расскажу, что это, какая идея

До 4 ноября будем тестировать!

#yeahub

Reactify | Frontend Разработка

07 Oct, 07:09


🛡 Пример сильных достижений в ваше резюме.

Примерно такие достижения добавляют ученики после практики в YeaHub.

✔️ Запустил ленты новинок и популярных материалов, автоматически обновляющиеся через Redux Toolkit и RTK Query для получения данных, что упростило поиск актуального контента и повысило его доступность.

✔️ Внедрил систему избранного для сохранения материалов в личном кабинете с помощью Redux Toolkit для управления состоянием, что позволило пользователям возвращаться к важным статьям и конспектам в удобное время.

✔️ Разработал рейтинговую систему для преподавателей, оценивающую активность и популярность материалов с использованием данных из RTK Query, что мотивировало авторов и повышало качество контента на платформе.

✔️ Реализовал панель управления публикациями для преподавателей, используя React, Redux Toolkit и Formik для создания форм, что позволило авторам легко создавать, редактировать и удалять свои материалы, а также отслеживать популярность публикаций и взаимодействие с пользователями.

Что тут есть?
1. Сильные слова (например, "Запустил", "Внедрил").
2. Ключевые слова (такие как "Redux Toolkit", "RTK Query").
3. Бизнес-кейсы (например, рейтинг преподавателей).
4. Польза для бизнеса (упрощение поиска актуального контента).

В YeaHub уже расписано более 50 достижений. Суть в том, что ученики реально делали это, и у них есть примеры, на которые можно посмотреть, чтобы понять, что изучить. Также есть гайд и конспект по архитектуре YeaHub — как происходит деплой, как настроен Webpack, как работает CI/CD и так далее. Это закрывает любые вопросы по опыту на собеседовании. Я называю это "умной накруткой опыта", когда ты прокачиваешься и практикуешься 2-3 месяца, а потом идёшь трудоустраиваться на Middle с реальными кейсами, а не выдуманными из головы.

👍 Полный гайд по резюме есть тут - ГАЙД В НОУШЕН

Reactify | Frontend Разработка

05 Oct, 08:24


👍 Сегодня я выступаю на стриме для студентов технических вузов с сообществом "Осознанная Меркантильность". Тема: "Какие проблемы вас ждут во время обучения и как их обойти". Честно говоря, у меня до сих пор есть страх публичных выступлений — стеснение и нервозность всё ещё со мной.

Что интересно, сейчас я нахожусь в отпуске: отель 5 звезд с "всё включено", бассейн, спа, развлечения на любой вкус. Но, несмотря на это, я осознанно выбираю выделить 3-4 часа своего времени, чтобы участвовать в стриме. Это мой способ выйти из зоны комфорта. На протяжении всего отпуска я продолжаю работать над проектом YeaHub, созваниваться с учениками и готовить лекции. Это ещё один выход из зоны комфорта, который приближает меня к успеху.

А что вы делаете, чтобы достичь своих целей?👇👇👇

Reactify | Frontend Разработка

04 Oct, 15:23


👩‍💻 Архитектура Frontend с Нуля до Продакшена. Docker, Webpack, CI/CD, React, Deploy

В этом видео мы подробно рассмотрим архитектуру Frontend-приложений, начиная с технологий и инструментов, заканчивая настройками и деплоем. Это будет комплексный обзор всех ключевых компонентов архитектуры: React, Redux, Storybook, Webpack, Docker, Nginx, CI/CD и других технологий.

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

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

🔗 Вы знаете, как с пользой провести выходные: ВИДЕО

#frontend