Frontender's notes [ru]
33.2K subscribers
649 photos
47 videos
1 file
3.49K links
Ведущий канал о современном фронтенде: статьи, новости и практики.

По вопросам рекламы или разработки:
@g_abashkin

РКН: https://vk.cc/cJPG6y
Download Telegram
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
😁 На LinkedIn появилась верификация скиллов вайбкодинга

LinkedIn запартнерился с Descript, Lovable, Relay и Replit — теперь они смогут автоматически оценивать ваш уровень владения инструментом и подтверждать навык, который тут же может отобразиться в профиле. Всего есть несколько уровней вайбкодинга: бронзовый, серебряный, золотой, платиновый и алмазный.

Потенциально это поможет работодателям быстрее понять ваш реальный навык работы с ИИ. И да — апдейт уже выкатили.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
👀12😁95🔥2👍1👎1
Дом из какого материала выбрали бы вы? 👇
👎22👀6🔥4😁2
Дом из какого материала выбрали бы вы?
Anonymous Poll
67%
CLT
33%
ЛСТК
👎15🐳9😱4👀4
🕘 Что на самом деле происходит при первом рендере страницы?

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

📖 Навигация и запрос

Браузер получает URL и дальше по цепочке: DNS → TCP → TLS → HTTP. Если здесь всё больно — никакой React, Next и прочие заклинания уже не помогут.

Парсинг HTML
HTML читается сверху вниз и превращается в DOM. На пути встретился <script> без defer или async — парсинг встаёт на паузу. Браузер честно ждёт, пока скрипт выполнится, даже если тот вообще не про первый экран.

Парсинг CSS
CSS превращается в CSSOM. Без него браузер не может рендерить — он просто не знает, как должна выглядеть страница.

DOM + CSSOM = render tree.
До этого момента экран пустой.

Layout (reflow)
Теперь браузер считает размеры и позиции элементов. width: auto, flex, grid, проценты — всё это вычисляется именно здесь. Это один из самых дорогих этапов во всей цепочке.

Paint
Элементы рисуются по слоям: текст, фоны, бордеры, тени. Пока ещё не на экране — всё это складывается в буфер.

Composite
Слои собираются вместе, применяются transform, opacity. И только теперь кадр наконец уходит на экран. Вот он, первый paint.

✈️ JavaScript включается в игру

После первого paint начинается самое весёлое:
— hydration
— эффекты
— подписки
— измерения (getBoundingClientRect, привет)

И тут часто вылезают:
— layout thrashing
— CLS
— лишние перерендеры

Почему «быстрый сервер» ≠ быстрый рендер

— большой CSS блокирует рендер
— JS без defer стопорит DOM
— шрифты двигают layout
— аналитика ломает первый кадр

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


📌 Оптимизация — это не про фреймворки. Это про понимание, что именно делает браузер в первые 100–300 мс. Сайт ощущается быстрым даже на слабом устройстве, если ты это контролируешь

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍317🔥2
Forwarded from xCode Journal
🎁Разработчик нашел в GitHub Copilot баг, который позволяет использовать топовые модели вроде Claude Opus 4.5, не расходуя лимиты

При этом Microsoft закрыла тикет со статусом not planned — то есть чинить они лазейку не собираются. Как работает:
1. Создаем новый чат;
2. Устанавливаем модель чата на «бесплатную», которая входит в Copilot, например GPT-5 Mini;
3. Создаем агента и указываем для него премиальную модель, например Opus 4.5;
4. Переключаемся в режим работы «Агент»;
5. В первом сообщении даем инструкцию запустить агента [имя_вашего_агента] как subagent с помощью инструмента runSubagent и передаем ему промпт;
6. Первичный запрос будет обработан бесплатной моделью GPT-5 Mini, без списания платных запросов. Бесплатная модель создаст subagent. Ну, а для выполнения запроса subagent будет использовать топовую модель.


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁145👍4👎1
Forwarded from xCode Journal
🧐 К чему готовиться на собесах в 2026 году

Парень проанализировал 9 000+ технических интервью и выяснил, что же хочет рынок от кандидатов. Главное:
— Среднее интервью занимает 45-50 минут. Из них 10% люди тратят на самопрезентацию, к которой продолжают не готовиться (выводы делаем, да?);

— Алгосы все еще в топе — на них приходится 28% всего времени интервью. Но мучают ими только джунов и мидлов.

— Лиды и сеньоры чаще проходят System Design (78% случаев). Это занимает 25-30 минут. Мидлам тоже достается, но задачи попроще — не "спроектируйте YouTube", а "спроектируйте URL shortener".

