🧊 siberiacancode x IT-ХОЗЯЕВА
الذهاب إلى القناة على Telegram
Канал для frontend разработчиков Смотрим самые новые и популярные frontend технологии 🔥 https://boosty.to/siberiacancode https://www.youtube.com/@siberiacancode https://www.twitch.tv/siberiacancode https://github.com/siberiacancode
إظهار المزيد3 419
المشتركون
لا توجد بيانات24 ساعات
لا توجد بيانات7 أيام
-1630 أيام
جاري تحميل البيانات...
القنوات المماثلة
سحابة العلامات
الإشارات الواردة والصادرة
---
---
---
---
---
---
جذب المشتركين
أغسطس '26
أغسطس '26
+51
في 0 قنوات
يوليو '26
+54
في 1 قنوات
Get PRO
يونيو '26
+106
في 1 قنوات
Get PRO
مايو '26
+107
في 4 قنوات
Get PRO
أبريل '26
+49
في 0 قنوات
Get PRO
مارس '26
+122
في 1 قنوات
Get PRO
فبراير '26
+85
في 5 قنوات
Get PRO
يناير '26
+92
في 1 قنوات
Get PRO
ديسمبر '25
+63
في 0 قنوات
Get PRO
نوفمبر '25
+45
في 1 قنوات
Get PRO
أكتوبر '25
+97
في 3 قنوات
Get PRO
سبتمبر '25
+78
في 1 قنوات
Get PRO
أغسطس '25
+108
في 3 قنوات
Get PRO
يوليو '25
+99
في 0 قنوات
Get PRO
يونيو '25
+68
في 1 قنوات
Get PRO
مايو '25
+103
في 1 قنوات
Get PRO
أبريل '25
+145
في 3 قنوات
Get PRO
مارس '25
+99
في 2 قنوات
Get PRO
فبراير '25
+120
في 1 قنوات
Get PRO
يناير '25
+184
في 3 قنوات
Get PRO
ديسمبر '24
+151
في 3 قنوات
Get PRO
نوفمبر '24
+129
في 3 قنوات
Get PRO
أكتوبر '24
+97
في 1 قنوات
Get PRO
سبتمبر '24
+97
في 2 قنوات
Get PRO
أغسطس '24
+128
في 1 قنوات
Get PRO
يوليو '24
+179
في 1 قنوات
Get PRO
يونيو '24
+186
في 2 قنوات
Get PRO
مايو '24
+254
في 4 قنوات
Get PRO
أبريل '24
+173
في 1 قنوات
Get PRO
مارس '24
+131
في 0 قنوات
Get PRO
فبراير '24
+178
في 1 قنوات
Get PRO
يناير '24
+281
في 1 قنوات
Get PRO
ديسمبر '23
+143
في 4 قنوات
Get PRO
نوفمبر '23
+39
في 0 قنوات
Get PRO
أكتوبر '23
+101
في 0 قنوات
Get PRO
سبتمبر '23
+954
في 0 قنوات
| التاريخ | نمو المشتركين | الإشارات | القنوات | |
| 27 أغسطس | 0 | |||
| 26 أغسطس | +2 | |||
| 25 أغسطس | +9 | |||
| 24 أغسطس | +3 | |||
| 23 أغسطس | +1 | |||
| 22 أغسطس | +1 | |||
| 21 أغسطس | +1 | |||
| 20 أغسطس | +5 | |||
| 19 أغسطس | 0 | |||
| 18 أغسطس | +1 | |||
| 17 أغسطس | +2 | |||
| 16 أغسطس | +1 | |||
| 15 أغسطس | +3 | |||
| 14 أغسطس | +2 | |||
| 13 أغسطس | +1 | |||
| 12 أغسطس | +2 | |||
| 11 أغسطس | 0 | |||
| 10 أغسطس | +1 | |||
| 09 أغسطس | +3 | |||
| 08 أغسطس | +1 | |||
| 07 أغسطس | 0 | |||
| 06 أغسطس | +1 | |||
| 05 أغسطس | +2 | |||
| 04 أغسطس | +2 | |||
| 03 أغسطس | +2 | |||
| 02 أغسطس | +3 | |||
| 01 أغسطس | +2 |
منشورات القناة
| 2 | holyjs + siberiacancode, мы сделали для вас топовый конкурс 🤟
👍 Разыгрываем 2 билета на HolyJS — одну из главных JavaScript-конференцию! HolyJS — IT-конференция для всех, кто использует JavaScript-технологии и ati для фронтенда и бэкенда.
📅 23–24 октября, Санкт-Петербург + online
*оба билета имеют доступ офлайн и онлайн
Условия участия максимально простые:
1. Подписаться на каналы holyjs + siberiacancode
2. Поставить любую реакцию на этот пост 👌
3. Нажать кнопку "Участвовать" 😎
Конкурс будет длится 3 недели и закончится 13 сентября. Мы хотим, чтобы вы получили максимально крутой опыт от участия в HolyJS — вдохновились докладами, нашли единомышленников и зарядились идеями для своих проектов вместе с нами 💜
Также вы можете использовать мой промокод, чтобы получить скидку на покупку билета 15% процентов — siberiacancodeHoly26
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446. Erid 2RanynXXruh | 916 |
| 3 | Почему ReactUse не мемоизирует методы хуков 💀
В ReactUse методы, возвращаемые хуками, намеренно не оборачиваются в useCallback по умолчанию. Мемоизация — это оптимизация, а библиотека не знает контекста приложения и не может решить, где стабильная ссылка действительно принесёт пользу.
Поэтому ReactUse оставляет контроль разработчику: мемоизировать стоит там, где для этого есть реальная необходимость. Тем более с развитием React Compiler, который постепенно забирает подобные оптимизации на себя. | 785 |
| 4 | Мы переделали кастомный cache для nextjs 🪐
Ранее мы рассказывали, как сделали собственный cacheHandler для Next.js и начали сохранять не только кеш, но и информацию о ревалидации тегов.
Для этого рядом с кешем хранился отдельный манифест: у каждого тега была отметка времени последней ревалидации. Благодаря этому теги переживали перезапуск приложения, а новый процесс понимал, какие записи уже устарели. Но со временем решение стало сложнее самой проблемы.
Нам приходилось синхронизировать кешированные данные, теги и манифест ревалидации. Любое обновление должно было корректно изменить их состояние, а незавершённая запись или рассинхронизация файлов могли оставить кеш в неконсистентном состоянии. Особенно неприятно это становилось во время сборки и деплоя.
В итоге мы отказались от общего файлового манифеста и изменили принцип формирования ключей кеша.
Next.js позволяет привязывать tags к кешированной записи и инвалидировать её через revalidateTag, но сами теги не являются частью исходного cache key.
Мы начали использовать их ещё и как дополнительные идентификаторы файлов. Например, одним из таких тегов может быть commit id. Дополнительно передаём его в запросе через header, чтобы он участвовал в формировании уникального cache key.
Упрощённо получилось так:
<теги>:<исходный-cache-key>
Например:
<commit-id>:<исходный-cache-key>
То есть commit — не отдельный механизм кеширования, а один из параметров, связывающий кеш с конкретным состоянием контента. Вместо него это может быть версия, revision, hash или любой другой идентификатор. Теперь каждая версия кеша уникальна, а старые записи можно легко найти и удалить по тегам, которые участвуют в имени файла.
При этом мы остались внутри стандартных механизмов Next.js: force-cache, tags и cacheHandler — без дополнительного манифеста и собственной системы ревалидации поверх Next.js.
Цена у подхода есть: старые записи нужно периодически удалять, иначе хранилище будет расти. Но фоновая очистка оказалась намного проще и надёжнее, чем синхронизация изменяемого манифеста во время обработки запросов.
Возможно, вся эта история кажется оверхедом. Но задача появилась из конкретного требования: сохранять кеш между сборками и гарантированно учитывать ревалидацию по тегам после рестартов и деплоев. | 754 |
| 5 | Подготовка к докладу HolyJS ⭐️ Часть 4
Во время описания интеграционных тестов и самого проекта мы часто говорим про моки. У нас с командой есть свой инструмент для моков, и я надеюсь, что скоро смогу рассказать про него подробнее. Иронично, что первые реальные примеры его использования вы увидите именно в тестовом проекте, который я готовлю для доклада.
Моки можно и нужно разделять на два уровня. Первый — моки для разработки приложения: когда вы реализуете фичу, собираете демо заказчику или отдаёте сценарий на ручное тестирование. Второй — моки непосредственно для автотестов. Это разделение важно: попытки объединить оба сценария обычно приводят только к переусложнению моков.
Сегодня говорим про первый тип. Пример можно посмотреть в репозитории в папке mock. Здесь важно понимать задачу: нам нужен простой и понятный серверный код, достаточно близкий к реальному API, но не его полная реплика. Тратить ресурсы на воспроизведение всего бэкенда просто нет смысла.
export const postOtpsOtp = [
rest.post<{
body: CreateOtpDto;
response: ErrorResponse;
}>(
'/otps/otp',
{
match: {
body: {
phone: '77777777774'
}
},
response: {
success: false,
reason: 'Не удалось отправить код'
}
},
{ status: 400 }
),
rest.post<{
body: CreateOtpDto;
response: CreateOtpResponse;
}>('/otps/otp', {
success: true,
retryDelay: 30_000
})
];
Сам инструмент скоро получит официальный релиз, и тогда с ним можно будет познакомиться подробнее. Но основная идея уже видна: нужные сценарии должны описываться быстро и без большого количества лишнего кода. Подробнее про это расскажу в следующей части.
Отдельная проблема — данные для моков. Их тоже важно раскладывать структурно и не заполнять руками всё подряд. Тут хорошо работает связка автогенерации из apicraft и faker: мы указываем только поля, которые важны для конкретного сценария, а всё остальное генерируется автоматически.
let cards = Array.from({ length: 5 }, () =>
createCardFake({
panMasked: faker.string.numeric(4)
})
);
В итоге мок остаётся коротким, сценарий читается сразу, а изменение API не превращается в ручное переписывание десятков объектов. | 751 |
| 6 | CSS получит новый селектор по префиксу 👋
В Selectors Level 5 добавили новый селектор .prefix-*, который позволит выбирать сразу все классы с определённым префиксом. Например, .btn-* сможет выбрать .btn-primary, .btn-secondary и .btn-large. Сегодня для этого приходится использовать менее читаемую комбинацию вроде [class^="btn-"] и [class*=" btn-"]. | 898 |
| 7 | Фидбек по докладам с митапа 📰
▪️ «Factory store: масштабирование без компромиссов» — На самом деле доклад про довольно простую инженерную практику — буквально про фабрику на реальном примере. Но тут я бы хотел отметить две вещи. Первое: если вы начинающий спикер, не надо фокусироваться на этом — это очень сильно влияет и на вас самих, и на доклад. Второе: izede написал мне, что во Vue такой проблемы вообще нет, и был прав. Если коротко, понадобилось сделать шаринг глобального стейта с подпиской по id. В React такое нормально не сделать — почти наверняка понадобится external state manager. Ну и всё.
▪️«Две доки, чтоб править всеми» — Я не понял доклад. Во-первых, человек явно не из фронтенд-среды, а во-вторых, половина того, о чём говорил спикер, сегодня заменяется RAG-сервисом. Я не работал с техписателями, поэтому, возможно, просто не понимаю часть их процессов, но то, что было показано в докладе, для меня выглядит как дефолт индустрии, если у вас больше одного микросервиса. При этом сам посыл про документацию правильный.
▪️ «Синхронизация между устройствами: все не так просто, как кажется» — Спикер рассказывает, как синхронизировать корзину продуктов между вебом, мобилкой и бэком. Казалось бы, обычная задача, но в итоге мне понравилось, как доклад развернулся в сторону алгоритмов и решений команды. Чуть-чуть микрофронтендов, чуть-чуть алгоритмов, чуть-чуть собственных решений — хорошо.
▪️ «Вкусы реактивности» — Ну маэстро. Мне очень нравится, когда в докладе есть параллель с чем-то ещё: например, сеансом у психолога, созвездиями или, как здесь, фломастерами. Такие ассоциации реально помогают воспринимать материал. Сам доклад при этом сложный: чтобы его понять, надо нормально погрузиться в реактивность. Но это ещё одна хорошая история про то, что на самом деле происходит в вебе. Единственное — мы со спикером делали стрим на эту тему, и я очень на него обиделся, что он его не вставил и QR-код в презу не добавил.
Огромное спасибо ребятам из MoscowJS, которые позволяют мне стримить и проводят митапы в таком количестве. Если хотите выступить — пишите им сюда. Ребят, знаю лично, помогут подготовиться и выступить, так сказать, получить свой первый опыт. | 977 |
| 8 | Подготовка к докладу HolyJS 🎧 Часть 3
Чтобы доклад был полезным, важно дать практику. Мы уже говорили про unit-тесты, теперь пора немного затронуть интеграционные и их высшую степень — e2e. Но чтобы нормально показать такие автотесты и тест-кейсы, нужно приложение.
Показывать всё на очередном todo-листе глупо, а читать доклад без реальных примеров ещё хуже. Поэтому специально для доклада готовится довольно большой репозиторий с одним из заданий Juniors Bootcamp. Само приложение тоже полностью захостим, чтобы его можно было открыть и руками пройти весь флоу.
Мы с командой bootcamp изначально проектируем задания так, чтобы они были максимально приближены к реальным продуктам: основной пользовательский флоу, UI-стандарты, дизайн-система, layout, авторизация, оплата и другие типичные вещи. В итоге это, во-первых, хороший кодовый пример приложения на react hooks, а во-вторых, уже совсем скоро в репозитории начнут появляться тесты. И за счёт реалистичности проекта на нём можно будет действительно показательно разобрать интеграционные и e2e-тесты, а не тестировать кнопку в вакууме.
Сам проект готов на ~90%, надо поправить некоторые вещи и баги. Но это все мелочи, уже можно стартовать настройки harness для моих тестов (иницилизация, ии скиллы, тесткейсы). | 945 |
| 9 | Подумываю, сменить название канала на siberiacanvibecode 🏝 | 1 057 |
| 10 | «незаменимые» вы тут? 🍌 | 1 138 |
| 11 | Уже два года прошла, как я простой pr для shadcnui 🫠 | 1 150 |
| 12 | Фидбек по докладам с митапа 📰
▪️ «Factory store: масштабирование без компромиссов» — На самом деле доклад про довольно простую инженерную практику — буквально про фабрику на реальном примере. Но тут я бы хотел отметить две вещи. Первое: если вы начинающий спикер, не надо фокусироваться на этом — это очень сильно влияет и на вас самих, и на доклад. Второе: izede написал мне, что во Vue такой проблемы вообще нет, и был прав. Если коротко, понадобилось сделать шаринг глобального стейта с подпиской по id. В React такое нормально не сделать — почти наверняка понадобится external state manager. Ну и всё.
▪️«Две доки, чтоб править всеми» — Я не понял доклад. Во-первых, человек явно не из фронтенд-среды, а во-вторых, половина того, о чём говорил спикер, сегодня заменяется RAG-сервисом. Я не работал с техписателями, поэтому, возможно, просто не понимаю часть их процессов, но то, что было показано в докладе, для меня выглядит как дефолт индустрии, если у вас больше одного микросервиса. При этом сам посыл про документацию правильный.
▪️ «Синхронизация между устройствами: все не так просто, как кажется» — Спикер рассказывает, как синхронизировать корзину продуктов между вебом, мобилкой и бэком. Казалось бы, обычная задача, но в итоге мне понравилось, как доклад развернулся в сторону алгоритмов и решений команды. Чуть-чуть микрофронтендов, чуть-чуть алгоритмов, чуть-чуть собственных решений — хорошо.
▪️ «Вкусы реактивности» — Ну маэстро. Мне очень нравится, когда в докладе есть параллель с чем-то ещё: например, сеансом у психолога, созвездиями или, как здесь, фломастерами. Такие ассоциации реально помогают воспринимать материал. Сам доклад при этом сложный: чтобы его понять, надо нормально погрузиться в реактивность. Но это ещё одна хорошая история про то, что на самом деле происходит в вебе. Единственное — мы со спикером делали стрим на эту тему, и я очень на него обиделся, что он его не вставил и QR-код в презу не добавил.
Огромное спасибо ребятам из MoscowJS, которые позволяют мне стримить и проводят митапы в таком количестве. Если хотите выступить — пишите им сюда. Ребят, знаю лично, помогут подготовиться и выступить, так сказать, получить свой первый опыт. | 1 |
| 13 | 😎 ВИДЕО
✨ react jsx vs vue template, что победит? | 1 288 |
| 14 | React Compiler теперь можно проверять через Oxlint 🎤
Oxlint получил нативную реализацию правила react/react-compiler, которое запускает анализ React Compiler прямо во время линтинга. Раньше для этого приходилось использовать JS-плагин и Babel, а теперь проверка работает внутри Rust-инструментария Oxc. На проекте автора это ускорило lint примерно с 29 до 9 секунд, а после удаления оставшихся JS-плагинов — почти до 3 секунд.
Но интереснее даже не скорость. У Oxlint есть опция reportAllBailouts, которая показывает не только ошибки Rules of React, но и места, где React Compiler просто отказался оптимизировать компонент или хук. То есть можно постепенно смотреть, какая часть приложения реально готова к компилятору и почему остальной код не оптимизируется.
Возможно, именно это поможет react compiler стать стабильней и начать массово использоваться. | 1 196 |
| 15 | لا يوجد نص... | 1 166 |
| 16 | Недавно делал разбор Vercel React Best Practices — по сути это один из самых популярных наборов правил, которые сейчас скармливают ИИ-агентам для написания React-кода. | 1 |
| 17 | Чат gpt, топовая модель буквально мне дала 🥶 проверку ssr в use effect, вот так и живем | 1 |
| 18 | Тимур, раздеваться не обязательно было 🍌 | 1 238 |
| 19 | 🍿 стартуем по раньше
youtube — twitch — vk | 465 |
| 20 | 🍿 АНОНС СТРИМА 20 августа в 16:00 о мск
youtube — twitch — vk | 1 237 |
