Обновить

Фронтенд

Сначала показывать
Порог рейтинга
Уровень сложности

От клика до железа: хроника одного запроса. Часть 1

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров3.2K

Увлекались ли вы когда-нибудь задачей так сильно, что полностью выпадали из жизни? Я — да. Писал код, разбирался с нюансами, тестировал, переделывал, снова тестировал… В какой-то момент мой друг, давно не слышавший обо мне, решил узнать, куда я пропал. Мы созвонились, и я рассказал, чем занимаюсь. Он послушал, усмехнулся: «Как же хорошо, что я выбрал бэкенд-разработку».

На самом деле ничего сверхъестественного в этой задаче не было. Но и простой её тоже не назовёшь — архитектура сложилась под влиянием множества ограничений: браузер не может напрямую запускать exe-файл, бэкенд не имеет доступа к локальному оборудованию, а взаимодействие между всеми этими частями нужно было выстроить чётко и последовательно.

Всё это заставляет внимательнее смотреть на возможности, которые предоставляет среда браузера. Chrome-расширения работают в строго изолированном контексте, JavaScript не имеет доступа к файловой системе или системным вызовам, и для связи с нативным приложением приходится учитывать ряд особенностей: протокол обмена, формат сообщений, правила безопасности и другие детали, которые легко упустить, если не сталкивался с этим раньше.

В этой статье я расскажу, как построить такую связку с помощью механизма Native Messaging: от интерфейса в браузере до запуска локального exe. Разберём архитектуру, покажу, какие задачи решает этот подход, и напишем рабочий пример — расширение, которое сможет общаться с программой на C.

Так что устраивайтесь поудобнее и давайте разбираться.

Читать далее

Тяжёлая артиллерия в оценке сроков задач

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.5K

Ваш планинг — фикция? Перестаньте гадать на кофейной гуще: как декомпозировать сложную задачу и оценить сроки, нырнув прямо в код. Инструмент и методика внутри.

Пли!

Обеспечение реактивной чистоты в функциях на основе сигналов

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.4K

В современных Angular-приложениях сигналы предоставляют мощный способ управления реактивными потоками данных. Однако по мере роста сложности приложений становится всё более важным поддерживать чистоту функций, которые взаимодействуют с сигналами. Реактивная чистота гарантирует, что функции не создают нежелательных побочных эффектов, регистрируя новых производителей в реактивном графе.

Читать далее

SSG своими руками

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров5.8K

Привет, Хабр!

Сегодня я хочу поделиться с вами руководством, как реализовать Static Site Generation (SSG) в React без использования сторонних фреймворков, таких как Next.js, TanStack Start, React Router и им подобных. Сразу оговорюсь: я не считаю их чем-то «плохим» и не агитирую против их применения. Всё гораздо проще: иногда по тем или иным причинам нет возможности использовать эти инструменты, или самостоятельная реализация оказывается предпочтительнее из-за количества изменений в кодовой базе.

Если вам интересна тема стратегий рендеринга веб-приложений, то прошу под кат.

Читать далее

Вайб-кодинг: революция для стартаперов или ловушка для программистов? Обзор инструментов

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Привет, чемпион! В этой статье я Никита и мой биг бро Алерон  мы вместе окунёмся в одну из самых хайповых тем года — vibe-coding решения. Почему это "болото"? Сейчас расскажем!

Вроде бы сначала всё выглядит просто: красиво, удобно, даже соблазнительно. Но спустя неделю ты уже перестаёшь писать код и просто таскаешь блоки, задаваясь вопросом: "А зачем я JS учил?". И это не шутка! Многие после первого успеха с vibe-coding начинают по-другому смотреть на разработку и сроки реализации. Но GitHub удалять рано — у всего есть оборотная сторона.

🔥vibe-coding — это проклятие или подарок Прометея? Давай разбираться.

Читать далее

Сказка. Слёзы бэкендера, или что такое примитивы

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.5K

В далёком Контуровском царстве, в чудесном Фокусовском государстве жила-была дружная команда разработчиков. Денно и нощно они создавали интерфейсы для поиска надёжных контрагентов, возводя величественные «палаты» функциональности и прокладывая пути обновлений. Но однажды, дабы ускорить доставку фич и снизить нагрузку на фронтендеров, было решено привлечь необычных существ — примитивов...

Читать далее

Как использовать любой CSS-фреймворк в вашем проекте — Часть 4

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.2K

