• Делаем таблицу с бесконечной прокруткой без event listener

    • Translation

    Что ж оно так лагает-то?



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


    И что же делать?
  • Микрофреймворк slim

    • Tutorial

    25 апреля 2019 года свет увидела новая мажорная alpha-версия микрофреймворка Slim, а 18 мая она выросла до beta. Предлагаю по этому поводу ознакомиться с новой версией.


    Под катом:


    • О новшествах фреймворка
    • Написание простого приложения на Slim-4
    • О дружбе Slim и PhpStorm
    Читать дальше →
  • HTTP-заголовки для ответственного разработчика

    • Translation

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

    Разработчики соединяют людей.
    Разработчики помогают людям.
    Разработчики дают людям возможности.

    Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
    Читать дальше →
  • Ускоряем сборку веб-приложения с webpack

    По мере того как ваше приложение развивается и растёт, увеличивается и время его сборки — от нескольких минут при пересборке в development-режиме до десятков минут при «холодной» production-сборке. Это совершенно неприемлемо. Мы, разработчики, не любим переключать контекст в ожидании готовности бандла и хотим получать фидбек от приложения как можно раньше — в идеале за то время, пока переключаемся с IDE на браузер.


    Как этого достичь? Что мы можем сделать, чтобы оптимизировать время сборки?


    Эта статья — обзор существующих в экосистеме webpack инструментов для ускорения сборки, опыт их применения и советы.


    Оптимизации размера бандла и производительности самого приложения в этой статье не рассматриваются.

    Читать дальше →
  • Шпаргалки по безопасности: Docker



      Docker контейнеры — самая популярная технология для контейнеризации. Изначально она использовалась в основном для dev и test окружений, со временем перешла и в production. Docker контейнеры начали плодиться в production среде, как грибы после дождя, однако мало из тех, кто использует данную технологию, задумывался о том, как же безопасно публиковать Docker контейнеры.

      Основываясь на OWASP, мы подготовили список правил, выполнение которых позволит значительно обезопасить ваше окружение, построенное на Docker контейнерах.
      Читать дальше →
      • +29
      • 16.1k
      • 5
    • Пишем на Rust + CUDA C

      • Tutorial

      Всем привет!

      В данном руководстве хочу рассказать как подружить CUDA C/С++ и Rust. И в качестве примера напишем небольшую программу на Rust для вычисления скалярного произведения векторов, вычисление скалярного произведения будет производиться на GPU с использованием CUDA C.

      Кому интересно под кат!
      Читать дальше →
    • Приложение в строке меню для macOS

      • Translation
      • Tutorial
      Приложения, размещенные в строке меню, уже давно известны пользователям macOS. У некоторых из этих приложений есть «обычная» часть, другие размещены только в строке меню.
      В этом руководстве вы напишете приложение, которое показывает во всплывающем окне несколько цитат известных людей. В процессе создания этого приложения вы научитесь:

      • назначать иконку приложения в строке меню
      • делать приложение размещенным только в строке меню
      • добавлять пользовательское меню
      • показывать всплывающее по запросу пользователя окно и прятать его, когда необходимо, используя Event Monitoring

      Замечание: это руководство предполагает, что вы знакомы со Swift и macOS.
      Поехали!
      • +22
      • 4.2k
      • 1
    • Когда «Zoë» !== «Zoë», или почему нужно нормализовывать Unicode-строки

      • Translation
      • Tutorial
      Никогда не слышали о нормализации Unicode? Вы не одиноки. Но об этом надо знать всем. Нормализация способна избавить вас от множества проблем. Рано или поздно нечто подобное тому, что показано на следующем рисунке, случается с любым разработчиком.
      «Zoë» — это не «Zoë»
      Читать дальше →
    • Preload, prefetch и другие теги

      • Translation
      Есть много способов повышения веб-производительности. Один из них — предзагрузка контента, который понадобится позже. Префетчинг CSS, предварительный рендеринг полной страницы или резолвинг доменного имени. Делаем всё заранее, а потом мгновенно отображаем результат! Звучит круто.

      Ещё круче, что это очень просто реализовано. Пять тегов <link rel> дают браузеру команду на предварительные действия:

      <link rel="prefetch" href="/style.css" as="style" />
      <link rel="preload" href="/style.css" as="style" />
      
      <link rel="preconnect" href="https://example.com" />
      <link rel="dns-prefetch" href="https://example.com" />
      
      <link rel="prerender" href="https://example.com/about.html" />
      Читать дальше →
      • +33
      • 10k
      • 1
    • Готовим полнотекстовый поиск в Postgres. Часть 2

        В прошлой статье мы оптимизировали поиск в PostgreSQL стандартными средствами. В этой статье мы продолжим оптимизацию с помощью индекса RUM и проанализируем его плюсы и минусы в сравнении с GIN.

        Читать дальше →
        • +36
        • 3.9k
        • 3
      • AsyncIO Micropython: методы синхронизации в асинхронном программировании

        В последовательном программировании я постоянно сталкиваюсь с очевидным желанием не останавливать работу программы в момент, когда целью отдельных задач(процессов) является периодические действия — например, опрос значений датчиков, или передача данных по расписанию на сервер, или ввод/вывод большого объема данных. Самое простое, конечно, дождаться завершения периодического события и затем, не спеша, продолжить выполнять другие задачи.
        Читать дальше →
      • Реализация свободного перемещения частиц на ReactJS

        Приветствую! Хочу вам показать один из способов, как реализовать свободное перемещение частиц в указанном диапазоне. Для выполнения этой задачи я буду использовать ReactJS. Но сам алгоритм все равно будет общим, и вы можете его использовать где угодно.

        image
        Читать далее
        • +18
        • 4.8k
        • 6
      • Эффекты фильтрации SVG. Часть 5. Соответствие текста текстуре поверхности при помощи feDisplacementMap

        • Translation

        В очередной статье серии об SVG фильтрах Sara Soueidan покажет как сделать текст соответствующим текстуре поверхности с помощью примитива feDisplacementMap.



        Предлагаемая серия статей "Эффекты фильтрации SVG" Sara Soueidan, внештатного разработчика UI/UX интерфейса и автора многих технических статей, проживающей в Ливане, посвящена работе фильтров SVG и состоит из следующих статей:


        Эффекты фильтрации SVG


        1. Эффекты фильтрации SVG. Часть 1. SVG фильтры 101
        2. Эффекты фильтрации SVG. Часть 2. Контурный текст при помощи feMorphology
        3. Эффекты фильтрации SVG. Часть 3. Эффект постеризации изображения при помощи feComponentTransfer
        4. Эффекты фильтрации SVG. Часть 4. Двухцветные изображения при помощи feComponentTransfer.
        5. Эффекты фильтрации SVG. Часть 5. Соответствие текста текстуре поверхности при помощи feDisplacementMap
        Читать дальше →
      • Профессиональная контейнеризация Node.js-приложений с помощью Docker

        • Translation
        • Tutorial
        Автор материала, перевод которого мы публикуем сегодня, работает DevOps-инженером. Он говорит, что ему приходится пользоваться Docker. В частности, эта платформа для управления контейнерами применяется на разных этапах жизненного цикла Node.js-приложений. Использование Docker, технологии, которая, в последнее время, является чрезвычайно популярной, позволяет оптимизировать процесс разработки и вывода в продакшн Node.js-проектов.

        image

        Сейчас мы публикуем цикл статей о Docker, предназначенных для тех, кто хочет освоить эту платформу для её использования в самых разных ситуациях. Этот же материал сосредоточен, в основном, на профессиональном применении Docker в Node.js-разработке.
        Читать дальше →
      • Собираем бандл мечты с помощью Webpack

          JS-приложения, сайты и другие ресурсы становятся сложнее и инструменты сборки — это реальность веб-разработки. Бандлеры помогают упаковывать, компилировать и организовывать библиотеки. Один из мощных и гибких инструментов с открытым исходным кодом, который можно идеально настроить для сборки клиентского приложения — Webpack.

          Максим Соснов (crazymax11) — Frontend Lead в N1.RU внедрил Webpack в несколько больших проектов, на которых до этого была своя кастомная сборка, и контрибьютил с ним несколько проектов. Максим знает, как с Webpack собрать бандл мечты, сделать это быстро и конфигурировать так, чтобы конфиг оставался чистым, поддерживаемым и модульным.


          Расшифровка отличается от доклада — это сильно усовершенствованная пруфлинками версия. По всей расшифровке рассыпаны пасхалочки на статьи, плагины, минификаторы, опции, транспайлеры и пруфы слов докладчика, ссылки на которые просто не поставить в выступление. Если собрать все, то откроется бонусный уровень в Webpack :-)
          Читать дальше →
        • DNS прокси на Node.JS своими руками

          Понесло пакет по кочкам в дальний лес за DNS…
          Л. Каганов "Гамлет на дне"

          При разработке сетевого приложения иногда возникает необходимость запустить его локально, но обращаться к нему по реальному доменному имени. Стандартное проверенное решение — прописать домен в файле hosts. Минус подхода в том, что hosts требует чёткого соответствия доменных имён, т.е. не поддерживает звёздочки. Т.е. если есть домены вида:


          dom1.example.com,
          dom2.example.com,
          dom3.example.com,
          ................
          domN.example.com,

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


          *.example.com

          Решением проблемы может стать установка локального DNS-сервера, который будет обрабатывать запросы в соответствии с заданной логикой. Такие сервера есть, и вполне бесплатные, и с удобным графическим интерфейсом. Можно поставить и не заморачиваться. Но в этой статье описан другой путь — написание собственного велосипеда DNS-прокси, который будет слушать входящие DNS-запросы, и если запрашиваемое доменное имя есть в списке, вернёт заданный IP, а если нет — запросит вышестоящий DNS-сервер, и переправит полученный ответ без изменений запрашивающей программе.

          Читать дальше →
          • +22
          • 5.2k
          • 7
        • Руководство по Kubernetes, часть 1: приложения, микросервисы и контейнеры

          • Translation
          • Tutorial
          По нашей просьбе Хабр создал хаб Kubernetes и нам приятно разместить первую публикацию в нём. Подписывайтесь!

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


          Читать дальше →
        • Руководство по Kubernetes, часть 2: создание кластера и работа с ним

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


          Читать дальше →
          • +25
          • 14.5k
          • 4
        • Деплоим изоморфное веб-приложение на примере Nuxt.js


          В средних и больших проектах сайт не ограничивается одним сервисом  —  к примеру только сайтом, как правило существует база данных, API, сервер который маршрутизирует запросы ко всем этим сервисам. Выкатывать и обновлять все это без какой-либо стандартизации непросто, а масштабировать на множество серверов еще сложнее.
          Читать дальше →
          • +18
          • 6.9k
          • 6
        • Инициализация в С++ действительно безумна. Лучше начинать с Си

          • Translation
          Недавно мне напомнили, почему я считаю плохой идеей давать новичкам C++. Это плохая идея, потому что в C++ реальный бардак — хотя и красивый, но извращённый, трагический и удивительный бардак. Несмотря на нынешнее состояние сообщества, эта статья не направлена против современного C++. Скорее она частично продолжает статью Саймона Брэнда «Инициализация в C++ безумна», а частично — это послание каждому студенту, который хочет начать своё образование, глядя в бездну.

          Типичные возражения студентов, когда им говорят об изучении C:

          • «Кто-то его ещё использует?»
          • «Это глупо»
          • «Почему мы изучаем C?»
          • «Мы должны учить что-то лучшее, например, C++» (смех в зале)
          Читать дальше →