Обновить
432.62

Веб-разработка *

Делаем веб лучше

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

Как мы построили рекламную платформу с нуля

Время на прочтение6 мин
Охват и читатели8.7K

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

Читать далее

Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

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

JWT, SSO, OAuth, OpenID Connect — названия знакомые каждому разработчику. Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает.

В этой статье мы разберём как устроен JWT и его подпись, зачем нужны access и refresh токены, что такое JWKS и в чём отличие OAuth от OpenID Connect.

Вместо скучных стандартов и спецификаций протоколов в статье будет один наглядный образ на примере отелей и пропусков. Это позволит не только запомнить, но и прочувствовать на реальных примерах, избавиться от хаоса и путаницы в голове, когда речь заходит об аутентификации и авторизации. Цель статьи — не дать «рецепт внедрения», а дать возможность понять, как это работает внутри и «пощупать» эти темы на Go

Читать далее

Фиксим залипающий hover на мобильных устройствах

Время на прочтение4 мин
Охват и читатели7K

Залипающий hover на мобильных устройствах – частый баг. Раньше мы решали это просто плагином PostCSS Hover Media Feature, он оборачивает все псевдоклассы :hover в медиазапрос @media (hover: hover) {}. Так мы проверяли поддержку hover и отключали его на мобилках. Но во время тестирования одного проекта оказалось, что на некоторых устройствах hover продолжает залипать.

Читать далее

Roadmap.sh: дорожные карты для изучения IT, 346k звёзд на GitHub

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

В 2013-м я получил свою первую вакансию джуна. Требования: PHP, MySQL, jQuery. Всё. Я открыл tutorial, за выходные накодил todo-лист, через месяц уже чинил баги в проде.

Вчера смотрел вакансию для джуна. Требования занимали два экрана. Node.js ИЛИ Python ИЛИ Go. React ИЛИ Vue ИЛИ Angular. PostgreSQL + Redis + MongoDB. Docker обязательно. Kubernetes — плюсом. GraphQL знание приветствуется. Плюс микросервисы, CI/CD, облака...

Я посчитал: чтобы формально соответствовать этой вакансии, нужно изучить минимум 15 технологий. На поверхностное изучение каждой — месяц. Итого больше года непрерывной учёбы. Для позиции джуна.

А что сейчас?

Сейчас — это Node.js, Deno, Bun для JavaScript-бэкенда. Go, Rust, Elixir для хайлоад. Python с FastAPI, Django, Flask. Kotlin, Java, Scala для enterprise. Плюс Ruby, PHP (еще жив), C#/.NET... И это только языки и рантаймы. А еще базы: PostgreSQL, MySQL, MongoDB, Redis, Cassandra, ElasticSearch. Очереди: RabbitMQ, Kafka, NATS. Контейнеризация: Docker, Kubernetes, Helm. CI/CD: GitLab, Jenkins, GitHub Actions, CircleCI. Облака: AWS, GCP, Azure.

Бедные джуны. Хотя нет — бедные мы все. Даже опытные разрабы теряются в этом океане, когда делают шаг в сторону. Зоопарк технологий растёт экспоненциально. И вопрос "с чего начать?" и "куда двигаться?" превращается в настоящий паралич выбора.

Читать далее

Коллекция полезных CSS фишек, которые вы редко используете

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

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

В мире фронтенда активно всё меняется. Появляются одни инструменты, но только их выучишь — они устаревают, и нужно уже учить новые. Новые методы и API в JavaScript. Даже в HTML появляется что-то новое. И, конечно, CSS не отстаёт.

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

Давайте посмотрим, что я вам подготовил.

Читать далее

Webflow → Next.js без фронтендеров: как мы перенесли 500+ страниц сайта через Cursor

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

Всем привет, я сооснователь мессенджера Пачка и отвечаю, в том числе, за маркетинговую инфраструктуру. 

Нам нужно было оперативно увезти наш сайт с Webflow: 500+ страниц, блог и база знаний. При этом возвращать фронтенд-разработку в режим постоянной поддержки сайта мы не хотели. Поэтому рассматривали конструкторы и CMS, но быстро поняли, что это будет работа в минус. Все усилия на переезд лишь вернули бы сайт в рабочее состояние, не дав новых возможностей.

В итоге мы решили вести разработку и поддержку сайта в Cursor. То есть переписать его на NextJS с помощью AI агентов. Такая связка дала понятную модель страниц, быструю доставку статики и ISR для контента, а также возможность отказаться от отдельной CMS за счёт MDX.

В спокойном режиме за два месяца удалось полностью переписать сайт и запустить его в прод. Ниже делимся практическим опытом этого переезда.

Читать далее

Как оптимизировать код WebAssembly при помощи встраивания функций и деоптимизации

Время на прочтение17 мин
Охват и читатели7.4K