— В топ-3 вопросов ожидаемо входят «Расскажите о себе», принципы SOLID и разница между процессом и потоком.


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👀16👍62
📣 Feature-based vs Layered архитектура — где правда, а где догма

Этот спор живёт почти в каждом более-менее большом фронтенд-проекте. Одни говорят: «делим по слоям — ui, services, api, store». Другие уверены: «только по фичам, иначе код не живёт». Как обычно, истина не в методичке.

🙂 Layered архитектура: за что её любят

Классический расклад:

/ui
/services
/api
/store
/utils


Почему она всем так знакома:
— понятна с первого дня
— легко стартовать проект
— хорошо ложится на обучение и онбординг

Но дальше начинается рост. И вместе с ним — боль.

Где начинает тянуть:

— бизнес-логика размазывается по слоям
— одна фича требует правок в 5 папках
— utils постепенно превращается в свалку
— удалить фичу целиком почти невозможно

Layered отлично работает, пока проект небольшой или команда держит жёсткую дисциплину.

Feature-based архитектура: за что её выбирают

Структура по смыслу, а не по типам:

/features/cart
/features/auth
/features/profile


Внутри фичи — всё своё:
— UI
— логика
— запросы
— типы

Что это даёт:
— высокая связность
— фича живёт в одном месте
— проще удалять и рефакторить
— легче масштабировать команду

Но бесплатно тут тоже ничего нет.

Где начинаются подводные камни:
— риск дублирования
— нужны чёткие границы между фичами
— без соглашений хаос наступает очень быстро

🔫 Где на самом деле правда

Layered — это удобство старта. Feature-based — это удобство жизни проекта.

Поэтому на практике почти всегда побеждает гибрид:
— core / shared — слоями
— бизнес-фичи — по фичам
— UI-кит отдельно
— доменная логика не размазывается по проекту

Главная ошибка

Выбирать архитектуру как религию. Не задавая простых вопросов:

— сколько людей будет в проекте?
— как часто добавляются и удаляются фичи?
— важнее быстрый старт или долгоживущая поддержка?


📌 Feature-based и layered — не враги, а инструменты, предназначенные для различных этапов и задач. Плохая архитектура определяется не только отклонением от стандартов, но и тем, что она вызывает страх у команды при внесении изменений.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍5👎2🔥2🐳1
mlut (читается как "млат") - это CSS-фреймворк для кастомных сайтов и креативов. Он помогает верстать проекты с индивидуальным, нешаблонным дизайном, где не подходят фреймворки старой школы и плохо справляются LLM. mlut похож на Tailwind, поскольку основан на подходе Atomic CSS, но по некоторым параметрам превосходит все популярные аналоги.

Atomic CSS - это методология верстки, в которой мы используем маленькие атомарные классы, каждый из которых делает одно действие. Эти классы называют *утилитами*. Обычно они применяет одно CSS-свойство (например, цвет текста), но не обязательно одно. Выглядят они примерно так: D-ib, Bgc-blue_h.

Преимущества такого подхода

1. Тратим меньше мыслетоплива: не думаем о нейминге сущностей, структуре каталогов
2. Меньше CSS на клиенте: реиспользуем одни и те же утилиты, а новые стили почти перестают добавляться
3. Быстрее пишем стили: короткие классы, нет переключения файлов
4. Можно применять на любом стеке: JS SPA, PHP, Clojure, etc

Ключевые особенности mlut

1. Краткий и строгий нейминг. Сокращения основаны на популярности свойств CSS и составлены по единому алгоритму. Если вы знаете CSS, то вы почти знаете mlut
2. Богатый и нативный синтаксис. Это как Vim для CSS. Удобно создавать сложные стили с помощью мощного синтаксиса, концептуально близкого к CSS
3. Написан на Sass. Используйте всю мощь препроцессора для связи рукописного CSS и утилит

Что реализовано на сегодня

- генератор утилит почти любой сложности
- JIT-движок, который умеет генерировать утилиты из HTML/JSX/etc
- CLI с минификацией и автопрефиксером
- плагины для сборщиков фронтенда: Webpack, Vite и Rollup
- онлайн-песочница

Также есть обширная документация. Совместно с HTML Academy готовится интерактивный мини-курс по инструменту. Первый урок уже вышел. Это open source проект - результат глубокого ресерча и 1200+ часов труда. Больше технических деталей есть в расшифровке доклада с HolyJS.

Планы по развитию

- добавить еще возможностей CSS для сложной верстки: множественные градиенты, псевдоселекторы с аргументами, типа :has(), etc
- сделать интеграции для вайб-кодинга
- сделать плагины к IDE для автокомплита и подсказок

