Обновить
454.27

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

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

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

Three.js с нуля на практике: как за несколько часов создать аркадную 3D-игру. Часть 1

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

Привет! На связи Кристина, фронтенд-разработчик в отделе рекламных спецпроектов KTS.

Наша команда создает визуально эффектные проекты, цель которых — привлечь внимание пользователей. Мы постоянно экспериментируем с разными технологиями и подходами, и вот, наконец, добрались до 3D-анимаций. Недавно я начала изучать Three.js и хочу поделиться своим опытом.

В сети есть множество статей и уроков по Three.js для начинающих, но большинство из них — это теоретический материал. Я же хочу показать, как создавать 3D-анимации на практике. Эта статья будет первой в цикле о разработке простой игры, в которой нужно строить башню из блоков.

Для успешного прохождения туториала достаточно владеть JavaScript и ООП. Каждый этап сопровождается ссылкой на codepen с комментариями в коде. А в конце вас ждет играбельный codepen-блок: вы можете сразу посмотреть на промежуточный результат, в котором уже реализована базовая игровая механика. В статье же я пошагово разберу, как к этому результату прийти.

Читать далее

7 хаков HTML: нестандартные решения в истории гипертекстовой разметки

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

Привет, Хабр! Сегодня мы решили вспомнить, как раньше веб-мастера обходили ограничения разметки. История веб-разработки полна креативных находок — технологии не всегда успевали за фантазией пользователей. На заре девяностых, чтобы выделиться на фоне конкурентов, веб-разработчики искали творческие решения. Собрали подборку из 7 популярных приемов и подходов, которые использовали веб-мастера, чтобы выйти за пределы ограничений HTML.

Читать далее

Бэкенд sCRUDge McDuck’а

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

Остросюжетная история о гонке за большими деньгами в IT. Как заработать в 3 раза больше денег на бэкендах?

Читать далее

У меня 4 фулл-тайм работы в разных странах, а я работаю по 7 часов в день

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

В 2023 году я получил оффер от четырех компаний: двух из США, одной из России и одной из Сингапура. В каждой работаю на удаленке, и в каждой уверены, что я работаю только у них.

Читать далее

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

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

Многие компании сталкиваются со сложностью эффективного распределения бюджета на медийные кампании: как измерить эффективность распределения бюджета? Как оценить влияние медийной рекламы на ключевые показатели бизнеса? Как снизить издержки на медийку?

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

Читать далее

Взгляд на JWT как на инструмент построения стройной архитектуры приложения

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

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

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

Читать далее

CSS Custom Functions уже на подходе…

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

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

Читать далее

Давайте писать удобное локальное окружение…

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

Всем привет, меня зовут Аббакумов Валерий.

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

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

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

Читать далее

Flutter: Создание расширения «Получение ссылок для онлайн-кинотеатров» для Chrome

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

Привет, я автора телеграм-канала FlutterPulse, хотел поделиться с пользователями хабра расширением для Google Chrome, а также способом его создания.

Расширение создано для получения ссылок для программы yt-dlp для последующего скачивания файлов локально. Пока поддерживается только сайт телеканала Пятница friday.ru

Для кого данная статья: Люди, которые не имеют отношения к программированию, но хотят скачать файл локально и самостоятельно

Люди, которые хотят самостоятельно написать расширение для браузера на языке Flutter

Читать далее

Попытка написать свою реализацию встроенных хуков состояния в React + создание простого стейт менеджера

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

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

Читать далее

CSS в 2025: какие фишки теперь доступны?

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


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


В начале января 2025 года мне захотелось посмотреть, какие новые фишки CSS стали поддерживаться современными браузерами за прошлый год. Провести некий срез, что уже можно использовать. И тут меня посетила мысль: «А почему бы не поделиться новинками на Хабре?». Вот я и пришёл.


Сразу скажу, что эта статья — краткий обзор появившимся возможностей. Моя цель — уведомить вас. Я не буду закапываться в принцип работы и другие нюансы. По этой причине, пожалуйста, воспринимайте эту статью как список, что можно изучить в 2025 году.


Для составления списка я использовал сайт «Can I Use». Брал те новшества, которые стали «зелёными» в 2024 году. Смотрел последние версии браузеров Chrome, FireFox, Opera, Edge, Safari, iOS Safari, Samsung Internet и Android Browser.


Не буду больше тянуть. Давайте посмотрим, что я вам подготовил.

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

Найди x: React + MobX + SSR + x = Счастье

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

С ростом приложения и увеличением количества зависимостей, мы осознали необходимость в централизованном управлении зависимостями, выходящем за рамки React и MobX. Существующие IoC-контейнеры показались избыточными и тяжеловесными. Поэтому было создано собственное решение. В статье вы узнаете, как мы решили уравнение :-)