В этом посте будут объяснены две стратегии оптимизации WebAssembly, которые не так давно были реализованы в движке V8 и вошли в версию браузера Google Chrome M137. Речь пойдёт о спекулятивном встраивании call_indirect inlining и о поддержке деоптимизации в WebAssembly. В сочетании два этих приёма помогают генерировать более качественный машинный код, так как основаны на допущениях, которые строятся, исходя из обратной связи, поступающей от среды исполнения. Благодаря этому, WebAssembly выполняется быстрее, особенно это касается программ WasmGC. Например, проверив эти приёмы на наборе микробенчмарков, написанных на Dart, видим, что комбинация двух оптимизаций даёт ускорение в среднем более чем на 50%. В более крупных и реалистичных приложениях и на тех бенчмарках, которые рассмотрены ниже, достигается ускорение между 1% и 8%. Деоптимизации — также очень важная составляющая для дальнейшей оптимизации в будущем.

Читать далее

Client Hints: разбор технологии, которая заменит User-Agent

Время на прочтение6 мин
Охват и читатели7.8K

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

Раньше для этого можно было использовать только строку User‑Agent, которую браузер отправляет автоматически, но её избыточность и сложность парсинга стали сдерживать развитие веба. Client Hints предлагает другой подход: вместо того чтобы сразу раскрывать всю информацию, браузер передаёт только те данные, которые действительно нужны сайту.

На связи Степан из команды Яндекс Браузера. Сегодня поговорим о том, как мы переходим от устаревшего User‑Agent к современной технологии Client Hints. В статье разберём, почему User‑Agent стал проблемой, как работают хинты под капотом и какие перспективы у перехода на новую технологию.

Читать далее

35 удачных UX-решений для интернет-магазинов электроники

Время на прочтение6 мин
Охват и читатели9.4K

Всем привет! Меня зовут Саша, и последние 12 лет моя жизнь — это дизайн. Сегодня я руковожу дизайн-командой в KISLOROD, а в прошлом — помогал крупным брендам и миллионным сервисам обрести их уникальный голос и форму.

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

Эта подборка поможет увидеть актуальные UX-тренды и найти вдохновение для развития собственного e-commerce-проекта.

Читать далее

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

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели112K

Всем привет! Меня зовут Максим Иванков, мне 30 лет, у меня трое детей, и вот уже 9 лет я развиваю школы робототехники и программирования по всей России. Старший сын только пошёл в первый класс, и я вижу, как школа в провинции рушится на глазах: учителя бегут из-за копеечных ставок, бюрократии и беспомощности перед хулиганами, физику и информатику ведут кто попало, а дети теряют интерес к учёбе. За годы экспериментов я создал формат, где дети идут на занятия с радостью и учатся годами. Нет лекций — только самообучение в своём темпе: собирай роботов (колонка, сигнализация, микроконтроллеры), программируй Python прямо в Minecraft.

Читать далее

Что скрывается за адвент-календарем: бизнес-логика праздничных окошек

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

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

Недавно я увидела адвент на сайте «Читай-города» и вспомнила один из самых криповых случаев: мы делали сайт на Drupal, и заказчик попросил добавить адвент-календарь к Новому году. Сказал, что нужно, чтобы по клику на окошко пользователь получал код. И достаточно 20 разных кодов, чтобы каждый день коды менялись.

Казалось сначала, что код будет работать как пароль, открывая доступ к определённому контенту. Но по ходу реализации мы выяснили, что коды должны быть разные для всех пользователей и привязаны к сложному расчёту скидок. Мы столько раз переделывали этот адвент, что в итоге так его и не запустили…

Корень провала был не в Drupal и не в сложности кода. А в том, что изначальная просьба «сделать календарь» скрывала за собой неочевидную бизнес-систему — персонализированную систему купонов. Мы как разработчики копали вглубь интерфейса, а надо было сначала понять механику.

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

Читать далее

Пожалуйста, почините найм

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

Я в IT довольно давно, как в том меме — мне этот мир абсолютно понятен. Но сейчас происходит какая‑то ерунда, учитывая разные обстоятельства в мире, считаю так делать крайне тупо. Не то, что бы я хотел пожаловаться, и увольнения, «оптимизации», «трансформации» были всегда. Это все бизнес и к нему нечего предъявить. Разные ситуевины бывают. Но я бы хотел как‑то вставить свое мнение по теме.

Годами, если вы хотите попасть в какую‑то крутую компанию, вам нужно было и до сих пор это «нормальная» практика устраивать десятки этапов собеседований. Без проблем я принимаю эту игру. Нам же важно найти того самого рок звезду, который будет решать поставленные перед ним задачи. Типо как в магазине выбираем принтер, правда сдать его обратно через 3 месяца нельзя. Листик с него вышел — значит все, поиспользовал, живи с ним дальше.

Читать далее

