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

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

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

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
React Новости. Создаем интерфейс приложения. React приложение новостей. [1]

Для тех, кто не видел React Новости. Топовый плейлист охватывающий:

Технологии:
- React
- Redux Toolkit
- React Router
- RTK Query
- TypeScript
- FSD

Основные фичи:
- Запросы на сервер
- Кастомные хуки
- Пагинация и фильтрация
- Поиск
- Слайдер (Slider)
- Хук useDebounce
- Рефакторинг кода
- Скелетоны (Skeleton)
- Контекст и многое другое

https://youtu.be/bD0UXb7kD_k?si=ZM5emp9x-jIetFqs
👍15🔥7💯1
💸 Сколько просить денег на собеседовании?

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

📊 Сколько просить?

Я встречал ребят с 3 годами опыта, которые пишут в резюме 60–100 тыс. рублей. Это вызывает вопросы:
– Возможно, человек «накрутил» опыт и боится просить больше?
– Или он просто не знает свою цену?
– Думает, что чем меньше попросит, тем больше предложений будет

С другой стороны, есть люди с таким же опытом, которые без страха называют 150–200 тыс. рублей, и им дают эту сумму.

Но вот интересное наблюдение: иногда человек проходит несколько собеседований подряд. На первом он просит 200 тыс., получает оффер и думает: «Хорошо, значит, столько я и стою». Но тут он идет на следующее собеседование и, ради интереса, решает попросить 250 тыс., думая: «А вдруг?» И что происходит? Ему соглашаются заплатить эту сумму!

Это простая истина:
👉 Сколько попросишь, столько и дадут


✔️ Почему важно оценивать себя правильно?

Вы наверняка видели, как человек с 6 годами опыта просит 250 тыс. рублей, в то время как другие с 3 годами просят ту же сумму.
Что здесь происходит? Люди с большим опытом могут:
– Переоценивать рынок, считая, что их достижения менее ценны.
– Не уверены в своей способности торговаться.

👉 Пока ты волнуешься о своей компетентности, тебя будут обходить менее компетентные люди


🛍 Как правильно торговаться?

Часто мои ученики получают оффер, например, на 200 тыс. рублей и готовы сразу согласиться. Но я всегда советую торговаться. Почему?
90% попыток заканчиваются успехом:
– С 200 поднимают до 230–250 тыс.
– С 250 до 280 тыс.

👉 Компании заранее закладывают бюджет на переговоры. Если вы соглашаетесь сразу, вы оставляете деньги на столе. Это рынок, какой дурак сразу же предложит максимальную цену?


💡 Вывод

На собеседовании важно помнить: вы — не просто кандидат, вы — решение проблемы компании. Если вы понимаете свою ценность, то озвучьте её. А если предложат меньше, торгуйтесь!

Как вы оцениваете свою зарплату? Делитесь в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍21💯5🔥21
8000 👍

Завтра новое видео - SOLID в React

Надеюсь к весне будет 10.000 на канале 📊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥93
👩‍💻 Принципы SOLID в React

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

- Single Responsibility Principle (Принцип единственной ответственности)
- Open/Closed Principle (Принцип открытости/закрытости)
- Liskov Substitution Principle (Принцип Барбары Лисков)
- Interface Segregation Principle (Принцип разделения интерфейса)
- Dependency Inversion Principle (Принцип инверсии зависимостей)

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

🔗 Репозиторий

#react #solid #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥62🤝2
👩‍💻 Улучшайте свой код с полезными паттернами и принципами

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

📹 Принципы SOLID в React
https://youtu.be/8WsrMKw8w6I?si=Bj1Hkhaeod-PpnPA

📹 5 продвинутых паттернов в React
https://youtu.be/JVtWJ6BxKas?si=DxUTxxqf_fxOamSS

Потратьте выходные с пользой, улучшая свои навыки и применяя лучшие практики в React
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥53🤝1
Всего 129 вакансий для фронтенд-разработчиков без опыта.

Ужас. Как новичку вообще найти работу в таких условиях? 😡

Единственный вариант — где-то набраться опыта и дотянуться хотя бы до фильтра «от 1 до 3 лет». Но что указывать за опыт? Обучение? Пет-проекты? А это уже похоже на накрутку. Если «накручивать» год, то почему не три? С тремя годами опыта зарплаты больше, а сложность и задачи такие же.

Дилемма.
💯16👍5🔥21
🖥 5 типичных задач по JavaScript на собеседовании

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

- Задача на строки, методы и циклы
- Задача на строки, циклы и условия
- Задача на колбек, массивы, прототип и циклы
- Задача на объекты, массивы, графы и цепочки
- Задача на промисы, замыкания и асинхронность

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