А недавно мы запустили проект на ProductRadar. Бодаемся там со стартапами за топ-3 продуктов этой недели. Будем благодарны за поддержку лайком на этой площадке и любой фидбек. Давайте покажем всем, что open source инструмент тоже может быть продуктом!
👎288👍6😁2🔥1
⛔️ Когда рефакторинг вреден

Принято считать, что рефакторинг всегда благо. Мол, код стал чище, значит проект автоматически стал лучше. На практике рефакторинг иногда делает только хуже. И это нормально, если понимать, в каких моментах стоит остановиться.

❗️ Когда нет проблемы

Самый частый сценарий. Код работает, покрыт тестами, понятен команде, но кому-то просто «не нравится стиль».

Что получается в итоге:
— переписаны десятки файлов
— история изменений размазана
— баги появляются из ниоткуда

Рефакторинг ради эстетики — это не инвестиция, а хобби.


💬 «Давайте быстренько подчистим архитектуру» — худшая мысль за неделю до дедлайна

Почему это опасно:
— резко растёт риск регрессий
— тесты не ловят всё
— команда теряет фокус на бизнес-цели

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

🔎 Без чёткой цели

Фразы-триггеры, которые должны настораживать:

— «давай просто улучшим»
— «тут можно сделать красивее»
— «я бы переписал по-другому»

Хороший рефакторинг всегда отвечает на вопрос: какую конкретную боль он снимает? Плохой — не отвечает ни на один.

👥 Когда команда не готова

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

Если:
— нет общих соглашений
— нет документации
— нет нормального код-ревью

⬆️ Когда рефакторинг подменяет развитие

Иногда рефакторинг — это способ не делать фичи. Потому что:
— страшно трогать бизнес-логику
— нет ясных требований
— хочется заняться «безопасной» работой

Но пользователю всё равно, насколько у вас элегантный код.

📣 Как понять, что рефакторинг оправдан, во всех остальных случаях — осторожно

Он действительно нужен, если:
— код мешает добавлять фичи
— правки регулярно ломают соседние части
— баги повторяются в одном месте
— время изменений стабильно растёт


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

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8👎1🐳1
Forwarded from xCode Journal
🔥 ИИ сказал сотрудникам JetBrains не покидать офис, когда там начался пожар

В офисе JetBrains сработала пожарная тревога, о чем одна из сотрудниц написала в чат. Тут же встроенный ИИ-помощник Glean сказал, что это запланированная учебная тревога и можно оставаться на своих местах.

Ну и да — вскоре к зданию подъехали пожарные.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁323
📂 Как не превратить shared/utils в помойку

Есть почти универсальный сценарий. shared/utils начинается с благих намерений, а заканчивается папкой, в которую страшно заглядывать. Там со временем живёт всё подряд. Почему так происходит и что с этим делать?

✈️ Почему utils деградирует быстрее всего

«Вдруг кому-то ещё пригодится»: Код попадает в shared не потому, что он реально общий, а потому что «может быть когда-нибудь».

Отсутствие владельца: Ничей код = любой код. В итоге никто не отвечает ни за качество, ни за границы.

Смешение уровней. Это уже не utils, а архитектурная свалка. В одной папке оказываются:
— чистые функции
— бизнес-логика
— куски UI
— знания про стор и API

👏 Главное правило

Shared — это не место.
Shared — это контракт.

Код может туда попасть только если:
— используется минимум в двух фичах
— не знает ничего о бизнес-контексте
— не зависит от стора, API и UI
— стабилен по своему API

Если функция знает про User, Order или Cart — это уже не shared.

💡 Что делать вместо utils.ts

Дробить по смыслу

shared/date
shared/number
shared/string
shared/collection


Выносить домен в фичи: formatPrice для корзины живёт в features/cart, а не в shared.

Делать явные адаптеры: Если код связывает два мира — это уже не утилита, а адаптер или сервис.

Красные флаги
— файл на 500+ строк
— функции без тестов
— названия с helper, common, misc
— зависимость от окружения (window, store, env)

📣 Практики, которые реально спасают