Токеномика как инструмент иллюзий: пыль в глаза или искусство продавать воздух?

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

Почему токеномики — это пыль в глаза. Как криптопроекты создают иллюзию ценности и почему рынок принадлежит не гениям, а властителям медиасреды.

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

Началась эпоха крипто-стартапов, где в основу идеи легла мысль: всё, что имеет хоть какую-то стоимость, можно и нужно токенизировать в блокчейне. Проекты наперебой выпускали собственные токены, обещая инвесторам участие в будущих экосистемах, доступ к сервисам или долю в гипотетической прибыли. Рынок заполнился тысячами цифровых активов, отличавшихся друг от друга лишь названием и историей происхождения. И чем громче звучала презентация, тем охотнее инвесторы вкладывались в очередной «революционный» токен.

Так появилось новое модное слово — токеномика. Уверен, если вы читаете эту статью, то как минимум уже встречали этот термин, а как максимум считаете, что неплохо в нём разбираетесь. Скорее всего, вам так только кажется. И это нормально: индустрия за годы существования успела накрутить вокруг токеномик такой слой терминологии, схем и модных концепций, что даже специалисты здесь часто путаются в показаниях.

Читать далее

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

11 полезных фичей Chrome DevTools часть 2

Время на прочтение5 мин
Охват и читатели11K

Всем привет!

Пока из каждого утюга рассказывают о различных ИИ-инструментах, агентах и прочих радостях упрощающих жизнь, я хочу рассказать о 11 незаслуженно потерянных фичах в недрах Chrome Devtools. Про фишки ИИ в DevTools рассказывать не вижу смысла, так как в нашем регионе они пока не работают.

Кстати, первая часть тут - тык.

Погнали!

Погнали!

Тестирование Frontend

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

В данной статье рассматриваются основные виды тестирования, включая юнит-тестирование, интеграционное тестирование и энд-ту-энд (E2E) тестирование, а также выявлены их преимущества, недостатки и ключевые особенности. Также уделяется внимание современным инструментам для разных видов тестирования, например, Jest, Cypress и Testing Library, которые предоставляют разработчикам мощные возможности для написания и выполнения тестов. Исследованы следующие подходы к тестированию: Test-Driven Development, Page Object и Continuous Integration. Выделены ключевые метрики, по которым можно определить эффективность тестирования.

Читать далее

Как работают современные браузеры. Часть 2

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели13K

Веб-разработчики нередко воспринимают браузер как «черный ящик», который каким-то чудом превращает HTML, CSS и JS в интерактивные веб-приложения. На самом деле современный браузер — будь то Chrome (на базе Chromium), Firefox (Gecko) или Safari (WebKit) — представляет собой чрезвычайно сложное программное решение. Он управляет сетевыми запросами, разбирает (парсит) и выполняет код, рендерит графику с ускорением на графическом процессоре (GPU) и изолирует контент в отдельных процессах для обеспечения безопасности.

В этой серии статей мы подробно рассмотрим, как устроены современные браузеры, сделав акцент на архитектуре и внутреннем устройстве Chromium, но также отметим ключевые отличия в других браузерах. Мы рассмотрим весь цикл: от сетевого стека и конвейера парсинга до рендеринга с помощью Blink, выполнения JS с помощью движка V8, загрузки модулей, многопроцессной архитектуры, песочниц безопасности и инструментов разработчика. Главная цель — дать понятное и доступное объяснение того, что происходит в браузере "под капотом".

Читать далее

Вебхук слева

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели8.1K

Рассказываю про одну простую, но эффективную реализацию вебхуков, не требующую тотальной переделки вашей замечательной системы и/или сетевой инфраструктуры.

~300 строк кода.

Читать далее

Логирование с Serilog: как повысить отказоустойчивость и скорость

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.2K

Когда логов становится слишком много, а сеть или облачный приёмник начинает тормозить, даже самый надёжный логгер может превратиться в источник проблем. Наша команда столкнулась с тем, что память забивалась логами, и это приводило к OutOfMemoryException и аварийному закрытию приложений.

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

Читать далее

Не просто WebView: Строим движок на Flutter для конвертации сайтов в приложения с Server-Driven UI

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

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

WebView-приложения — это боль. Тормоза, убогий UX, мгновенный реджект от Apple по пункту 4.2 («Minimum Functionality»). Обычно это просто браузер без адресной строки, за который стыдно брать деньги.

Я решил не делать очередную "обертку", а подойти к задаче инженерно. Моя цель: платформа, где WebView — лишь контентный слот, обернутый в полноценный нативный UI на Flutter.

В этой статье:

Читать далее

Как мы запустили кредитное приложение за 6 месяцев. Опыт

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

С нуля собрали кредитное PWA-приложение за 6 месяцев. Рассказываем, какие решения помогли быстро выйти на рынок и выдержать рост.

Читать далее

Вклад авторов