#frontend #javanoscript #функции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥155👍5
🖥 Частые задачи на собеседованиях

Как и обещал в видео, предоставляю задачи с собеседований

1. Реализуйте полифил myFilter точно копирующий filter метод
Array.prototype.myFilter = function(callback) {

};

const arr = [1, 2, 3, 4, 5];

const filteredArr = arr.myFilter(x => x > 2);
console.log(filteredArr); // [3, 4, 5]


2. Найти все индексы начала вхождения анаграмм подстроки в строке
function searchAllAnagramsInString(str, substr) {

}

// Пример использования:
console.log(searchAllAnagramsInString("cbaebabacd", "abc")); // [0, 6]


3. Найти самый загруженный день в отеле
function findMaxDayWithClients(bookings) {
// Реализуйте логику поиска самого загруженного дня
}

findMaxDayWithClients([[1, 5], [2, 4], [3, 6]]); // 3
// В день 3 отель был максимально загружен (3 клиента)


4. Представим, что у нас нет встроенных промис-комбинаторов, как можно реплицировать функциональность Promise.all?

function customPromiseAll(promises) {

}

// Пример использования
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = new Promise((resolve) => setTimeout(resolve, 100, 'foo'));

customPromiseAll([promise1, promise2, promise3])
.then(results => console.log(results)) // [3, 42, 'foo']
.catch(error => console.error(error));


5. Необходимо сгруппировать транзакции по userID.
const transactions = [
{ userID: "user1", amount: 200, date: "2023-01-01" },
{ userID: "user2", amount: 500, date: "2023-01-02" },
{ userID: "user1", amount: 300, date: "2023-01-03" },
{ userID: "user3", amount: 400, date: "2023-01-01" },
{ userID: "user2", amount: 150, date: "2023-01-04" },
{ userID: "user3", amount: 250, date: "2023-01-02" },
{ userID: "user4", amount: 100, date: "2023-01-01" }
];

function topThreeUsersByTotalAmount(transactions) {
//тут
}


#javanoscript #лайвкодинг
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6🤝3😁1
Forwarded from YeaHub
YeaHub – 1 год! 🎉

30 января 2024 года я собрал команду из сообщества Reactify, и вместе мы придумали название нашего проекта, заложив тем самым его первое упоминание.

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

Проект прошел через четыре стадии распада, но выстоял, и мы все-таки запустили платформу в открытый доступ.

На данный момент:
🔹 2000 пользователей посещают платформу еженедельно
🔹 500 зарегистрированных пользователей
И это только начало! Активное продвижение YeaHub стартовало лишь в январе.

Пусть 2025 год станет прорывным для всех нас! 🚀

https://news.1rj.ru/str/reactify_IT/693
🔥207👍5
🎙 Собеседование в OZON Tech на позицию Middle Frontend Разработчик

Два этапа тех собесов с задачами и вопросами. Вопросы были разнообразные: http, cors, browser и тд.

1. Переписать функцию с помощью async/await

getJson('json/1')
.then(json => {
if(json.key) {
return getJson('json/2')
}
throw new Error('No key')
})
.then(json => {
return json.key2
})
.catch(e => {
console.log(e)
})


2. Написать обертку вокруг нативного fetch, которая будет в случае ошибки пробовать еще retriesCount раз, и только потом упадет с ошибкой

function fetchWithRetries(retriesCount, ...fetchArgs) {
/* */
}



3. Типизировать функцию reduce чтобы она принимала дженерики:
function reduce(array, callback, initial) {
let acc = initial

for(let i = 0; i < array.length; i++) {
acc = callback(acc, array[i], i)
}

return acc
}


4. Написать функцию которая сворачивает диапазоны:
compress([1, 4, 3, 2]) // '1-4'

compress([1, 4]) //'1, 4'


5. Реализовать паттерн наблюдатель:
class Store {
/* */
}

const store = new Store()

const firstSubscriber = (data) => console.log('first', data)
const secondSubscriber = (data) => console.log('second', data)

store.subscribe(firstSubscriber)
store.subscribe(secondSubscriber)

store.data = {newKey: 'newString'}

/** CONSOLE
* first {newKey: 'newString'}
* second {newKey: 'newString'}
*/

store.unsubsribe(firstSubscriber)

/** CONSOLE
* second {newKey: 'newString'}
*/
}


#interview #frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍75🫡2😁1
🖥 Разбор задач по Event Loop с собеседований

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

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

🔗 СХЕМА

#frontend #javanoscript #eventloop
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍41
🖥 Задачи по Event Loop с собеседований

Задача №1

setTimeout(() => {
console.log('setTimeout')
})