Bootstrap предоставляет базовую структуру, но её нужно адаптировать под ваш дизайн, чтобы избежать хаоса в стилях.

В этой статье я покажу, как системно подойти к настройке кнопки Primary с помощью SCSS-переменных. Вы узнаете, как сохранить чистоту стилей, сделать проект масштабируемым и обеспечить согласованность дизайн-системы.

Читать далее

Как я попала во фронтенд, не имея айтишного образования: честный рассказ Насти Егоровой

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.9K

Можно ли стать фронтендером, если выучился на экономиста, не сломаться на скучных задачах и не соврать в резюме — и при этом ещё кайфовать от работы? Разбираемся, как выглядит реальный путь в IT: с неопределённости в 11 классе, через SEO и маркетинг — к конференциям, курсам и YouTube‑каналу. Без глянца и мотивационных штампов — только честная история, как оно бывает на самом деле.

Эта статья — текстовый вариант выпуска подкаста Girls&Code с DevRel Skillbox Машей Даровской. Гостья — Анастасия Егорова, эксперт Skillbox по фронтенду, спикер конференции Holy JS, автор телеграм‑канала «Код и кофе» и youtube‑канала @cosyfrontendnastia с полезным контентом для джунов.

Обсудили, как без профильного образования и IT‑бэкграунда перейти в разработку, найти первую работу, пережить скучные задачи, не потерять мотивацию и почему не стоит врать в резюме.

Читать далее

Знакомство с Web Locks API

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.1K

Представьте оживлённый перекрёсток без светофоров и знаков приоритета. Машины едут в разных направлениях, кто-то пытается проскочить первым, кто-то резко тормозит. Рано или поздно это приведёт к аварии.

Примерно так же работают современные веб-приложения: множество вкладок, фоновых процессов и асинхронных операций конкурируют за общие ресурсы, будь то отправка запроса к API, определение очередности какого-то действия или синхронизация состояния.

Долгое время разработчики обходились кустарными решениями — флагами в localStorage, хитрыми setInterval и т.д. Но с появлением Web Locks API у нас наконец появился стандартный способ расставить приоритеты в этом хаосе.

Web Lock API — это механизм, позволяющий скриптам, находящимся в рамках одного orign, блокировать доступ к ресурсу, удерживать блокировку пока выполняется необходимый код, а затем разблокировать ресурс, чтобы другие части программы могли получить к нему доступ.

Читать далее

Делиться знаниями — значит расти. 6 шагов к построению базы знаний на основе Data Warehouse (DWH)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.2K

Этот текст — эссенция практического опыта креативного специалиста, который помогает бизнесу находить технические решения в области построения базы знаний. Решил поделиться своими заметками об архитектуре хранилища данных (DWH) и написать, почему важно хранить корпоративные данные в едином хранилище, как преодолеть внутренние барьеры (вроде страха критики и синдрома самозванца) для начала обмена знаниями и какими техническими и организационными решениями можно сделать этот процесс удобным и полезным. В статье — живой опыт, конкретные советы и немного вдохновения для тех, кто только начинает делиться знаниями внутри команды.

Читать далее

Охота за 100% покрытием: как собрать все метрики воедино в монорепозитории Nx

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров620

Работая с монорепозиториями на Nx, часто возникает необходимость получить единый отчёт о покрытии кода. Однако по умолчанию каждый проект генерирует отдельный файл, что затрудняет анализ. В этой статье расскажем, как с помощью nyc-merge объединить все отчёты в один.

Читать далее

Интеграция виджета обратного звонка МТС Exolve в документацию на MkDocs

Время на прочтение8 мин
Количество просмотров715

Привет, Хабр! Это Екатерина Саяпина, Product Owner платформы МТС Exolve. Сегодня покажу, как быстро добавить виджет обратного звонка на страницу, созданную с помощью MkDocs — статического генератора сайтов с уклоном в техническую документацию. Такое размещение виджета бывает нужно в справочных разделах сложных продуктов, где клиентам может потребоваться консультация или разъяснение каких-то технических моментов.

Для большей конкретики возьмем страницу с описанием S3 API вымышленного облачного провайдера — это типичный сценарий, где пользователю может потребоваться быстрая консультация специалиста.

Читать далее

Третий шаг в мир RxJS: комбинирование потоков в RxJS

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров4.7K