Читать далее

Как команда DataGo! помогла крупному e-com проекту XCOM-SHOP связать маркетинговые доходы и расходы

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

В этом материале мы поделимся кейсом, как DataGo! помогли команде XCOM‑SHOP связать маркетинговые расходы с доходами для более точного определения целевых бизнес-метрик: LTV в связке с САС, CPO, ROMI, а также для оптимизации эффективности рекламных кампаний, определения более конверсионного источника трафика и для повышения эффективности работы команды. 

Читать далее

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

Drizzle ORM — современная типизированная ORM для реляционных БД в JS/TS

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

Удивился, что про столь популярный продукт не было статьи на Хабре, срочно это исправляю. Drizzle ORM — это #2 самая желаемая ORM по опросам, и она даже вошла в top 50 JavaScript Rising Stars 2024, заняв 27 место.

Читать далее

Как пустой S3 бакет может вас обанкротить

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

Представьте, что вы создали пустую, приватную корзину (их ещё называют «бакетами» — от «bucket») AWS S3 в выбранном вами регионе. Каким будет счёт за услуги AWS на следующее утро?

Несколько недель назад я начал работу над прототипом системы индексирования документов для моего клиента. Я создал одну корзину S3 в регионе eu-west-1 и загрузил туда несколько файлов для тестирования. Через два дня я проверил мою страницу выставления счетов AWS, заглянув туда, преимущественно, для того, чтобы проверить, что то, чем я занимаюсь, нормально укладывается в лимиты бесплатного тарифного плана. Но, судя по тому, что я там увидел, ни о какой нормальности речи не шло. Мой счёт превышал $1300, а в консоли выставления счетов были видны сто миллионов PUT-запросов к корзине S3, выполненных всего за один день!

Читать далее

Интеграция Vue.js в Битрикс24: Как разработать сложный фронтенд за два месяца

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

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

Читать далее

Backend-for-Frontend (BFF): решение проблемы взаимодействия фронтенда и бэкенда

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

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

Что такое Backend-for-Frontend (BFF)?

Backend-for-Frontend (BFF) — это архитектурный паттерн, который помогает устранить разрыв между фронтендом и бэкендом. BFF выступает промежуточным слоем, который адаптирует данные и логику бэкенда под нужды конкретного фронтенда. Это позволяет фронтенд-командам работать с API сразу, а бэкенд-разработчикам подключать логику по мере готовности, что значительно ускоряет процесс разработки и снижает количество доработок.

Читать далее

Почему именно в Chrome под Windows на сайтах не работают эмодзи флагов

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

Предположим, вы захотели приукрасить в UI своего сайта опцию выбора страны/языка симпатичными эмодзи флагов. Превосходно! Это создаст дополнительный визуальный ориентир, который поможет пользователям быстро находить нужную страну, да и в целом это просто красиво.

Более того, вы даже можете легко реализовать динамическое определение иконок на основе кода региона:

// Смещение для корректировки кода ASCII каждого символа в строке кода ISO страны для определения соответствующего флага.
const EMOJI_CHARACTER_OFFSET = 127397;

const getEmojiForCountryCode = (countryCode: string) =>
  String.fromCodePoint(
    ...countryCode
      .toUpperCase()
      .split('')
      .map((char) => char.charCodeAt(0) + EMOJI_CHARACTER_OFFSET),
  );

// "en-US"
const currentLanguageCode = navigator.language;
// "US"
const currentCountryCode = currentLanguageCode.split("-")[1];
// "🇺🇸"
getEmojiForCountryCode(currentCountryCode);
// "🇫🇷"
getEmojiForCountryCode("FR");
// "🇸🇪"
getEmojiForCountryCode("SE");

Всё идёт шикарно!

Как вдруг…
Читать дальше →

Ежегодный опрос PHP-сообщества: итоги 2024 года

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

2024 стал насыщенным годом для русскоязычного сообщества PHP-разработки. PHP Russia 2024, релизы PHP 8.4, Symfony 7.2 и Laravel 11.

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

Читать далее

Пока Apple саботирует развитие PWA, мы сделали демо с контактами, пуш-уведомлениями и биометрией

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

Хабр не раз выручал нашу команду, когда заказчик ставил задачу, которую мы никогда не делали. В недавнем кейсе по разработке демо-приложения PWA мы подсмотрели в статьях несколько полезных советов и тоже решили написать о своем опыте. Поговорим о PWA, развитие технологии и про то, кому это выгодно и не очень. Кстати, меня зовут Сергей Филатов и я веб-разработчик в R-Style Softlab. 

Читать далее

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