• Очередной гайд по HTML-элементам, которые можно использовать в каждом проекте

    • Tutorial
    В сети существует множество гайдов, которые описывают назначение HTML-элементов. Но сколько я не проводил собеседований или не проверял код, я вижу одну картину, разработчики используют ограниченный набор элементов. Поэтому я взял следующий набор элементов: header, nav, main, section, article, aside, address, и показал случаи, когда можно их использовать.
    Читать дальше →
    • +18
    • 9,5k
    • 6
  • 15 топовых веб скрапинг решений 2021 года

    За последнее десятилетие информация стала основным ресурсом для развития бизнеса, а Интернет является основным источником,  где 5 миллиардов пользователей ежесекундно генерируют новые данные. Извлекая и анализируя эти веб данные, компании разрабатывают свои бизнес-стратегии  и достигают поставленных целей. Однако собрать и извлечь такой большой объем данных непросто; особенно для тех, кто все еще думает, что кнопка «Экспорт в Excel» существует или ручная обработка данных - это единственное решение.

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

    Представляем вашему вниманию список топ 15 инструментов для парсинга 2021 года. 

    Читать далее
  • Максимально оптимизированная веб-загрузка изображений в 2021 году

    • Перевод
    • Tutorial

    В этой статье я расскажу про 8 методик оптимизации загрузки изображений, которые уменьшают необходимую пропускную способность сети и нагрузку на процессор при выводе на экран. Приведу примеры аннотированного HTML, чтобы вам было легче воспроизвести. Какие-то методики уже давно известны, а какие-то появились относительно недавно. В идеале, ваш любимый механизм публикации веб-документов (например, CMS, генератор статичных сайтов или фреймворк для веб-приложений) должен всё это реализовывать из коробки.
    Читать дальше →
  • Как мы просто сократили объем входящего в дата-центр трафика на 70%

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

      Единственное, о чем мы пожалели — что не применили это решение раньше.

      Читать далее
    • Вам показалось! Все о Perceived Performance

        Перед вами быстрый, удобный и отзывчивый сайт? Возможно, это не результат плодотворной работы множества людей, а всего лишь набор психологических и инженерных трюков, направленных на улучшение Perceived Performance.

        В большинстве случаев с ростом реальной производительности улучшается и Perceived Performance. А когда реальная производительность не может быть с легкостью увеличена, существует возможность поднять видимую. В своем докладе на Frontend Live 2020 бывший разработчик Avito Frontend Architecture Алексей Охрименко рассказал о приемах, которые улучшают ощущение скорости там, где ускорить уже нельзя.

        Читать далее
      • Свободно стилизируемый outline DOM элементов

        • Tutorial

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

        Я пришел к своему решению, которое изложено в этой статье.

        Читать далее
      • Практика использования спецификации CSS Scroll Snap

        • Перевод
        Часто ли у вас возникало желание воспользоваться какой-нибудь возможностью CSS, позволяющей, без лишних усилий, создать элемент-контейнер, поддерживающий прокрутку? CSS, что очень хорошо, даёт нам такую возможность. Я, когда только начинал заниматься фронтенд-разработкой, пользовался для создания прокручиваемых элементов JavaScript-плагинами. Но иногда нужно что-то такое, что позволяет создавать подобные элементы просто и быстро, без привлечения JavaScript. Сделать это можно, воспользовавшись спецификацией CSS Scroll Snap.



        Здесь я хочу раскрыть основы практического использования этой спецификации. Я сам только недавно разобрался с CSS Scroll Snap, поэтому рассказывать всё это буду, так сказать, «по горячим следам».
        Читать дальше →
        • +39
        • 10,8k
        • 6
      • Автоматическая виртуализация рендеринга произвольной вёрстки

          Здравствуйте, меня зовут Дмитрий Карловский и я.. прибыл к вам из недалёкого будущего. Недалёкого, потому что там уже всё и все тормозят. Писец подкрался к нам незаметно: сначала перестали расти мощности компьютеров, потом пропускная способность сетей. А пользователи… они продолжали генерировать контент как не в себя. В итоге, за считанные годы UX интерфейсов деградировал настолько, что ими стало невозможно пользоваться и многие пользователи поспешили перейти на облачный стриминг своих браузеров, которые работают на суперкомпьютерах, принадлежащих корпорациям, которые не дают людям устанавливать на них блокировщики рекламы. Поэтому я пришёл к вам именно сейчас, в этот момент, когда проблема уже заметна, но ещё можно всё исправить, пока не стало слишком поздно.

          Лонгрид
        • Скрапинг Avito без headless-браузера

          • Tutorial

          Недавно на хабре вышла статья Скрапинг современных веб-сайтов без headless-браузеров, и в комментариях было высказано мнение, что без headless-браузера не выйдет получить номер телефона из объявления на "авито" или "юле". Хочу это опровергнуть, ниже скрипт на python размером менее 100 строк кода, который успешно парсит "авито" успешно парсит "авито"!

          Читать далее
        • Как сократить время сборки образов Docker в GitLab CI

          • Перевод

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

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

          Читать далее
          • +11
          • 4,2k
          • 5
        • Скрапинг современных веб-сайтов без headless-браузеров

          • Перевод


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

          Для его демонстрации вместо Selenium, Puppeteer или любого другого решения на основе безголовых браузеров мы просто используем запросы на Python. Я объясню, как можно скрапить информацию из публичных API, которые потребляет на фронтэнде большинство современных веб-сайтов.

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

          Но существует и другой способ, которым можно довольно часто пользоваться.
          Читать дальше →
        • 10 современных раскладок в одну строку CSS-кода

          • Перевод

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

          Читать далее
        • Создание favicon для сайта 2020

          Что такое favicon и для чего он нужен?


          Favicon – это значок (иконка), который отображается во вкладке браузера, закладках, а также в сниппетах результатов поиска.

          image

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

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

          Какой формат использовать для favicon?


          Раньше в качестве основного формата использовали ICO. Особенность данного формата – мульти-размерность. Данный файл может хранить в себе несколько размеров иконки. На смену ICO пришел формат PNG. ICO все еще поддерживаемый, но большинство современных браузеров выбирают PNG формат иконки, который легче. Некоторые браузеры не могут выбрать правильный значок в файле ICO, что приводит к неправильному использования значка с низким разрешением.

          О каких платформах пойдет речь в этой статье?


          • Десктопные браузеры
          • Chrome на Android
          • Иконка закладки в iOS (PWA)
          • macOS
          • Windows

          Читать дальше →
        • Вы не знаете как должны работать модальные окна

            Уверен, многие хоть раз создавали всплывающее модальное окно. Но задумывались ли вы об определении этого компонента? Как он должен работать?


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


            Я покажу, как просто создавать сложные, удобные, производительные и доступные модальные окна независимо от браузера, платформы, устройства или способа взаимодействия пользователя.


            Этот список сформирован на основе спецификаций WAI-ARIA, HTML Living Standard и моего личного опыта. И хотя я буду говорить про веб, большинство правил и рекомендаций применимы для модальных окон где угодно.

            Читать дальше →
          • Ещё один велосипед: храним юникодные строки на 30-60% компактнее, чем UTF-8



              Если вы разработчик и перед вами стоит задача выбора кодировки, то почти всегда правильным решением будет Юникод. Конкретный способ представления зависит от контекста, но чаще всего тут тоже есть универсальный ответ — UTF-8. Он хорош тем, что позволяет использовать все символы Юникода, не тратя слишком много байт в большинстве случаев. Правда, для языков, использующих не только латиницу, «не слишком много» — это как минимум два байта на символ. Можно ли лучше, не возвращаясь к доисторическим кодировкам, ограничивающим нас всего 256 доступными символами?

              Ниже предлагаю ознакомиться с моей попыткой дать ответ на этот вопрос и реализацию относительно простого алгоритма, позволяющего хранить строчки на большинстве языков мира, не добавляя той избыточности, которая есть в UTF-8.
              Читать дальше →
            • Склеиваем несколько фотографий в одну длинную с помощью компьютерного зрения

                В предыдущих статьях был описан шеститочечный метод разворачивания этикеток и как мы тренировали нейронную сеть. В этой статье описано, как склеить фрагменты, сделанные из разных ракурсов, в одну длинную картинку.
                Читать дальше →
              • Как я html-парсер на php писал, и что из этого вышло. Заключительная часть

                Здравствуйте.

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

                Напишем свой поиск элементов, подробнее поговорим о поиске по классам и идентификаторам. И многое другое!
                Читать дальше →
              • Как разобрать URL в JavaScript?

                • Перевод


                Доброго времени суток, друзья!

                Представляю Вашему вниманию перевод заметки «How to Parse URL in JavaScript: hostname, pathname, query, hash» автора Dmitri Pavlutin.

                Унифицированный указатель ресурса или, сокращенно, URL — это ссылка на веб-ресурс (веб-страницу, изображение, файл). URL определяет местонахождения ресурса и способ его получения — протокол (http, ftp, mailto).

                Например, вот URL данной статьи:

                https://dmitripavlutin.com/parse-url-javascript
                

                Часто возникает необходимость получить определенные элементы URL. Это может быть название хоста (hostname, dmitripavlutin.com) или путь (pathname, /parse-url-javascript).

                Удобным способом получить отдельные компоненты URL является конструктор URL().

                В этой статье мы поговорим о структуре и основных компонентах URL.
                Читать дальше →
              • 11 примеров объявлений на поиске, за которые нужно пожать руку их авторам

                11 примеров объявлений на поиске, за которые нужно пожать руку их авторам

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


                Мы покопались в выдаче Google в разных тематиках и выбрали объявления, интересные с точки зрения текстов и применяемых механик. Объяснили, чем они примечательны, и как сделать так же (или лучше).


                В конце — 8 фейлов, мимо которых мы не смогли пройти.

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