RxJS — штука мощная, но одновременно и коварная. Многие новички, освоив такие базовые операторы, как mapfilter и, возможно, даже take, начинают чувствовать себя уверенно. Но в какой-то момент они сталкиваются с задачами, где нужно сочетать несколько потоков одновременно… и всё! Паника. Что выбирать: combineLatestforkJoinmergezip? А что делать, если данные приходят с разной скоростью? Этот материал для тех, кто запутался на этом этапе. Давайте попробуем спокойно и пошагово разобраться.

Читать далее

Ближайшие события

Обнаружение изменения положения DOM элемента с помощью IntersectionObserver

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.6K

Попытка создания универсального решения, которое позволяет обнаруживать изменение положения элемента на веб-странице в независимости от того, чем оно было вызвано: прокруткой, изменением размера окна или родительского контейнера, масштабированием, изменением разметки или непосредсвенно заданием координат left и top самого элемента.

Читать далее

Как использовать любой CSS-фреймворк в вашем проекте — Часть 3

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.4K

Цвета — одна из ключевых частей любой дизайн-системы — и также одна из самых сложных. Если с ними обращаться хаотично, это приведёт к путанице и несогласованности в дальнейшем.

В этой статье мы разбираем, как создать согласованную цветовую систему для всего проекта, используя всего 6–8 основных цветов и их оттенков. Я покажу, как правильно распределять цвета между компонентами и переменными, чтобы всё оставалось предсказуемым и удобным для команды.

Читать далее

React 19: что нового, что полезного, и куда мы движемся

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров15K

С вами Дима, старший фронтенд разработчик в Surf, и сегодня мы разберём React 19 — новую версию одной из самых популярных библиотек для создания пользовательских интерфейсов. 

Вперёд, к подробному разбору основных фичей, оценке их плюсов и минусов и исследованию будущего React. 

Читать дальше

CI/CD для чайников — разберитесь и начните наконец-то автоматизировать рутину в разработке. Часть 2. Запускаем CI

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров14K

Список необходимых инструментов.

В прошлый раз мы остановились на том, что получили в свое распоряжение сервер – операционную систему внутри контейнера, которая автоматически стартует, в ответ на указанные действия в репозитории. В нашем случае – пока что на событие пуш.

И на этом сервере, мы можем выполнять любой набор команд для автоматизации.🫡

Но самый важный момент на этом этапе – какие настройки должны быть на этом сервере? Какие программы, пакеты или библиотеки, должны быть установлены? В конце концов, какую операционную систему использовать? ⚠️

Мы уже определили набор команд, которые хотим запускать. Давайте разберемся, что нам нужно для их успешного выполнения? Это будет вторым важным и сложным на первых порах моментом, который следует разобрать.

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

eslint . –fix

npm run build

Если попробовать перечислить, то получится следующий список

Читать далее

Автоматизация сбора данных. Как подтянуть курсы валютных пар ЦБ РФ

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.2K

При расчёте доходности торговли валютными парами и ациями pre-IPO всегда нужны актуальные валютные курсы. Постоянно открывать сайт Центробанка РФ (ЦБ РФ) и копировать валютные курсы в Excel становится лень – и тут на помощь приходят Excel и VBA.

Наипростейшее решение – сделать в Excel выпадающий список с выбором валюты и написать макрос, который сам подтянет нужный курс с сайта ЦБ РФ. Тогда можно просто выбрать, например, USD или EUR, и таблица сама подставит актуальный курс в расчет. Звучит классно, пора делать.

Читать далее

Как мы сделали дизайн-систему для мобильных устройств и TV

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров3.1K

Привет, Хабр! Меня зовут Вячеслав Таранников, я ведущий Android-разработчик в RuStore, и сегодня расскажу о нашей дизайн-системе, разобрав две ключевые темы: токены и компоненты.

Эта статья основана на моем совместном докладе с Дмитрием Смирновым, руководителем команды разработки, — «Как мы создали дизайн-систему для мобильных устройств и ТV на Jetpack Compose». Мы представили его на митапе «Coffee&Code ✕ RuStore | TechBrew» и теперь делимся основными идеями с вами.

Читать далее

Make Data Visualization Great Again (или как мы создавали свой инструмент визуализации данных)

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3K

Всем привет! Меня зовут Олег Косарев. Я – ведущий инженер-программист. В группе компаний «Цифра» занимаюсь развитием и поддержкой продукта «Диспетчер». Моя основная специализация – Frontend-разработка.

В данной статье я хочу поделиться с вами нашим опытом по созданию MVP (Minimum Viable Product, «минимально жизнеспособный продукт») редактора аналитических панелей.

Читать далее