Обновить
337.39

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

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

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

Ликбез по стоковым лицензиям: как легально использовать картинки и избежать штрафов

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

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

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

Читать далее

Новости

Как использовать callback-функции в JavaScript

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

Привет, Хабр! Я — Александр Дудукало, автор одноименного YouTube-канала. В прошлой статье мы разобрали ссылочный тип данных, который хранит не само значение, а ссылку на него в памяти. Сегодня используем полученные знания на практике и познакомимся с одной из самых важных концепций в JavaScript — callback-функциями. Подробности — под катом!

Читать далее

Как пробить днище проекта техдолгом без смс и регистрации

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

Вот давайте начистоту. Открываешь ты такой таск, видишь кусок кода, написанный полгода назад, и твоя первая мысль - "Господи, какой идиот это писал?". Потом git blame показывает твое имя. Классика. Этот момент, когда ты встречаешься со своим техническим долгом лицом к лицу.

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

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

Читать далее

URL как контейнер состояния

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

Пару недель назад, когда я писал пост The Hidden Cost of URL Design, мне нужно было добавить подсветку синтаксиса SQL. Я направился на веб-сайт PrismJS, пытаясь вспомнить, можно ли добавить его в качестве плагина. Меня утомило количество вариантов на странице скачивания, поэтому я вернулся к своему коду. Поискав в файле PrismJS, я нашёл в его начале комментарий, содержащий URL:

/* https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+css-extras+markdown+scss+sql&plugins=line-highlight+line-numbers+autolinker */

Я совершенно забыл об этом. После нажатия на URL меня перенаправило на страницу скачивания PrismJS, где все чекбоксы, раскрывающиеся меню и опции были заранее выбраны и полностью соответствовали моей конфигурации. Подобраны темы. Настроены языки. Включены плагины. Всё идеально было воссоздано из этого единственного URL.

Это стало одним из тех моментов, когда ты внезапно снова осознаёшь важность чего-то. Передо мной был URL, не просто указывающий на страницу: он хранил состояние и позволял полностью воссоздать все мои настройки. Не нужна никакая база данных, никакие куки, никакое localStorage. Достаточно одного URL.

Я задумался: как часто мы, фронтенд-разработчики, забываем об URL как об инструменте управления состоянием? Мы пытаемся использовать для этого всевозможные абстракции: глобальные хранилища, контексты, кэши, забывая при этом одну из самых древних и изящных фич веба: скромный URL.

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

Читать далее

Топ 5 причин, когда JavaScript блокирует загрузку вашего сайта

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

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

Читать далее

Я нанял джуна в свой open source проект. Вот что получилось

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

Здравствуйте, товарищи! Сегодня у нас будет не техническая статья. Я расскажу об одном нестандартном кейсе из своей практики, суть которого отражена в заголовке.

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

Как обычно: все имена вымышлены, а совпадения случайны...

Ну давай, расскажи мне!

Мой подход к обучению. ИИ-ментор

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

Пока все учат ИИ, ИИ учит меня. Отбросив книжки, курсы и самодуров с YouTube, я нашёл более-менее продуктивный способ самообучения при помощи ИИ. Подробней об этом рассказываю в статье.

Читать далее

Разработали кастомный модуль Битрикс24, чтобы С-Маркетинг узнал реальный вклад каждого из 1300+ сотрудников

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

Решение на Битрикс24: как мы помогли С‑Маркетингу узнать реальный вклад каждого из 1300+ сотрудников

Цели в блокнотах, Excel и «в голове» превращают стратегию компании в пазл без картинки. Особенно, если речь идет о бизнесе, где больше тысячи сотрудников. Для С-Маркетинга мы собрали этот пазл в единое решение на Битрикс24: сделали постановку и оценку целей прозрачными, а премии и повышения — аргументированными.

Читать далее

Жизнь как коробка с печеньками: что скрывают cookie-баннеры

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

Вы точно их видели — и не один раз. Баннеры с cookie за последние годы стали обычным делом. Разберём, что такое cookie-баннер, как он работает и почему часто мешает пользователю. Если вы маркетолог или управляете сайтом и не понимаете, зачем на нём нужен баннер с cookie — эта статья всё объяснит. Детали под катом.

Читать далее

EAV Bundle

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

