Обновить
439.94

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

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

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

HTML: плохие стороны

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

Вероятно, вы слышали заявления типа «HTML и так по умолчанию обладает accessibility» или «Не нужно изобретать заново этот абсолютно идеальный элемент управления HTML». Я считаю, что это общие заявления, а не универсальные истины. Веб-разработчикам крайне важно осознавать недостатки платформы, поэтому я решил собрать несколько примеров того, когда у HTML возникают трудности как с точки зрения accessibility, так и usability.

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

Читать далее

Утечки памяти, которые не утечки

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

Что случилось? Авария, ужас-ужас

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течёт, сервисы падают с OOM каждый день, все пропало!

Да, картинка действительно удручающая. Всё время, когда есть нагрузка, память в контейнере прирастает и почти не очищается при снятии нагрузки. Все остальные метрики, которые мы собирали были в норме: event loop lag, использование CPU, active request, open handles. Прирастала только используемая память и незначительно увеличивалось время отклика сервиса.

Что-ж, выглядит как классическая утечка, надо искать источник.

Читать далее

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

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

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее

Как мы в Fix Price запустили PWA-приложение для Android

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

Привет, Хабр! Меня зовут Роман Хаджаев, я работаю над проектами Fix Price в качестве фронтенд-разработчика. Сегодня расскажу вам о том, как мы создали собственное веб-приложение и развернули его для запуска на Android. Да, речь идет о PWA-приложении, в которое мы упаковали наш сайт и добавили некоторые дополнительные функции. А в завершение дам полезную информацию начинающим разработчикам, которые только приступают к решению подобных задач.

Читать далее

HTML и CSS ошибки, влияющие на доступность. Мой опыт и моего незрячего знакомого Ильи. Часть 5

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

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


Сегодня мы рассмотрим следующие аспекты:

  • какое количество символов следует использовать для текста подсказки для атрибута alt;
  • в чём польза атрибута lang;
  • почему использование текстовых символов для декоративных задач — это плохая идея;
  • для чего существует режим повышенной контрастности.

Давайте начнём!

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

Капибара: открытый бета-тест

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

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

Проект прошел несколько этапов разработки, включая формирование функциональных требований, CJM, Список фичей, определение архитектуры, разработку и успешный альфа-тест, на котором были выявлены и устранены наиболее критичные проблемы. На данный момент "Капибара" входит в новый этап своего развития – открытый бета-тест. Этот этап является важной вехой на пути к полноценному запуску проекта. Открытие бета-теста дает возможность всем желающим присоединиться к сообществу, оценить ресурс и внести свой вклад в его развитие. Код проекта находится в открытом доступе, позволяя участникам вносить свои предложения и улучшения в качестве авторов, пользователей, тестировщиков и разработчиков.

История проекта

Проект "Капибара", как идея, был зарожден 24 июля 2023 года в ответ на объявление о ключевых изменениях на пикабу . Ответный пост прожил всего час перед удалением, но за это время собрал огромное количество комментариев поддержки и предложения помощи в создании нового портала. Сразу после объявления идеи был создан телеграмм-чат, в который за первые сутки пришло 3,5 тысячи человек, а через несколько дней число участников достигло 9 тысяч. Из этого числа была сформирована команда разработчиков. Основная концепция "Капибары" заключалась в создании портала с акцентом на честной саморегуляции контента пользователями, прозрачности алгоритмов и открытом исходном коде. Ввиду острой потребности авторов в площадке для публикации уникального контента, команда быстро создала телеграм-бота, который принимал посты пользователей и публиковал их в канале, где другие могли оценивать и комментировать их.

Читать далее

Fitter —  сшиватель API/Website's.  Большое обновление

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

Добрый вечер всем!

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

Итак, что появилось:

Читать далее

Бесплатные векторные карты на своём хостинге

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

Векторные карты Protomaps на базе OSM

Каждый веб-разработчик знает о OpenStreetMap (OSM), свободной альтернативе Google Maps. Несмотря на всеобщую известность OSM, у некоторых всё-таки возникают вопросы: как сделать веб-карту с открытыми данными OSM, как самостоятельно публиковать карты?

На эту тему есть популярные руководства, в том числе по работе с базами PostGIS и запуску тайлсерверов для реализации бесшовных карт OSM. Но есть принципиально иной подход — векторные карты Protomaps, которые обеспечивают более высокое разрешение, настройку внешнего вида и наложение произвольных меток. Они изначально предполагают максимальную простоту в создании своих карт. А главное, что разместить тайлы можно на своём хостинге или в облаке.
Читать дальше →

Синхронизация локальных изменений с kubernetes контейнером. Часть 2

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

В предыдущей статье показал вам как работают docker desktop watch, skaffold dev и tilt up, которые помогают синхронизировать локальные изменения в контейнер, что очень важно во время разработки.

На этот раз хочу показать DevSpace и Garden, эти инструменты очень похожи на Tilt, у них есть dashboard, как у Tilt, есть мгновенная синхронизация изменений и под катом вы увидите, как легко можно запустить проект в kubernetes и начать разрабатывать.

