Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
LinkedIn запартнерился с Descript, Lovable, Relay и Replit — теперь они смогут автоматически оценивать ваш уровень владения инструментом и подтверждать навык, который тут же может отобразиться в профиле. Всего есть несколько уровней вайбкодинга: бронзовый, серебряный, золотой, платиновый и алмазный.
Потенциально это поможет работодателям быстрее понять ваш реальный навык работы с ИИ. И да — апдейт уже выкатили.
Please open Telegram to view this post
VIEW IN TELEGRAM
👀12😁9❤5🔥2👍1👎1
👎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, тем быстрее страница кажется пользователю.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤7🔥2
Forwarded from xCode Journal
При этом Microsoft закрыла тикет со статусом not planned — то есть чинить они лазейку не собираются. Как работает:
1. Создаем новый чат;
2. Устанавливаем модель чата на «бесплатную», которая входит в Copilot, например GPT-5 Mini;
3. Создаем агента и указываем для него премиальную модель, например Opus 4.5;
4. Переключаемся в режим работы «Агент»;
5. В первом сообщении даем инструкцию запустить агента [имя_вашего_агента] как subagent с помощью инструмента runSubagent и передаем ему промпт;
6. Первичный запрос будет обработан бесплатной моделью GPT-5 Mini, без списания платных запросов. Бесплатная модель создаст subagent. Ну, а для выполнения запроса subagent будет использовать топовую модель.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14❤5👍4👎1
Forwarded from xCode Journal
Парень проанализировал 9 000+ технических интервью и выяснил, что же хочет рынок от кандидатов. Главное:
— Среднее интервью занимает 45-50 минут. Из них 10% люди тратят на самопрезентацию, к которой продолжают не готовиться (выводы делаем, да?);
— Алгосы все еще в топе — на них приходится 28% всего времени интервью. Но мучают ими только джунов и мидлов.
— Лиды и сеньоры чаще проходят System Design (78% случаев). Это занимает 25-30 минут. Мидлам тоже достается, но задачи попроще — не "спроектируйте YouTube", а "спроектируйте URL shortener".
— В топ-3 вопросов ожидаемо входят «Расскажите о себе», принципы SOLID и разница между процессом и потоком.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👀16👍6❤2
Этот спор живёт почти в каждом более-менее большом фронтенд-проекте. Одни говорят: «делим по слоям — 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-кит отдельно
— доменная логика не размазывается по проекту❌ Главная ошибка
Выбирать архитектуру как религию. Не задавая простых вопросов:
— сколько людей будет в проекте?
— как часто добавляются и удаляются фичи?
— важнее быстрый старт или долгоживущая поддержка?
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-свойство (например, цвет текста), но не обязательно одно. Выглядят они примерно так:
Преимущества такого подхода
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 для сложной верстки: множественные градиенты, псевдоселекторы с аргументами, типа
- сделать интеграции для вайб-кодинга
- сделать плагины к IDE для автокомплита и подсказок
А недавно мы запустили проект на ProductRadar. Бодаемся там со стартапами за топ-3 продуктов этой недели. Будем благодарны за поддержку лайком на этой площадке и любой фидбек. Давайте покажем всем, что open source инструмент тоже может быть продуктом!
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 инструмент тоже может быть продуктом!
👎28❤8👍6😁2🔥1
Принято считать, что рефакторинг всегда благо. Мол, код стал чище, значит проект автоматически стал лучше. На практике рефакторинг иногда делает только хуже. И это нормально, если понимать, в каких моментах стоит остановиться.
❗️ Когда нет проблемы
Самый частый сценарий. Код работает, покрыт тестами, понятен команде, но кому-то просто «не нравится стиль».
Что получается в итоге:
— переписаны десятки файлов
— история изменений размазана
— баги появляются из ниоткуда
Рефакторинг ради эстетики — это не инвестиция, а хобби.💬 «Давайте быстренько подчистим архитектуру» — худшая мысль за неделю до дедлайна
Почему это опасно:
— резко растёт риск регрессий
— тесты не ловят всё
— команда теряет фокус на бизнес-цели
Перед релизом рефакторят только то, что действительно блокирует выпуск.🔎 Без чёткой цели
Фразы-триггеры, которые должны настораживать:
— «давай просто улучшим»
— «тут можно сделать красивее»
— «я бы переписал по-другому»
Хороший рефакторинг всегда отвечает на вопрос: какую конкретную боль он снимает? Плохой — не отвечает ни на один.👥 Когда команда не готова
Рефакторинг быстро превращается в «личный стиль автора». Через месяц никто уже не понимает, почему код выглядит именно так.
Если:
— нет общих соглашений
— нет документации
— нет нормального код-ревью⬆️ Когда рефакторинг подменяет развитие
Иногда рефакторинг — это способ не делать фичи. Потому что:
— страшно трогать бизнес-логику
— нет ясных требований
— хочется заняться «безопасной» работой
Но пользователю всё равно, насколько у вас элегантный код.📣 Как понять, что рефакторинг оправдан, во всех остальных случаях — осторожно
Он действительно нужен, если:
— код мешает добавлять фичи
— правки регулярно ломают соседние части
— баги повторяются в одном месте
— время изменений стабильно растёт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8👎1🐳1
Forwarded from xCode Journal
В офисе JetBrains сработала пожарная тревога, о чем одна из сотрудниц написала в чат. Тут же встроенный ИИ-помощник Glean сказал, что это запланированная учебная тревога и можно оставаться на своих местах.
Ну и да — вскоре к зданию подъехали пожарные.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32❤3
Есть почти универсальный сценарий. 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?»
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 марта.
#реклама
О рекламодателе
30–31 мая в Новосибирске пройдёт ИТ-конференция CodeFest. Это 16-я по счёту конференция, где соберётся 2000+ инженеров, продактов, дизайнеров и все, кому небезразлична эта инженерная романтика.
Программа строится вокруг технических и продуктово-управленческих дисциплин, а также сквозных тем — архитектура, performance, базы данных, безопасность, AI, процессы, качество, продукт и управление командами — всего 14 треков.
ТОП причин, чтобы податься с докладом:
— Возможность поделиться реальными кейсами и экспертизой, пообщаться с другими спикерами
— Поддержка и помощь программного комитета при подготовке доклада
— Улётная атмосфера — препати, афтепати и легендарный дошикпоинт
— Логистика спикеров до Новосибирска
CodeFest — топовая аудитория, оживлённые дискуссии и мощнейший всплеск дофамина. Если давно хотели выступить — это знак!
Присылайте заявки до 1 марта.
#реклама
О рекламодателе
❤4🔥2
Forwarded from xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26❤3
Есть распространённая иллюзия, если код типизирован — значит, всё ок. Спойлер: нет. Типы защищают от части ошибок, но не от плохих архитектурных решений.
❗️ Типы проверяют форму, а не смыслtype User = {
id: string
role: string
}
С точки зрения типов — идеально. С точки зрения домена — катастрофа. Что такое role? Какие значения допустимы? Что означает пустая строка? Типы молчат. Ошибки — нет.❗️ Типизированный хаос — всё ещё хаос
API может быть:
— перегруженным
— непоследовательным
— с неочевидными побочными эффектами
— и при этом идеально типизированнымdoStuff(data, options, flags, ctx)❗️ Типы не заменяют дизайн, лишь фиксируют этот бардак в коде
Если API:
— принимает «объект всего»
— возвращает any-подобные структуры
— заставляет знать внутренности системы
Плохой интерфейс + типы = плохо типизированный интерфейс.❗️ Типы не объясняют, как пользоваться API
TypeScript не отвечает на вопросы:
— в каком порядке вызывать методы
— какие комбинации валидны
— что можно делать, а что нельзя
Если без документации API непонятен — типизация не спасёт.❗️ Типы часто скрывают архитектурные проблемы
Когда видишь:
— гигантские union-типы
— Partial<T> поверх всего
— бесконечные дженерики
Это не «сложно». Это симптом.❗️ Как типы усиливают хороший дизайн, а не маскируют плохой
Типы работают, когда:
— API маленький
— ответственность чёткая
— доменные ограничения выражены явно
— названия говорят сами за себя
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2👀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/
от 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍3❤2👎2