Искал реализацию EAV (Entity-Attribute-Value) паттерна на PHP или Symfony и не нашел. Типичная задача, но, на удивление, нет таких библиотек. Решил сделать свою [EAV bundle](https://github.com/maxkain/eav-bundle). Есть достаточно подробная документация...

Читать далее

URLPattern теперь доступен в Baseline

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

API URLPattern официально стал базовой возможностью и доступен во всех основных браузерах с сентября 2025 года. Однако он может не работать на старых устройствах или в старых браузерах. Узнать больше.

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

Читать далее

Безопасный доступ к внутренним сервисам: Keycloak, OAuth2 и немного Nginx‑магии

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

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

Изначально решение виделось простым — настроить Nginx и прописать правила маршрутизации. Ключевые трудности скрывались в деталях: тонкой настройке редиректов, работе с access token и интеграции с бэкенд-сервисами, потребовавших значительного внимания.

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

Читать далее

VS Code без боли: как я вернул фичи WebStorm для Angular-разработки

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

Решил мигрировать с WebStorm на VS Code, но обнаружил, что нет поддержки автоимпорта Angular-компонентов. В WebStorm это работало из коробки — начинаешь писать <app-, IDE сразу подсказывает компоненты и автоматически добавляет импорт. В VS Code такого не было.

На первый взгляд задача выглядела несложной — пару регулярок накидать и можно сделать своё решение.

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

Читать далее

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

SmileFace. Когда нейросеть улыбается тебе в ответ

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

SmileFace — игра, в которой нейросеть угадывает эмоции

Мы сделали интерактивный стенд: камера, смайлики и нейросеть, которая пытается распознать, что вы чувствуете. В статье — как это работает, с какими трудностями столкнулись и как запустить игру у себя.

Улыбнуться ИИ

Делаем самые лучшие фото для документов

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

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

Делали ли вы электронную визу в Индию? А, может, в Южную Корею? Или подавались на лотерею Green Card в США? Если да, то вы точно знаете, что для заявки на все эти документы надо прикрепить фотографию определённого размера с целым набором требований...

А такое ну просто необходимо автоматизировать!

И, как можно догадаться, сайтов для автоматизации фотографий на документы просто куча. Только вот есть одна проблема: все эти сайты хотят много денег - от 5 до 12 долларов за приведение фото к нужным требованиям.

Терпеть такое я, конечно же, не стал и написал своего бота в Телеграме, который делает это всё бесплатно.

Подробности под катом!

Читать далее

On-call ротация без выгорания

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

Я уволился из своей первой работы SRE‑инженером после особенно тяжелой недели дежурства. Семь ночей подряд я просыпался от PagerDuty. Семь ночей подряд я чинил одну и ту же проблему с памятью, которую никто не хотел исправлять «по‑настоящему», потому что «горячий фикс же работает». На восьмое утро я пришел в офис и положил заявление на стол.

Это было пять лет назад. С тех пор я прошел через четыре компании, построил on‑call процессы с нуля в двух из них, и научился главному: дежурства не должны убивать людей. Физически и морально. Давайте поговорим о том, как построить on‑call ротацию, которая не приведет к массовым увольнениям.

Читать далее

Делаем интерфейс дружелюбнее. Коллекция простых HTML/CSS лайфхаков

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

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

Красивый и интуитивно понятный интерфейс — это моя личная страсть. Я тратил дни, чтобы докрутить свои проекты до нужного мне уровня. В итоге я начал систематически собирать приёмы HTML и CSS, которые мгновенно улучшают восприятие пользователя.

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

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

Читать далее

Чужой среди своих: как аналитику войти в уже сработавшуюся команду

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

Привет! Меня зовут Инесса. Я — аналитик в компании fuse8. Предлагаю сегодня поговорить о том, как встроиться в уже сработавшуюся команду. По моему опыту, это всегда испытание. Почти как игра в русскую рулетку: не знаешь, как команда примет новичка и как быстро он подстроится под общий ритм. Новому человеку нужно время на адаптацию, обучение и погружение в процессы. И только потом можно по-настоящему оценить его вклад.

Читать далее

Как и зачем мы делали свое браузерное расширение для мокирования API

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

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

Что тут можно поделать? Можно подождать, пока починят стенд. Можно залезть в код и что-нибудь там нахардкодить, переполнив его ненужной логикой моков. Можно поставить Postman, Insomnia или другие популярные решения. Но у каждого подхода есть подводные камни: простои и сорванные дедлайны, забытые хардкоды в продакшене, необходимость согласований с инфобезом (особенно если вы работаете в банке) и зависимость от внешних серверов.

Мы попробовали существующие решения и поняли: ни одно из них не закрывает наши потребности полностью. Нужно было что-то свое: простое в установке, работающее офлайн, не требующее дополнительных приложений и аккаунтов. Что-то, что можно быстро настроить под себя и не зависеть от внешних решений вендора. Так появился наш велосипед — браузерное расширение Req-Saver. 

Да, представимся. Мы — Александр Битько и Дмитрий Панфилов, фронтенд-разработчики в ПСБ. Сегодня расскажем, как превратили мокирование запросов из головной боли в простую и понятную работу.

Читать далее

Закон Гудхарта: почему метрики врут, и как опыт из SEO поможет остальным айтишникам

Время на прочтение10 мин
Количество просмотров1.9K

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

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

«Сделал и забыл» — это не про сайты, не про SEO и не про цифровой маркетинг. В этой статье разберёмся, почему это не чья-то злая воля, а системная закономерность. И как, понимая её, выстраивать устойчивые процессы.

Читать далее
1
23 ...

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