Читать далее

Event Loop. Мифы и реальность

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

В сети есть довольно большое количество публикаций про Event loop и как он работает. Новые статьи появляются на популярных ресурсах и по сей день, в том числе на Хабре. Однако, к сожалению, далеко не вся информация, представленная в этих материалах является проверенной или достоверной. В связи с чем, само понятие обросло рядом мифов и догадок. Порой, даже опытному разработчику требуется немало внимания и опыта, чтобы понять, где истина, а где, чистой воды, вымысел.

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

Читать далее

Переход с Vue-CLI и Webpack на Vite: ускоряем разработку Vue 3

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

Одним из новых инструментов в арсенале Vue 3 является Vite - быстрый и легковесный бандлер, который значительно упрощает процесс разработки и ускоряет сборку проекта. В этой статье мы рассмотрим, как перейти от стандартного подхода с использованием Vue-CLI и Webpack к более продвинутому и эффективному методу работы с помощью Vite.

Читать далее

Сочетание методов верификации и аутентификации через почту и SMS: добавит ли безопасности и нельзя ли проще?

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

Недавно в России вступил в силу закон, запрещающий использовать иностранные сервисы для авторизации на отечественных ресурсах. Привычные уже мессенджеры и системы SSO вроде Google/Apple ID в скором времени для аутентификации работать не будут. Что теперь — возвращаться на SMS и почту, или рынок предлагает альтернативные варианты решения?

Читать далее

Nginx: шпаргалка

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

Шпаргалка по основным секциям Nginx, которые следует держать под рукой. Ниже приведены самые частые функции: включение SSL, переадресация, раздача статики и т.д.

Читать далее

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

Визуализация алгоритмов поиска пути на Svelte: Практические заметки

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

Привет, Хабр! В этом посте делюсь опытом разработки на Svelte, демонстрируя это на моем пет-проекте.

Код проекта: GitHub
Лайв демо: ivan-sem.com

Читать далее

Сервис для блокировки ботов, домашняя бухгалтерия и онлайн-комиксы: 5 идей для pet-проектов

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

Чтобы чему-то научиться, нужно постоянно практиковать свои навыки. Например, применять их в создании pet-проектов. Но что делать, если желание есть, а вдохновения нет?

В этом материале собрали новую подборку интересных проектов сотрудников Selectel. Черпайте идеи и делитесь своим опытом в комментариях!
Читать дальше →

Tilda и чат-бот: пример интеграции

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

Привет, друзья! Сегодня мы поговорим о том, как  добиться эффективной обработки заказов, оформленных на сайте стандартного интернет-магазина на Tilda. Я на примере своего проекта (интернет-магазин карликовых кроликов) расскажу, почему менеджерам неудобно работать с заявками, которые приходят из Tilda напрямую, а также покажу, как можно подключить к обработке заказов чат-бота на примере сервиса ChatApp. Мы поговорим о принципе этой интеграции (то есть о механизме веб-хука) и о проверенных на практике сценариях использования бота. Статья будет полезна тем, у кого уже есть сайт на Tilda (или скоро будет), и кто хочет автоматизировать коммуникацию так, чтобы она была комфортна и заказчику, и менеджерам, и конечно, владельцу проекта.

Узнать, как конкретно...

Тестирование ПО как увлекательная игра

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

Привет, Хабр! Я Светлана Цой,  руководитель направления тестирования в Первой грузовой компании.

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

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

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

Читать далее

Как создать 100 серверов в облаке за минуту? Базовая работа с OpenStack клиентом

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

Для управления облачной инфраструктурой в индустрии накопилось достаточно много инструментов: terraform, pulumi, ansible, управление через SDK или напрямую через REST API.

При этом часто упускают из виду CLI инструменты в связке с shell-автоматизацией. А зря! Они помогают экономить время, которое тратится на ручное создание серверов или изучение сложных инструментов.
Читать дальше →

Профайлинг Laravel приложений с XDebug и PHPStorm

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

Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи. Везде трубят про удобную отладку PHP-приложений при помощи XDebug и PHPStorm, однако напрочь забывают про замеры времени операций, которые, порой, превышают те самые 3 секунды, которые пользователь будет ждать на странице. Если у Вас есть метод API, который долго работает, самое время его проверить профайлером XDebug, а PHPStorm поможет красиво визуализировать и изучить файл профиля.

Начнём профайлинг

Next.js App Router. Опыт использования. Путь в будущее или поворот не туда

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

Два года назад команда Next.js представила новый подход к роутингу, который должен был стать заменой так называемому Pages Router, вместе с тем добавив ряд принципиально нового функционала.

Практически в каждом релизе я находил множество полезного и нужного как для личных проектов, так и для коммерческих. Тем не менее, 13-ю версию я обошёл стороной для коммерческих проектов, так как функционал показывал себя крайне нестабильным и недостаточным. Однако, сейчас этот функционал перенесён в категорию стабильных, App Router считается основным, а Pages Router скорее поддерживаемым для обратной совместимости и постепенного перехода.

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

Читать далее

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