const promise = new Promise((resolve, reject) => {
console.log(1);
setTimeout(() => {
console.log("timerStart");
resolve("success");
console.log("timerEnd");
}, 0);

Promise.resolve().then(() => {
console.log('resolve')
})
console.log(2);
});

promise.then((res) => {
console.log(res);
});

console.log(4);


Задача №2
setTimeout(function timeout() {
console.log('Таймаут 1');
}, 0);

let p = new Promise(function(resolve, reject) {
console.log('Создание промиса');

setTimeout(function timeout() {
console.log('Таймаут 2');
}, 0);

resolve();
});

p.then(function(){
console.log('Обработка промиса');
});

console.log('Конец скрипта');


Задача №3

const myPromise = (delay) => new Promise((res, rej) => { setTimeout(res, delay) })

setTimeout(() => console.log('in setTimeout1'), 1000);

myPromise(1000).then(res => console.log('in Promise 1'));

setTimeout(() => console.log('in setTimeout2'), 100);

myPromise(2000).then(res => console.log('in Promise 2'));

setTimeout(() => console.log('in setTimeout3'), 2000);

myPromise(1000).then(res => console.log('in Promise 3'));

setTimeout(() => console.log('in setTimeout4'), 1000);

myPromise(5000).then(res => console.log('in Promise '));


Задача №4

console.log(1);

setTimeout(() => console.log(2));

Promise.resolve().then(() => console.log(3));

Promise.resolve().then(() => setTimeout(() => console.log(4)));

Promise.resolve().then(() => console.log(5));

setTimeout(() => Promise.resolve().then(() => console.log(6)));

console.log(7);


Задача №5

console.log('start');

const promise1 = Promise.resolve().then(() => {
console.log('promise1');
const timer1 = setTimeout(() => {
console.log('timer1')
const promise2 = Promise.resolve().then(() => {
console.log('promise2');
const timer2 = setTimeout(() => {
console.log('timer2')
}, 0)
})
}, 0);
});

const timer3 = setTimeout(() => {
console.log('timer3');
const promise3 = new Promise(resolve => {
setTimeout(() => {
console.log('promise3');
resolve();
}, 0);
}).then(() => {
console.log('promise3 then');
})
}, 0);

async function asyncFunction() {
console.log('async start');
await new Promise(resolve => setTimeout(resolve, 0));
console.log('async middle');
await Promise.resolve().then(() => console.log('async promise'));
console.log('async end');
}

asyncFunction();

console.log('end');
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍11
😅 Псс... Прокачаться не надо?

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

Съемка видео, написание сценария и монтаж — это непростая задача. На 20-минутное видео уходит три дня работы. А ведь у меня еще YeaHub, блог, менторство и социальные проекты.

Лучшая поддержка - это просмотр видео. Спасибо!

https://www.youtube.com/@reactify-it
1🔥37👍109
🎉 Ровно год в менторстве!

Год назад, 8 февраля, я выложил пост у себя на канале о том, что начинаю обучать новичков. И с тех пор у меня было около 100 учеников, более 70 из которых пришли в разработку почти с нуля.

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

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

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

Я постоянно стараюсь делать обучение лучше. Вот, например, сейчас — суббота, 22:55, а я пишу практический курс для учеников по Docker и CI/CD. 😅

Мне хочется формировать не просто сообщество разработчиков, а сильное комьюнити людей, которые не просто найдут работу, а станут реально крутыми специалистами. Надеюсь, у меня это получается!

Так что с праздником меня — с первой годовщиной в менторстве! 🥳😎

📹 Во вторник новое видео - Принципы ООП в React

👇Тот самый пост
https://news.1rj.ru/str/reactify_IT/709
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍84
👩‍💻 Принципы ООП в React.

В этом видео разберем основные принципы ООП — инкапсуляцию, наследование, полиморфизм и абстракцию — и покажем, как они работают в React. Узнаем, что такое Render Props, Component Injection, композиция и декомпозиция, и применим их в функциональных компонентах, Custom Hooks и HOCs.

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

🔗 Репозиторий

#frontend #react #ооп
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥21
👩‍💻 Продвинутый React

Выпущено три видео по паттернам и принципам программирования:

📹 5 продвинутых паттернов в React – изучаем ключевые подходы и паттерны в разработке React-приложений: Render Props, Slot Pattern (Component Injection), Proxy Component, Function as a Child, Compound Components.

📹 Принципы SOLID в React – учимся создавать переиспользуемые компоненты, используя SOLID-принципы. Разбираем, как правильно декомпозировать код и проектировать архитектуру с учетом лучших практик.

📹 Принципы ООП в React – закрепляем понимание объектно-ориентированного программирования, разбираем, откуда берутся паттерны и подходы, и как они помогают в разработке.

💡 Для чего это нужно?

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

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

