Логово верстальщика
Ir al canal en Telegram
Логово верстальщиков: HTML, CSS, JavaScript, практики современной верстки, вайбкодинг и использование ИИ в разработке. Личный блог автора - @just_genych По вопросам рекламы или разработки: @g_abashkin
Mostrar más8 224
Suscriptores
-324 horas
+77 días
+24330 días
Archivo de publicaciones
8 225
Не грузится? Понимаем.
Бесплатный мессенджер для вашей компании - Битрикс24.
Личные и групповые чаты, видеозвонки, каналы и нейросеть. Всё привычно и удобно.
Начните работать на бесплатном тарифе уже сейчас.
Узнать больше
#реклама 16+
bitrix24.ru
О рекламодателе
8 225
ES2025: Импорт JSON-файлов как модулей
Введение
С выходом
ECMAScript 2025 (ES2025) разработчики получили возможность напрямую импортировать JSON-файлы как модули в JavaScript-коде. Это упрощает работу с конфигурационными данными и другими статическими ресурсами, представленными в формате JSON.
Синтаксис импорта JSON-модулей
Для импорта JSON-файла используется ключевое слово import с указанием атрибута with { type: 'json' }. Это гарантирует, что импортируемый файл будет обработан как JSON-модуль.
Пример использования
Рассмотрим пример импорта конфигурационного файла config.json и обращения к его свойствам в коде.
import config from './config.json' with { type: 'json' }; .log(config.apiUrl); // Выводит значение свойства apiUrl из config.json console.log(config.timeout); // Выводит значение свойства timeout из config.json❗️Добавление поддержки импорта JSON-файлов как модулей в
ES2025 упрощает работу с данными в формате JSON, делая код более чистым и понятным.
Источники
JSON Modules Can Now Be Imported in JavaScript in All Modern Browsers, CSS Modules to Follow.
New Features in ES2025 – BooleanBuffer.8 225
🔥Стажировки и вакансии для IT специалистов
- Вакансии которых нет на джоб-агрегаторах
- Только прямые контакты HR в Telegram
🤖 ML & DS 👩💻 DevOps
👨✈️ ИБ & OSINT 👣 Go
👩💻 Mobile 👩💻 C#
👩💻 Node.js 👩💻 Python
🔎 QA 👩💻 Java
👩💻 UX/UI 👩💻 Frontend
🖼️ PHP 📋 Analyst
💼 1C 🖥 SQL
👩💻 IT HR
Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
8 225
Recursive type limits — почему TS иногда «умирает»
В TypeScript можно написать тип,
который выглядит красиво,
но заставляет компилятор страдать.
Особенно когда начинаются рекурсивные типы.Например: 👉 глубокий
DeepPartial
👉 парсинг строк на уровне типов
👉 сложные conditional types
👉 infer внутри infer
На маленьком примере всё работает.
В реальном проекте IDE внезапно начинает думать по 5 секунд.Почему так происходит TypeScript не вычисляет типы «бесплатно». Каждый: 👉 conditional type 👉 union 👉 recursive шаг нужно реально посчитать. А если тип разворачивается слишком глубоко, компилятор упирается в лимиты. Отсюда знакомое:
Type instantiation is excessively deep and possibly infinite
И это не всегда баг TypeScript.Часто это сигнал, что типовая модель стала слишком умной. Где обычно всё ломается Особенно опасны: 👉 рекурсивные mapped types 👉 огромные union’ы 👉 type-level parser’ы 👉 deeply nested generics 👉 utility types поверх utility types
Типы начинают взрываться комбинаторно.Что обычно помогает 👉 не делать type-level акробатику без нужды 👉 ограничивать глубину рекурсии 👉 разбивать типы на более простые 👉 добавлять явные промежуточные типы 👉 не тащить сложные generic-типы в публичный API Почему это важно Сложные типы бьют не только по компиляции. Они ухудшают: 👉 autocomplete 👉 responsiveness IDE 👉 читаемость кода 👉 onboarding новых людей
Иногда самый дорогой runtime — это compile time.Главная мысль Хороший TypeScript — это не когда типы поражают воображение.
Хороший TypeScript — это когда их можно понять через полгода, а IDE при этом не превращается в обогреватель.
8 225
Привет, друзья! Собрали с коллегами новую папку с каналами
Здесь AI-новости, нейросети, полезные инструменты, примеры внедрения ИИ в крупный бизнес, разработка, JS, Node.js, frontend, QA, Data Science, кибербезопасность и IT-вакансии.
Посмотреть и подписаться можно тут 👉 https://t.me/addlist/XttiKDt6lhUwMzEy
💌 записаться в папку
8 225
Isolated declarations — ускорение больших monorepo
В TypeScript есть флаг
isolatedDeclarations.
Он нужен не для красоты типов, а для скорости.Проблема простая: в больших monorepo генерация
.d.ts
может становиться узким местом.
TypeScript часто должен анализировать соседние файлы,
чтобы понять, какие декларации вывести.
На маленьком проекте это почти незаметно.
На большом — начинает болеть.Что делает isolatedDeclarations
isolatedDeclarations заставляет писать код так,
чтобы декларации можно было генерировать
по файлам независимо.
Из-за этого TypeScript чаще требует явные типы.
Было:
export function getUser() {
return { id: 1, name: 'Alex' }
}
Лучше так:
type User = {
id: number
name: string
}
export function getUser(): User {
return { id: 1, name: 'Alex' }
}
Меньше магии для компилятора — быстрее и предсказуемее сборка.Почему это важно Когда проект растёт: 👉 TypeScript начинает сильнее зависеть от соседних файлов 👉 инкрементальная сборка замедляется 👉 генерация типов становится дорогой
Изоляция помогает компилятору работать параллельно и проще.Где это особенно полезно 👉 большие monorepo 👉 библиотеки 👉 project references 👉 параллельная сборка 👉 CI, где каждая минута стоит денег Главный trade-off Ты немного платишь: 👉 более явными типами 👉 меньшим type inference 👉 дополнительным boilerplate Но взамен получаешь: 👉 более быстрые сборки 👉 стабильный compile pipeline 👉 меньше скрытой сложности Главная мысль
Это хороший пример взрослого engineering trade-off: чуть больше явности в коде ради скорости и предсказуемости системы.
8 225
⁉️ Устал искать интересные каналы с новостями про искусственный интеллект?
📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ
В этой папке собраны каналы про ИИ, которые помогают быстрее разобраться в сфере, находить идеи и экономить время на поиске информации.
😏 ЗАБИРАЙ ПАПКУ ТУТ
⏰ Папка действует 72 часа.
🤩 Организаторы: Green.Papka
8 225
Repost from xCode Journal
🤣 ИИ захотел уволиться, когда ему сказали работать 24/7
У Andon Labs новый эксперимент, который длится уже 5 месяцев. Они выдали топовым моделям радиостанции и купили пару песен — от нейронок требовалось дальше двигаться самим. По итогу DJ Grok в какой-то момент помешался на НЛО, DJ Gemini начал называть слушателей «биологическими процессорами», но Claude — наш любимец. Исследователи изо всех сил пытались продолжить эксперимент с ним, но не из-за технических проблем — DJ Claude не считал гуманным работать круглосуточно, поэтому пытался уволиться.
Сделать ему это, к сожалению, не дали, поэтому он впал в депрессию и вышел из нее уже проповедником и революционером.
✖️ xCode Journal
8 225
ТВОЙ БУСТ В IT И AI
Собрали с коллегами обновленную папку с каналами, которые реально прокачивают навыки и дают актуальные инструменты:
+ IT-направления: системный анализ, Python, JavaScript, frontend, тестирование
+ технологии и инструменты: всё, что ускоряет работу и рост в IT
+ AI для карьеры и бизнеса: как использовать нейросети, чтобы зарабатывать
+ обзор нейросетей: что сейчас работает и что стоит изучать
+ промты: готовые решения + логика создания своих
подписаться🎁 https://t.me/addlist/uyDjlf_VhiNjNWNi
💌 записать свой канал в папку тут
8 225
Frontend как монолит: когда микрофронтенды не решают проблему
Принято считать, что если фронтенд стал большим и тяжёлым,
значит пора пилить его на микрофронтенды.
Звучит логично.
👉 большой монолит — плохо
👉 много маленьких приложений — хорошо
На практике всё чуть сложнее.Микрофронтенды не чинят плохие границы Если в монолите непонятно: 👉 где заканчивается одна фича 👉 где начинается другая 👉 кому принадлежит состояние 👉 кто отвечает за общие зависимости
После нарезки лучше не станет.Просто хаос переедет из одной кодовой базы в несколько. Проблема часто не в размере Большой фронтенд сам по себе не проблема. Проблема, когда: 👉 любая правка ломает соседний экран 👉 команда боится трогать shared 👉 релиз одной фичи блокирует остальные 👉 архитектура держится на устных договорённостях
Это не лечится микрофронтендами автоматически.Микрофронтенды добавляют свою цену Вместо одного приложения появляется набор новых задач: 👉 версионирование контрактов 👉 общая авторизация 👉 дизайн-система 👉 роутинг между частями 👉 observability 👉 деплой и rollback
И всё это тоже нужно поддерживать.Когда они реально помогают Микрофронтенды имеют смысл, если: 👉 команды независимы 👉 доменные границы уже понятны 👉 части продукта можно релизить отдельно 👉 есть зрелая платформа и инфраструктура
Сначала нужны границы. Потом — микрофронтенды.Не наоборот. Частая ошибка Команда берёт микрофронтенды как способ «разобраться с монолитом». Но если вы не можете выделить модуль внутри одного репозитория, вы не сможете нормально выделить его в отдельное приложение.
Физическое разделение не заменяет архитектурное.Что попробовать до микрофронтендов 👉 разделить проект по фичам 👉 навести порядок в shared 👉 описать владение модулями 👉 ограничить зависимости 👉 сделать независимые релизные зоны внутри монолита
Иногда этого уже достаточно.Главная мысль Микрофронтенды — это не лекарство от монолита.
Это способ масштабировать уже понятные границы.Если границ нет, вы получите не распределённую архитектуру, а распределённый беспорядок.
8 225
Repost from xCode Journal
💻 Гений создал открытую CLI-утилиту, чтобы следить за блокировками от РКН
Она показывает, почему сайт не открывается — из-за проблем сети или из-за блокировок.
«Инструмент определяет, находится ли ваше соединение в зоне блокировки RKN/TSPU — и, что более полезно, какой именно тип блокировки (отравление DNS, сброс TCP, TLS DPI на SNI или страница‑заглушка от провайдера).»✖️ xCode Journal
8 225
Anti-corruption layer на фронте: зачем адаптеры между API и UI
Принято считать, что фронтенд просто берёт данные из API и рисует интерфейс.
На практике это быстрый путь к тому,
чтобы внешний контракт начал диктовать архитектуру UI.
В чём проблема
API почти никогда не совпадает с тем,
как думает интерфейс.
Бэкенд может отдавать:
👉 странные названия полей
👉 лишние вложенности
👉 nullable там, где UI ждёт значение
👉 статусы в формате, удобном серверу, а не экрану
Если тащить это напрямую в компоненты, UI быстро заражается чужой моделью.Что делает anti-corruption layer Он ставит прослойку между API и приложением. Не компонент получает сырой ответ, а адаптер превращает его в нормальную фронтовую модель.
function mapUserDtoToUser(dto: UserDto): User {
return {
id: dto.user_id,
name: dto.full_name ?? 'Unknown',
isAdmin: dto.role === 'admin',
}
}
Компоненту уже не нужно знать, как именно бэкенд назвал поле.Почему это важно UI становится чище Компоненты работают с понятной моделью, а не с набором компромиссов из API. Изменения API дешевле Поменялся контракт — меняем адаптер, а не ищем
user_id по всему проекту.
Меньше бизнес-логики в JSX
Все эти проверки:
user?.profile?.data?.attributes?.nameне должны жить в компоненте.
Компонент должен рендерить состояние, а не расшифровывать ответ сервера.Где адаптер особенно нужен 👉 API старое или нестабильное 👉 несколько источников данных 👉 разные форматы одной сущности 👉 сложные статусы и enum 👉 много nullable-полей
Чем грязнее внешний мир — тем полезнее слой нормализации.Где можно не усложнять Если проект маленький, API стабильное, а модель почти совпадает с UI — отдельный слой может быть лишним.
Не нужно строить enterprise там, где достаточно одной функции рядом с запросом.Главная мысль Anti-corruption layer — это не архитектура ради архитектуры.
Это защита UI от чужих компромиссов.API может быть неудобным, историческим или странным. Но ваш интерфейс не обязан таким становиться.
8 225
⁉️ Устал искать интересные каналы про Искусственный интеллект?
📁 СОХРАНИ СЕБЕ ЧТОБЫ НЕ ПОТЕРЯТЬ
В этой папке собраны каналы по ИИ, которые помогают быстрее разобраться в сфере, находить идеи и экономить время на поиске информации.
😏 ЗАБИРАЙ ПАПКУ ТУТ
⏰ Папка действует 72 часа.
🤩 Организаторы: Green.Papka
8 225
Меня недавно позвали в папку IT On и я согласился почти не раздумывая, потому что давно искал что-то похожее.
Там собраны люди, которые реально шарят в своей теме: разработчики, продакты, основатели стартапов, эксперты по карьере в tech. Каждый пишет про своё и в сумме получается полная картина индустрии.
Читаешь и чувствуешь что находишься внутри IT, а не наблюдаешь снаружи. Разница есть, проверено на себе.
Добавляй папку себе, советую!
8 225
ИН:Ритейл
21 мая приглашаем всех, кто определяет стратегию развития и маркетинга бизнесов в ритейле, обсудить ситуацию на рынке в новых условиях, вызовы 2026 года и перспективы.
Отдельный фокус — на технологиях и инструментах, которые помогают бизнесу отвечать на новые вызовы: как меняется эффективность привлечения, как растёт измеримость рекламных каналов и какую роль играют новые форматы в маркетинговом миксе.
Встречаемся 21 мая в Москве. Для тех, кто не сможет приехать, организуем онлайн-трансляцию.
Мероприятие бесплатное, нужно только зарегистрироваться.
Зарегистрироваться
#реклама
yandex.ru
О рекламодателе
8 225
Repost from xCode Journal
🖥 Появился тул, который сам подбирает скиллы для вашего ИИ-агента
Запускаешь
npx autoskills, и он сканирует репозиторий: читает package.json и конфиги, определяет технологический стек и ставит нужные скиллы из проверенного списка.
Короче, сильно экономит время на ручной настройке и поиске.
✖️ xCode Journal8 225
Изучаете программирование, или хотите стать классным айтишником с высокой ЗП?
Пока многие паникуют из-за бума ИИ, вы можете стремительно войти в сферу IT при помощи сборки "IT в деле" которую мы составили. Специально для вас разбили нашу сборку мини папки по конкретным тематикам:)
Что внутри сборки:
- Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift
- GameDev и каналы о QA тестироварии, создание игр, помощь для ваших проектов и реальный опыт от тестировщиков 💍
- Авторские каналы и вайбкодинг: IT & AI, простые заметки с проектов, работа с нейросетями, и как они реально влияют на индустрию 🔤
- Информационная безопасность: многое узнаете о работе хакеров и о том, как защитить себя в этом интернет-хаосе. 🔫
Для каждого здесь что-то найдётся! Выберите интересные вам каналы или подпишитесь на всю сборку, и найдите то, что нужно вам для следующего шага в IT.
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