— Запрет прямых импортов из shared/utils/*
— Индексные экспорты с явным API
— Ревью с вопросом: «почему это shared?»


📌 shared/utils не исчезает мгновенно, а теряет свою актуальность из-за отсутствия новых правил и изменений. Если shared: маленький, скучный и предсказуемый, это свидетельствует о том, что всё сделано правильно.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
11👀2👎1
CodeFest зовёт в спикеры. Успевай податься до 1 марта!

30–31 мая в Новосибирске пройдёт ИТ-конференция CodeFest. Это 16-я по счёту конференция, где соберётся 2000+ инженеров, продактов, дизайнеров и все, кому небезразлична эта инженерная романтика.

Программа строится вокруг технических и продуктово-управленческих дисциплин, а также сквозных тем — архитектура, performance, базы данных, безопасность, AI, процессы, качество, продукт и управление командами — всего 14 треков.

ТОП причин, чтобы податься с докладом:
— Возможность поделиться реальными кейсами и экспертизой, пообщаться с другими спикерами
— Поддержка и помощь программного комитета при подготовке доклада
— Улётная атмосфера — препати, афтепати и легендарный дошикпоинт
— Логистика спикеров до Новосибирска

CodeFest — топовая аудитория, оживлённые дискуссии и мощнейший всплеск дофамина. Если давно хотели выступить — это знак!

Присылайте заявки до 1 марта.
#реклама
О рекламодателе
4🔥2
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Я в пятницу: «Давайте уже после выходных пофиксим»

😁 Я в понедельник:

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁263
🗳 Почему типы не спасают от плохого API

Есть распространённая иллюзия, если код типизирован — значит, всё ок. Спойлер: нет. Типы защищают от части ошибок, но не от плохих архитектурных решений.

❗️ Типы проверяют форму, а не смысл

type User = {
id: string
role: string
}


С точки зрения типов — идеально. С точки зрения домена — катастрофа. Что такое role? Какие значения допустимы? Что означает пустая строка? Типы молчат. Ошибки — нет.

❗️ Типизированный хаос — всё ещё хаос

API может быть:
— перегруженным
— непоследовательным
— с неочевидными побочными эффектами
— и при этом идеально типизированным

doStuff(data, options, flags, ctx)

❗️ Типы не заменяют дизайн, лишь фиксируют этот бардак в коде

Если API:
— принимает «объект всего»
— возвращает any-подобные структуры
— заставляет знать внутренности системы

Плохой интерфейс + типы = плохо типизированный интерфейс.

❗️ Типы не объясняют, как пользоваться API

TypeScript не отвечает на вопросы:
— в каком порядке вызывать методы
— какие комбинации валидны
— что можно делать, а что нельзя

Если без документации API непонятен — типизация не спасёт.

❗️ Типы часто скрывают архитектурные проблемы

Когда видишь:
— гигантские union-типы
— Partial<T> поверх всего
— бесконечные дженерики

Это не «сложно». Это симптом.

❗️ Как типы усиливают хороший дизайн, а не маскируют плохой

Типы работают, когда:
— API маленький
— ответственность чёткая
— доменные ограничения выражены явно
— названия говорят сами за себя


📌 TypeScript — это не страховка от плохого API. Это усилитель. Хороший дизайн он делает надёжнее. Плохой просто закрепляет навсегда.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142👀1
Ищем Senior Frontend Developer @ Steper

от 300 000 ₽/мес на руки

👩‍💻 Гибридный формат (удаленка, ищем кандидата из Москвы)

Стек: TypeScript, Vue 3 (опыт от 2 лет), Git (будет плюсом знание Node.js)

Что делать:
- Участвовать в разработке проекта
- Разрабатывать интерфейсы платформы
- Проектировать и улучшать UI/UX, делать продукт удобным для бизнеса
- Работать над компонентами и архитектурой фронтенда.
- Участвовать в проектировании общей логики продукта и интеграций, включая AI-модули в сценариях.

Важно:
- Писать качественный и современный код, но без чрезмерного увлечения велосипедами
- Уметь самостоятельно принимать решения по разработке продукта, а не ждать подробных ТЗ

О компании:
Steper — сервис для создания сценариев с привязкой к ботам в различных соцсетях и автоматизацией цепочек действий: от запуска задачи до её решения.
Проект напоминает что-то среднее между n8n.io и bothelp.io.
Платформа поддерживает использование AI внутри сценариев, что позволяет делать процессы гибче и умнее.

Что предлагаем:
- ЗП: от 300 000 ₽/мес на руки
- 7-часовой рабочий день + 1 час обед
- Гибридный график работы (редкие встречи в Москве с командой)
- Оплата коворкинга и подписок на полезные сервисы (обсуждается)
- Возможность влиять на продукт и принимать ключевые решения
- Работа в небольшой продуктовой команде и участие в развитии проекта

Откликнуться: https://forms.yandex.ru/u/698d68d35056902e746570d5/
12😁9🔥5👎2🐳2
Forwarded from xCode Journal
😁 Неделя из жизни IT-конторы

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍32👎2