Вы знаете React, пишете чистый код, но просмотров на HH — ноль. Почему? Потому что резюме видит не человек, а алгоритм. И его нужно уметь обойти.
Что в карточках:
Если хотите, чтобы вас звали на собесы — начни с видимости. Алгоритм не простит пассивность.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🌚2
requestIdleCallback — это способ запускать задачи в свободное отрисовке браузера время, чтобы не мешать главному потоку и не тормозить интерфейс.
Почему важно:
Как использовать:
1. Запускаем задачу, когда браузер «свободен»:
requestIdleCallback(() => {
// Эта операция не помешает UI
localStorage.setItem('draft', JSON.stringify(formData));
});
2. Полифил для браузеров без поддержки (например, Safari, Firefox):
const ric = window.requestIdleCallback || function (cb) {
return setTimeout(() => cb({ timeRemaining: () => 0 }), 1);
};
3. Пример: предзагрузка данных во время простоя
requestIdleCallback(() => {
fetch('/api/hints')
.then(res => res.json())
.then(storeHints);
});
4. Используем timeRemaining() для контроля:
requestIdleCallback(deadline => {
while (deadline.timeRemaining() > 0 && tasks.length) {
runTask(tasks.pop());
}
});
Когда использовать:
— Метрики и логирование
— Предзагрузка и кеширование
— Фоновая запись в IndexedDB
— Подсказки, превью и прочий «сервисный» UI
⚠️ requestIdleCallback не поддерживается в Safari и Firefox. Для кроссбраузерности используйте полифил, как показано выше.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3👏1
❗ Первый вебинар нашего курса по AI-агентам уже прошёл!
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
👍4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10😁2👾1
Вёрстка может выглядеть по-разному на разных браузерах. Этот промпт поможет вам улучшить поддержку кросс-браузерных решений и сделать код более понятным и удобным.
Промпт:
Review my CSS and fix cross-browser issues, improve maintainability, and add comments explaining non-obvious parts.
Чем полезен:
— Советы по организации CSS (например, BEM, layers, atomic CSS)
— Рекомендации по улучшению производительности (критические стили, purge)
— Интеграцию с Autoprefixer или PostCSS
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1🥱1👾1
Один из подписчиков поделился своим опытом:
«Когда мы начали интегрировать OAuth2 для аутентификации в нашем SPA на React, проблемы начали сыпаться одна за другой. Хранение токенов, обновление сессий без перезагрузки страницы — всё это стало настоящим головным болем.
Мы решили хранить токены в httpOnly cookie для безопасности — так они менее уязвимы для атак. Но вот как обновить их, не теряя сессию?
Тогда мы написали кастомный хук, который управляет аутентификацией и следит за обновлением токенов в фоне. Это немного облегчило жизнь и сделало обновление сессии почти незаметным для пользователя.
Добавили небольшой интерцептор для axios, который автоматически добавлял свежий токен в заголовки запросов, если он был обновлён. Всё заработало как часы, и пользователи больше не сталкивались с проблемами сессий.»
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6🥱3👍1😁1
Biome умеет ловить ошибки с промисами (например, забытые await) даже в обычном JS, без TypeScript.
Например:
button.addEventListener('click', async () => {
fetch('/api')
})
Biome подсветит: «у вас async-функция возвращает промис, и он не обработан» → потенциальная утечка ошибок.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥1
На собеседовании могут спросить, что такое Drag and Drop API, какие события в него входят и как реализовать перетаскивание без библиотек.
В карточках разберем:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤6👏4🤩3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁21
Подсказка:
Какой термин зашифрован! Пишите свою версию
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🤔3
Подборка интерактивных ресурсов, которые помогут прокачать навыки на практике.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8👍3🔥3❤1
Вы заметили, что компонент повторно рендерится при каждом изменении родителя, хотя его пропсы остаются теми же.
В коде используется функциональный компонент, передаётся onClick, определённый внутри родителя как анонимная функция.
Как можно избежать лишнего рендера этого компонента?
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
👍2
Junior Frontend Developer (React) — от 160 000 ₽, офис/гибрид (Москва)
Frontend-разработчик JavaScript — 130 000 - 165 000 ₽, удаленно (Санкт-Петербург)
Software Engineer (JavaScript) — 4 000 - 5 500$, удаленно (США)
Эксперт по web-разработке — 200 000 — 240 000 ₽, удаленно (Москва)
Senior Front-End Developer — от 200 000 ₽, удаленно (Москва)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Проблема: управление сложным состоянием в React-приложении может стать трудным и запутанным, особенно при наличии множества состояний и действий.
Решение: в книге «Learn React Hooks, 2nd Edition» автор предлагает использовать хук useReducer для централизованного управления состоянием. Это позволяет более эффективно обрабатывать сложные состояния и действия.
Пример кода:
import React, { useReducer } from 'react';
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
<button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
</>
);
}
Преимущества:
— Централизованное управление состоянием.
— Лёгкость в добавлении новых состояний и действий.
— Чистота и предсказуемость кода.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱8👍3🔥3