#frontend #react #solid #oop
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥6🤝41
Экспериментировал с резюме и задумался: а что вообще я делал за свою карьеру, что умею? Решил накидать список. Когда перечитал, в голове сразу всплыл мем с чуваком в мундире, увешанным миллионом наград. Прилагаю картинку — она говорит сама за себя! 😂

Фронтенд-разработка и сборка проекта

- С нуля настраивал Webpack для разных сред, включая разработку, тестирование и продакшен, с оптимизированными конфигурациями, плагинами и лоадерами.
- Полностью настраивал экосистему разработки: ESLint, Prettier, Stylelint, Husky, PostCSS, Babel и другие инструменты.
- Работал с React и Next.js, используя различные стейт-менеджеры: Redux, Redux Toolkit (RTK), MobX, Signals.
- Разрабатывал UI Kit с Storybook и Loki, создавая и документируя все компоненты, необходимые для приложения.
- Работал с популярными библиотеками:
Формы: Formik, React Hook Form, Yup
Графика: Fabric.js, Three.js, Babylon.js
Дата и время: date-fns, Moment.js, Luxon.js, Day.js
Графики и визуализация: ECharts
UI-компоненты: MUI (Material UI), Ant Design
Запросы и кэширование: Axios, React Query, SWR
Локализация: i18next
Анимации: Framer Motion
Тестирование: Jest, React Testing Library
Другие: Swiper, React Window, React Calendar, React Advanced Cropper, React Table, Recharts


CI/CD, DevOps и инфраструктура

- Настраивал CI/CD и деплой на тестовые и продакшен-среды, включая Docker-сборку, автоматизированный деплой и окружения.
- Настроил и администрировал Nginx, SSL-сертификаты, DNS-записи, cron-задачи и автоматические бэкапы баз данных.
- Разворачивал сервер для логирования и мониторинга: Sentry (self-hosted) для фронтенда, Grafana + Prometheus для бэкенда.
- Поднимал кластер Kubernetes с разными нодами и 3 средами, Helm, ArgoCD, GitHub Actions

Интеграции и работа с внешними сервисами

- Настраивал интеграции с email- и SMS-сервисами.
- Внедрял авторизацию через Google, Telegram, Yandex и другие OAuth-провайдеры.
- Работал с S3-хранилищами и CDN.
- Подключал сервисы оплаты Paddle, Striple и Тинькоф эквайринг

Базы данных и Backend

- Работал с SQL (PostgreSQL) и NoSQL (MongoDB) базами данных.
- Проектировал и разрабатывал Backend на Nest.js + PostgreSQL, используя миграции TypeORM и Liquibase.

Полноценные проекты

- Самостоятельно спроектировал и разработал одно Fullstack-приложение с нуля до продакшена.
- Разработал три фронтенд-приложения, включая графический редактор, CRM-систему и клиентское веб-приложение.
- Руководил командой 20+ специалистов, проводил собеседования и менторил начинающих разработчиков

💡 В планах

- Изучение Kubernetes и углубление в DevOps: автоматизация развертывания, оркестрация контейнеров, балансировка нагрузки, шардирование, репликация данных.
- Глубокое погружение в Backend: изучение брокеров сообщений (RabbitMQ, Kafka), кэширования (Redis, Memcached), оптимизации запросов и интеграции с различными сервисами.
- Настройка безопасности серверов: управление доступами, защита от DDoS-атак, мониторинг уязвимостей, шифрование данных и бэкапы.

Как думаете, нормальный список навыков для почти 4 лет опыта, или маловато? Что бы вы посоветовали изучить, чтобы прокачаться еще сильнее?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥11😁4
💬 Frontend Собеседование с разбором. Browser, JavaScript, TypeScript, React. Групповой мок-формат

В этом видео группа ребят, которые хотят устроиться на работу в IT, отвечают на теоретические вопросы от ведущего ментора. Это полноценная тренировка: участники учатся выступать перед аудиторией, формулировать свои мысли, дополнять ответы других и внимательно слушать, как отвечают их коллеги. В этом видео мы поговорим о ключевых технологиях: Browser, JavaScript, TypeScript и React.

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

#frontend #interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥64
Опрос про накрутку опыта 2024 (статистика открыта для всех)

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

https://forms.gle/H3YbVcf1xKNUJUey9

Всем блогерам от 100 подписчиков раздам доступ к полученным ответам за репост (пишите в комментах со ссылкой на репост в ваших соц сетях)
4🔥2👍1
📹 Собеседование на Middle Frontend | 50 вопросов студенту IT-Incubator

Когда-то давно я учил React по курсу React Самурай от Димыча. Недавно предложили на его канале провести собеседование. Я согласился :)

🔗 Список вопросов с ответами

📹 Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥205👍4